{"version":3,"file":"mb_plans_map.js","mappings":"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A,EAAGkvF,KAAc5yE,CACzC,GACF,E,oBCpBe,SAASszE,EAAkBH,EAAQhuF,GAChD,IAAI6tF,EAASG,GAGb,OAAOA,EAAOhuF,EAChB,CCJA,IAAIzC,EAAM,CAAC,CACTiM,KAAM,IACN4kF,QAAS,sCACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,KACN4kF,QAAS,OACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,KACN4kF,QAAS,MACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,IACN4kF,QAAS,aACR,CACD5kF,KAAM,IACN4kF,QAAS,gBACR,CACD5kF,KAAM,IACN4kF,QAAS,mBACR,CACD5kF,KAAM,KACN4kF,QAAS,MACR,CACD5kF,KAAM,KACN4kF,QAAS,MACR,CACD5kF,KAAM,IACN4kF,QAAS,kCACR,CACD5kF,KAAM,IACN4kF,QAAS,UACR,CACD5kF,KAAM,IACN4kF,QAAS,mBACR,CACD5kF,KAAM,IACN4kF,QAAS,kBACR,CACD5kF,KAAM,IACN4kF,QAAS,wBACR,CACD5kF,KAAM,IACN4kF,QAAS,SACR,CACD5kF,KAAM,IACN4kF,QAAS,kBACR,CACD5kF,KAAM,IACN4kF,QAAS,sBACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,IACN4kF,QAAS,YACR,CACD5kF,KAAM,IACN4kF,QAAS,oBACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,IACN4kF,QAAS,+CACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,KACN4kF,QAAS,MACR,CACD5kF,KAAM,KACN4kF,QAAS,MACR,CACD5kF,KAAM,IACN4kF,QAAS,cACR,CACD5kF,KAAM,IACN4kF,QAAS,UACR,CACD5kF,KAAM,IACN4kF,QAAS,qBACR,CACD5kF,KAAM,IACN4kF,QAAS,qBACR,CACD5kF,KAAM,IACN4kF,QAAS,mBACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,IACN4kF,QAAS,sCACR,CACD5kF,KAAM,IACN4kF,QAAS,YACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,IACN4kF,QAAS,cACR,CACD5kF,KAAM,IACN4kF,QAAS,SACR,CACD5kF,KAAM,IACN4kF,QAAS,mBACR,CACD5kF,KAAM,IACN4kF,QAAS,kBACR,CACD5kF,KAAM,IACN4kF,QAAS,uCACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,KACN4kF,QAAS,OACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,KACN4kF,QAAS,MACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,IACN4kF,QAAS,aACR,CACD5kF,KAAM,IACN4kF,QAAS,iBACR,CACD5kF,KAAM,IACN4kF,QAAS,kBACR,CACD5kF,KAAM,KACN4kF,QAAS,MACR,CACD5kF,KAAM,IACN4kF,QAAS,mCACR,CACD5kF,KAAM,IACN4kF,QAAS,UACR,CACD5kF,KAAM,IACN4kF,QAAS,mBACR,CACD5kF,KAAM,IACN4kF,QAAS,mBACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,IACN4kF,QAAS,wBACR,CACD5kF,KAAM,IACN4kF,QAAS,UACR,CACD5kF,KAAM,IACN4kF,QAAS,kBACR,CACD5kF,KAAM,IACN4kF,QAAS,uBACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,IACN4kF,QAAS,YACR,CACD5kF,KAAM,IACN4kF,QAAS,qBACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,IACN4kF,QAAS,+CACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,KACN4kF,QAAS,KACR,CACD5kF,KAAM,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","sources":["webpack://a4-meinberlin/./node_modules/adhocracy4/adhocracy4/maps_react/static/a4maps_react/MapPopup.jsx","webpack://a4-meinberlin/./node_modules/@turf/line-arc/dist/js/index.js","webpack://a4-meinberlin/./node_modules/object-keys/isArguments.js","webpack://a4-meinberlin/./node_modules/@turf/simplify/dist/js/index.js","webpack://a4-meinberlin/./node_modules/object-keys/index.js","webpack://a4-meinberlin/./meinberlin/react/contrib/ControlBarFilterPills.jsx","webpack://a4-meinberlin/./node_modules/density-clustering/lib/PriorityQueue.js","webpack://a4-meinberlin/./node_modules/@turf/sector/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/envelope/dist/js/index.js","webpack://a4-meinberlin/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://a4-meinberlin/./node_modules/react-router/dist/development/chunk-4N6VE7H7.mjs","webpack://a4-meinberlin/./node_modules/d3-voronoi/src/constant.js","webpack://a4-meinberlin/./node_modules/d3-voronoi/src/point.js","webpack://a4-meinberlin/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://a4-meinberlin/./node_modules/d3-voronoi/src/Edge.js","webpack://a4-meinberlin/./node_modules/d3-voronoi/src/Cell.js","webpack://a4-meinberlin/./node_modules/d3-voronoi/src/Circle.js","webpack://a4-meinberlin/./node_modules/d3-voronoi/src/Beach.js","webpack://a4-meinberlin/./node_modules/d3-voronoi/src/Diagram.js","webpack://a4-meinberlin/./node_modules/d3-voronoi/src/voronoi.js","webpack://a4-meinberlin/./node_modules/point-in-polygon/flat.js","webpack://a4-meinberlin/./node_modules/@turf/flatten/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/line-overlap/dist/js/index.js","webpack://a4-meinberlin/./node_modules/tinyqueue/index.js","webpack://a4-meinberlin/./node_modules/robust-predicates/esm/util.js","webpack://a4-meinberlin/./node_modules/robust-predicates/esm/orient2d.js","webpack://a4-meinberlin/./node_modules/robust-predicates/esm/orient3d.js","webpack://a4-meinberlin/./node_modules/robust-predicates/esm/incircle.js","webpack://a4-meinberlin/./node_modules/robust-predicates/esm/insphere.js","webpack://a4-meinberlin/./node_modules/concaveman/index.js","webpack://a4-meinberlin/./node_modules/geojson-rbush/index.js","webpack://a4-meinberlin/./node_modules/@turf/line-slice-along/dist/js/index.js","webpack://a4-meinberlin/./node_modules/deep-equal/index.js","webpack://a4-meinberlin/./node_modules/prop-types/index.js","webpack://a4-meinberlin/./node_modules/skmeans/dist/node/kinit.js","webpack://a4-meinberlin/./meinberlin/react/projects/ProjectsControlBar.jsx","webpack://a4-meinberlin/./node_modules/math-intrinsics/max.js","webpack://a4-meinberlin/./node_modules/gopd/gOPD.js","webpack://a4-meinberlin/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://a4-meinberlin/./node_modules/dunder-proto/get.js","webpack://a4-meinberlin/./node_modules/@turf/point-grid/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/hex-grid/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/planepoint/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/boolean-overlap/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/transform-translate/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/concave/dist/js/lib/turf-polygon-dissolve.js","webpack://a4-meinberlin/./node_modules/@turf/distance/dist/js/index.js","webpack://a4-meinberlin/./node_modules/object-is/polyfill.js","webpack://a4-meinberlin/./node_modules/warning/warning.js","webpack://a4-meinberlin/./node_modules/@turf/rhumb-distance/dist/js/index.js","webpack://a4-meinberlin/./node_modules/hasown/index.js","webpack://a4-meinberlin/./node_modules/call-bind-apply-helpers/functionCall.js","webpack://a4-meinberlin/./node_modules/call-bind/index.js","webpack://a4-meinberlin/./meinberlin/react/projects/ProjectsList.jsx","webpack://a4-meinberlin/./node_modules/call-bind-apply-helpers/functionApply.js","webpack://a4-meinberlin/./node_modules/@turf/rewind/dist/js/index.js","webpack://a4-meinberlin/./node_modules/call-bind-apply-helpers/applyBind.js","webpack://a4-meinberlin/./node_modules/@turf/line-chunk/dist/js/index.js","webpack://a4-meinberlin/./node_modules/call-bind-apply-helpers/actualApply.js","webpack://a4-meinberlin/./node_modules/@turf/bbox-polygon/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/boolean-contains/dist/js/index.js","webpack://a4-meinberlin/./meinberlin/react/projects/ProjectsMap.jsx","webpack://a4-meinberlin/./node_modules/is-regex/index.js","webpack://a4-meinberlin/./node_modules/react-router/dist/development/chunk-RJYABSBD.mjs","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/constants.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/getStringLabelKey.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/hasOwnProperty.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/nodash.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/getOptionLabel.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/addCustomOption.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/getOptionProperty.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/stripDiacritics.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/warn.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/defaultFilterBy.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/isSelectable.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/getDisplayName.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/getMatchBounds.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/getHintText.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/getMenuItemId.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/getInputProps.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/getInputText.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/getIsOnlyResult.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/getTruncatedOptions.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/getUpdatedActiveIndex.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/preventInputBlur.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/size.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/propsWithBsClassName.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/propTypes.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/behaviors/async.js","webpack://a4-meinberlin/./node_modules/@restart/hooks/esm/useForceUpdate.js","webpack://a4-meinberlin/./node_modules/@restart/hooks/esm/usePrevious.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/core/Context.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/core/TypeaheadManager.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/defaultSelectHint.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/core/TypeaheadState.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/core/Typeahead.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/validateSelectedPropChange.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/utils/isShown.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/ClearButton/ClearButton.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/Loader/Loader.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://a4-meinberlin/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/math.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/enums.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/createPopper.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/within.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/popper.js","webpack://a4-meinberlin/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://a4-meinberlin/./node_modules/react-popper/lib/esm/utils.js","webpack://a4-meinberlin/./node_modules/react-popper/lib/esm/usePopper.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/Overlay/useOverlay.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/Overlay/Overlay.js","webpack://a4-meinberlin/./node_modules/dom-helpers/esm/canUseDOM.js","webpack://a4-meinberlin/./node_modules/dom-helpers/esm/addEventListener.js","webpack://a4-meinberlin/./node_modules/dom-helpers/esm/removeEventListener.js","webpack://a4-meinberlin/./node_modules/dom-helpers/esm/listen.js","webpack://a4-meinberlin/./node_modules/@restart/hooks/esm/useCommittedRef.js","webpack://a4-meinberlin/./node_modules/@restart/hooks/esm/useEventCallback.js","webpack://a4-meinberlin/./node_modules/react-overlays/esm/ownerDocument.js","webpack://a4-meinberlin/./node_modules/dom-helpers/esm/ownerDocument.js","webpack://a4-meinberlin/./node_modules/react-overlays/esm/safeFindDOMNode.js","webpack://a4-meinberlin/./node_modules/react-overlays/esm/useRootClose.js","webpack://a4-meinberlin/./node_modules/dom-helpers/esm/contains.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/RootClose/useRootClose.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/RootClose/RootClose.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/behaviors/token.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/Token/Token.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/Hint/Hint.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/Input/Input.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/TypeaheadInputMulti/TypeaheadInputMulti.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/TypeaheadInputSingle/TypeaheadInputSingle.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/Highlighter/Highlighter.js","webpack://a4-meinberlin/./node_modules/compute-scroll-into-view/dist/index.js","webpack://a4-meinberlin/./node_modules/scroll-into-view-if-needed/dist/index.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/behaviors/item.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/MenuItem/MenuItem.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/Menu/Menu.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/TypeaheadMenu/TypeaheadMenu.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/Typeahead/Typeahead.js","webpack://a4-meinberlin/./node_modules/react-bootstrap-typeahead/es/components/AsyncTypeahead/AsyncTypeahead.js","webpack://a4-meinberlin/./node_modules/regexp.prototype.flags/polyfill.js","webpack://a4-meinberlin/./node_modules/@turf/clusters/dist/js/index.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/object.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/hash/hashmap.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/hash/point-equal.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/hash/point-hash.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/join.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/hash/hashset.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/cut.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/geometry.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/topology.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/bounds.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/prequantize.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/dedup.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/extract.js","webpack://a4-meinberlin/./node_modules/topojson-server/src/delta.js","webpack://a4-meinberlin/./node_modules/@turf/point-on-feature/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/boolean-clockwise/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/ellipse/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/distance-weight/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/nearest-point-on-line/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/area/dist/js/index.js","webpack://a4-meinberlin/./meinberlin/react/contrib/IconSwitch.jsx","webpack://a4-meinberlin/./node_modules/invariant/browser.js","webpack://a4-meinberlin/./node_modules/@turf/clean-coords/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/great-circle/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/line-intersect/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/line-split/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/bbox-clip/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/destination/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/angle/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/square-grid/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/polygon-to-line/dist/js/index.js","webpack://a4-meinberlin/./meinberlin/react/contrib/Spinner.jsx","webpack://a4-meinberlin/./node_modules/@turf/bbox-clip/dist/js/lib/lineclip.js","webpack://a4-meinberlin/./node_modules/@turf/polygonize/dist/js/lib/util.js","webpack://a4-meinberlin/./node_modules/@turf/polygon-tangents/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/points-within-polygon/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/polygon-smooth/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/dissolve/dist/js/index.js","webpack://a4-meinberlin/./meinberlin/react/projects/ProjectsListMapBox.jsx","webpack://a4-meinberlin/./node_modules/@turf/concave/dist/js/lib/turf-dissolve.js","webpack://a4-meinberlin/./node_modules/cookie/dist/index.js","webpack://a4-meinberlin/./node_modules/object-keys/implementation.js","webpack://a4-meinberlin/./node_modules/define-data-property/index.js","webpack://a4-meinberlin/./node_modules/react-fast-compare/index.js","webpack://a4-meinberlin/./meinberlin/react/projects/filter-projects.js","webpack://a4-meinberlin/./node_modules/@turf/concave/dist/js/index.js","webpack://a4-meinberlin/./node_modules/has-property-descriptors/index.js","webpack://a4-meinberlin/./node_modules/es-define-property/index.js","webpack://a4-meinberlin/./meinberlin/react/contrib/helpers.js","webpack://a4-meinberlin/./meinberlin/react/contrib/ImageWithPlaceholder.jsx","webpack://a4-meinberlin/./node_modules/@turf/projection/dist/js/index.js","webpack://a4-meinberlin/./node_modules/adhocracy4/adhocracy4/maps_react/static/a4maps_react/MarkerClusterLayer.js","webpack://a4-meinberlin/./node_modules/@turf/transform-scale/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/line-offset/dist/js/index.js","webpack://a4-meinberlin/./node_modules/fast-deep-equal/index.js","webpack://a4-meinberlin/./node_modules/density-clustering/lib/KMEANS.js","webpack://a4-meinberlin/./meinberlin/react/contrib/map/ItemPopup.jsx","webpack://a4-meinberlin/./meinberlin/react/projects/ProjectsMapInfo.jsx","webpack://a4-meinberlin/./node_modules/@turf/nearest-point-to-line/dist/js/index.js","webpack://a4-meinberlin/./node_modules/set-cookie-parser/lib/set-cookie.js","webpack://a4-meinberlin/./node_modules/es-errors/uri.js","webpack://a4-meinberlin/./node_modules/@turf/kinks/dist/js/index.js","webpack://a4-meinberlin/./meinberlin/react/plans/SaveSearchProfile.jsx","webpack://a4-meinberlin/./node_modules/density-clustering/lib/index.js","webpack://a4-meinberlin/./node_modules/call-bound/index.js","webpack://a4-meinberlin/./node_modules/object-is/shim.js","webpack://a4-meinberlin/./meinberlin/react/plans/react_plans_map.jsx","webpack://a4-meinberlin/./node_modules/@turf/rectangle-grid/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/rhumb-destination/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/buffer/dist/js/index.js","webpack://a4-meinberlin/./node_modules/object-is/index.js","webpack://a4-meinberlin/./node_modules/@turf/unkink-polygon/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/moran-index/dist/js/index.js","webpack://a4-meinberlin/./node_modules/define-properties/index.js","webpack://a4-meinberlin/./meinberlin/react/projects/ProjectMarker.jsx","webpack://a4-meinberlin/./node_modules/quickselect/index.js","webpack://a4-meinberlin/./node_modules/@turf/bezier-spline/dist/js/lib/spline.js","webpack://a4-meinberlin/./node_modules/leaflet.markercluster/dist/leaflet.markercluster-src.js","webpack://a4-meinberlin/./node_modules/@turf/shortest-path/dist/js/index.js","webpack://a4-meinberlin/./node_modules/es-errors/eval.js","webpack://a4-meinberlin/./node_modules/has-symbols/shams.js","webpack://a4-meinberlin/./node_modules/@turf/collect/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/union/dist/js/index.js","webpack://a4-meinberlin/./node_modules/set-function-name/index.js","webpack://a4-meinberlin/./node_modules/regexp.prototype.flags/shim.js","webpack://a4-meinberlin/./node_modules/@turf/bbox/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/centroid/dist/js/index.js","webpack://a4-meinberlin/./node_modules/object-assign/index.js","webpack://a4-meinberlin/./node_modules/@turf/circle/dist/js/index.js","webpack://a4-meinberlin/./meinberlin/react/contrib/forms/MultiSelect.jsx","webpack://a4-meinberlin/./node_modules/classnames/index.js","webpack://a4-meinberlin/./node_modules/call-bind-apply-helpers/reflectApply.js","webpack://a4-meinberlin/./node_modules/is-arguments/index.js","webpack://a4-meinberlin/./node_modules/@turf/mask/dist/js/index.js","webpack://a4-meinberlin/./meinberlin/react/contrib/TypeaheadField.jsx","webpack://a4-meinberlin/./node_modules/@turf/tag/dist/js/index.js","webpack://a4-meinberlin/./node_modules/get-proto/Reflect.getPrototypeOf.js","webpack://a4-meinberlin/./node_modules/@turf/polygonize/dist/js/lib/Graph.js","webpack://a4-meinberlin/./node_modules/has-tostringtag/shams.js","webpack://a4-meinberlin/./node_modules/@turf/triangle-grid/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/intersect/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/interpolate/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/polygonize/dist/js/lib/EdgeRing.js","webpack://a4-meinberlin/./node_modules/turf-jsts/jsts.min.js","webpack://a4-meinberlin/./node_modules/@turf/bearing/dist/js/index.js","webpack://a4-meinberlin/./node_modules/point-in-polygon/index.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/adder.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/math.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/noop.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/stream.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/area.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/cartesian.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/bounds.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/centroid.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/constant.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/compose.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/rotation.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/circle.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/clip/buffer.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/pointEqual.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/clip/polygon.js","webpack://a4-meinberlin/./node_modules/d3-array/src/ascending.js","webpack://a4-meinberlin/./node_modules/d3-array/src/bisector.js","webpack://a4-meinberlin/./node_modules/d3-array/src/bisect.js","webpack://a4-meinberlin/./node_modules/d3-array/src/array.js","webpack://a4-meinberlin/./node_modules/d3-array/src/ticks.js","webpack://a4-meinberlin/./node_modules/d3-array/src/merge.js","webpack://a4-meinberlin/./node_modules/d3-array/src/range.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/clip/extent.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/clip/line.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/polygonContains.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/length.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/distance.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/contains.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/graticule.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/interpolate.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/identity.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/path/area.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/path/bounds.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/path/centroid.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/path/context.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/path/measure.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/path/string.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/path/index.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/clip/index.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/transform.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/fit.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/resample.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/index.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/clip/circle.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/conic.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/albers.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/albersUsa.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/mercator.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/conicConformal.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/identity.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/orthographic.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/stereographic.js","webpack://a4-meinberlin/./node_modules/d3-geo/src/projection/transverseMercator.js","webpack://a4-meinberlin/./node_modules/react-router/dist/development/dom-export.mjs","webpack://a4-meinberlin/./node_modules/@turf/center-mean/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/tesselate/dist/js/index.js","webpack://a4-meinberlin/./node_modules/density-clustering/lib/DBSCAN.js","webpack://a4-meinberlin/./node_modules/@turf/polygonize/dist/js/lib/Edge.js","webpack://a4-meinberlin/./node_modules/@turf/clone/dist/js/index.js","webpack://a4-meinberlin/./meinberlin/react/projects/ProjectTile.jsx","webpack://a4-meinberlin/./node_modules/@turf/center-of-mass/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/truncate/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/polygonize/dist/js/index.js","webpack://a4-meinberlin/./node_modules/es-errors/syntax.js","webpack://a4-meinberlin/./node_modules/@turf/meta/dist/js/index.js","webpack://a4-meinberlin/./node_modules/math-intrinsics/floor.js","webpack://a4-meinberlin/./node_modules/polygon-clipping/dist/polygon-clipping.umd.js","webpack://a4-meinberlin/./meinberlin/react/contrib/Modal.jsx","webpack://a4-meinberlin/./meinberlin/react/projects/ProjectTopics.jsx","webpack://a4-meinberlin/./node_modules/point-in-polygon/nested.js","webpack://a4-meinberlin/./meinberlin/react/contrib/forms/GroupMultiSelect.jsx","webpack://a4-meinberlin/./node_modules/@turf/boolean-disjoint/dist/js/index.js","webpack://a4-meinberlin/./node_modules/skmeans/dist/node/main.js","webpack://a4-meinberlin/./node_modules/is-date-object/index.js","webpack://a4-meinberlin/./node_modules/@turf/square/dist/js/index.js","webpack://a4-meinberlin/./node_modules/has-symbols/index.js","webpack://a4-meinberlin/./meinberlin/react/contrib/Pill.jsx","webpack://a4-meinberlin/./meinberlin/react/projects/getDefaultState.js","webpack://a4-meinberlin/./node_modules/earcut/src/earcut.js","webpack://a4-meinberlin/./node_modules/@turf/center/dist/js/index.js","webpack://a4-meinberlin/./node_modules/function-bind/index.js","webpack://a4-meinberlin/./node_modules/@turf/line-slice/dist/js/index.js","webpack://a4-meinberlin/./node_modules/math-intrinsics/min.js","webpack://a4-meinberlin/./node_modules/@turf/clusters-dbscan/dist/js/index.js","webpack://a4-meinberlin/./meinberlin/react/contrib/map/Map.jsx","webpack://a4-meinberlin/./node_modules/@turf/boolean-intersects/dist/js/index.js","webpack://a4-meinberlin/./node_modules/es-errors/index.js","webpack://a4-meinberlin/./node_modules/es-errors/type.js","webpack://a4-meinberlin/./meinberlin/react/kiezradar/use-create-search-profile.js","webpack://a4-meinberlin/./node_modules/@turf/nearest-point/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/bezier-spline/dist/js/index.js","webpack://a4-meinberlin/./node_modules/math-intrinsics/round.js","webpack://a4-meinberlin/./node_modules/get-intrinsic/index.js","webpack://a4-meinberlin/./node_modules/get-proto/Object.getPrototypeOf.js","webpack://a4-meinberlin/./node_modules/@turf/isobands/dist/js/index.js","webpack://a4-meinberlin/./node_modules/math-intrinsics/abs.js","webpack://a4-meinberlin/./node_modules/regexp.prototype.flags/index.js","webpack://a4-meinberlin/./meinberlin/react/contrib/contexts/FetchItemsProvider.jsx","webpack://a4-meinberlin/./node_modules/rbush/index.js","webpack://a4-meinberlin/./node_modules/math-intrinsics/sign.js","webpack://a4-meinberlin/./node_modules/call-bind-apply-helpers/index.js","webpack://a4-meinberlin/./node_modules/functions-have-names/index.js","webpack://a4-meinberlin/./node_modules/@turf/difference/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/boolean-within/dist/js/index.js","webpack://a4-meinberlin/./node_modules/density-clustering/lib/OPTICS.js","webpack://a4-meinberlin/./node_modules/@turf/isolines/dist/js/index.js","webpack://a4-meinberlin/./node_modules/gopd/index.js","webpack://a4-meinberlin/./node_modules/math-intrinsics/pow.js","webpack://a4-meinberlin/./node_modules/@turf/center-median/dist/js/index.js","webpack://a4-meinberlin/./node_modules/regexp.prototype.flags/implementation.js","webpack://a4-meinberlin/./node_modules/@turf/invariant/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/line-to-polygon/dist/js/index.js","webpack://a4-meinberlin/./node_modules/es-errors/range.js","webpack://a4-meinberlin/./node_modules/@turf/flip/dist/js/index.js","webpack://a4-meinberlin/./node_modules/es-errors/ref.js","webpack://a4-meinberlin/./node_modules/es-object-atoms/index.js","webpack://a4-meinberlin/./node_modules/@turf/boolean-point-in-polygon/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/combine/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/point-to-line-distance/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/explode/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/turf/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/boolean-parallel/dist/js/index.js","webpack://a4-meinberlin/./meinberlin/react/projects/sort-projects.js","webpack://a4-meinberlin/./node_modules/@turf/standard-deviational-ellipse/dist/js/index.js","webpack://a4-meinberlin/./node_modules/react-router-dom/dist/index.js","webpack://a4-meinberlin/./node_modules/@turf/concave/dist/js/lib/turf-line-dissolve.js","webpack://a4-meinberlin/./node_modules/@turf/boolean-point-on-line/dist/js/index.js","webpack://a4-meinberlin/./node_modules/topojson-client/src/identity.js","webpack://a4-meinberlin/./node_modules/topojson-client/src/transform.js","webpack://a4-meinberlin/./node_modules/topojson-client/src/bbox.js","webpack://a4-meinberlin/./node_modules/topojson-client/src/feature.js","webpack://a4-meinberlin/./node_modules/topojson-client/src/reverse.js","webpack://a4-meinberlin/./node_modules/topojson-client/src/stitch.js","webpack://a4-meinberlin/./node_modules/topojson-client/src/mesh.js","webpack://a4-meinberlin/./node_modules/topojson-client/src/merge.js","webpack://a4-meinberlin/./node_modules/topojson-client/src/bisect.js","webpack://a4-meinberlin/./node_modules/topojson-client/src/neighbors.js","webpack://a4-meinberlin/./node_modules/topojson-client/src/untransform.js","webpack://a4-meinberlin/./node_modules/topojson-client/src/quantize.js","webpack://a4-meinberlin/./node_modules/@turf/clusters-kmeans/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/transform-rotate/dist/js/index.js","webpack://a4-meinberlin/./node_modules/geojson-equality/index.js","webpack://a4-meinberlin/./node_modules/@turf/midpoint/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/length/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/helpers/dist/js/index.js","webpack://a4-meinberlin/./meinberlin/react/projects/get-timespan.js","webpack://a4-meinberlin/./node_modules/object-is/implementation.js","webpack://a4-meinberlin/./node_modules/function-bind/implementation.js","webpack://a4-meinberlin/./node_modules/@turf/along/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/convex/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/voronoi/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/tin/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/rhumb-bearing/dist/js/index.js","webpack://a4-meinberlin/./node_modules/get-proto/index.js","webpack://a4-meinberlin/./node_modules/math-intrinsics/isNaN.js","webpack://a4-meinberlin/./node_modules/@turf/random/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/polygonize/dist/js/lib/Node.js","webpack://a4-meinberlin/./node_modules/skmeans/dist/node/distance.js","webpack://a4-meinberlin/./node_modules/set-function-length/index.js","webpack://a4-meinberlin/./node_modules/@turf/line-segment/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/boolean-equal/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/boolean-crosses/dist/js/index.js","webpack://a4-meinberlin/./node_modules/@turf/sample/dist/js/index.js","webpack://a4-meinberlin/./meinberlin/react/contrib/ToggleSwitch.jsx"],"sourcesContent":["import React from 'react'\nimport { Popup } from 'react-leaflet'\n\nexport const MapPopup = ({ feature, className, children, ...rest }) => {\n  const _className = 'maps-popups ' + (className ?? '')\n  return (\n    <Popup {...rest} className={_className} closeButton={false}>\n      <div\n        style={{ backgroundImage: 'url(' + feature.properties.image + ')' }}\n        className={'maps-popups-popup-image' + (feature.properties.image ? '' : ' maps-popups-popup-no-image')}\n      />\n      <div className=\"maps-popups-popup-text-content\">\n        {children}\n      </div>\n    </Popup>\n  )\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar circle_1 = __importDefault(require(\"@turf/circle\"));\nvar destination_1 = __importDefault(require(\"@turf/destination\"));\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Creates a circular arc, of a circle of the given radius and center point, between bearing1 and bearing2;\n * 0 bearing is North of center point, positive clockwise.\n *\n * @name lineArc\n * @param {Coord} center center point\n * @param {number} radius radius of the circle\n * @param {number} bearing1 angle, in decimal degrees, of the first radius of the arc\n * @param {number} bearing2 angle, in decimal degrees, of the second radius of the arc\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.steps=64] number of steps\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @returns {Feature<LineString>} line arc\n * @example\n * var center = turf.point([-75, 40]);\n * var radius = 5;\n * var bearing1 = 25;\n * var bearing2 = 47;\n *\n * var arc = turf.lineArc(center, radius, bearing1, bearing2);\n *\n * //addToMap\n * var addToMap = [center, arc]\n */\nfunction lineArc(center, radius, bearing1, bearing2, options) {\n    if (options === void 0) { options = {}; }\n    // default params\n    var steps = options.steps || 64;\n    var angle1 = convertAngleTo360(bearing1);\n    var angle2 = convertAngleTo360(bearing2);\n    var properties = !Array.isArray(center) && center.type === \"Feature\"\n        ? center.properties\n        : {};\n    // handle angle parameters\n    if (angle1 === angle2) {\n        return helpers_1.lineString(circle_1.default(center, radius, options).geometry.coordinates[0], properties);\n    }\n    var arcStartDegree = angle1;\n    var arcEndDegree = angle1 < angle2 ? angle2 : angle2 + 360;\n    var alfa = arcStartDegree;\n    var coordinates = [];\n    var i = 0;\n    while (alfa < arcEndDegree) {\n        coordinates.push(destination_1.default(center, radius, alfa, options).geometry.coordinates);\n        i++;\n        alfa = arcStartDegree + (i * 360) / steps;\n    }\n    if (alfa > arcEndDegree) {\n        coordinates.push(destination_1.default(center, radius, arcEndDegree, options).geometry.coordinates);\n    }\n    return helpers_1.lineString(coordinates, properties);\n}\nexports.default = lineArc;\n/**\n * Takes any angle in  degrees\n * and returns a valid angle between 0-360 degrees\n *\n * @private\n * @param {number} alfa angle between -180-180 degrees\n * @returns {number} angle between 0-360 degrees\n */\nfunction convertAngleTo360(alfa) {\n    var beta = alfa % 360;\n    if (beta < 0) {\n        beta += 360;\n    }\n    return beta;\n}\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar cleanCoords = require('@turf/clean-coords');\nvar clone = require('@turf/clone');\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar cleanCoords__default = /*#__PURE__*/_interopDefaultLegacy(cleanCoords);\nvar clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);\n\n/*\n (c) 2013, Vladimir Agafonkin\n Simplify.js, a high-performance JS polyline simplification library\n mourner.github.io/simplify-js\n*/\n\n// to suit your point format, run search/replace for '.x' and '.y';\n// for 3D version, see 3d branch (configurability would draw significant performance overhead)\n\n// square distance between 2 points\nfunction getSqDist(p1, p2) {\n  var dx = p1.x - p2.x,\n    dy = p1.y - p2.y;\n\n  return dx * dx + dy * dy;\n}\n\n// square distance from a point to a segment\nfunction getSqSegDist(p, p1, p2) {\n  var x = p1.x,\n    y = p1.y,\n    dx = p2.x - x,\n    dy = p2.y - y;\n\n  if (dx !== 0 || dy !== 0) {\n    var t = ((p.x - x) * dx + (p.y - y) * dy) / (dx * dx + dy * dy);\n\n    if (t > 1) {\n      x = p2.x;\n      y = p2.y;\n    } else if (t > 0) {\n      x += dx * t;\n      y += dy * t;\n    }\n  }\n\n  dx = p.x - x;\n  dy = p.y - y;\n\n  return dx * dx + dy * dy;\n}\n// rest of the code doesn't care about point format\n\n// basic distance-based simplification\nfunction simplifyRadialDist(points, sqTolerance) {\n  var prevPoint = points[0],\n    newPoints = [prevPoint],\n    point;\n\n  for (var i = 1, len = points.length; i < len; i++) {\n    point = points[i];\n\n    if (getSqDist(point, prevPoint) > sqTolerance) {\n      newPoints.push(point);\n      prevPoint = point;\n    }\n  }\n\n  if (prevPoint !== point) newPoints.push(point);\n\n  return newPoints;\n}\n\nfunction simplifyDPStep(points, first, last, sqTolerance, simplified) {\n  var maxSqDist = sqTolerance,\n    index;\n\n  for (var i = first + 1; i < last; i++) {\n    var sqDist = getSqSegDist(points[i], points[first], points[last]);\n\n    if (sqDist > maxSqDist) {\n      index = i;\n      maxSqDist = sqDist;\n    }\n  }\n\n  if (maxSqDist > sqTolerance) {\n    if (index - first > 1)\n      simplifyDPStep(points, first, index, sqTolerance, simplified);\n    simplified.push(points[index]);\n    if (last - index > 1)\n      simplifyDPStep(points, index, last, sqTolerance, simplified);\n  }\n}\n\n// simplification using Ramer-Douglas-Peucker algorithm\nfunction simplifyDouglasPeucker(points, sqTolerance) {\n  var last = points.length - 1;\n\n  var simplified = [points[0]];\n  simplifyDPStep(points, 0, last, sqTolerance, simplified);\n  simplified.push(points[last]);\n\n  return simplified;\n}\n\n// both algorithms combined for awesome performance\nfunction simplify(points, tolerance, highestQuality) {\n  if (points.length <= 2) return points;\n\n  var sqTolerance = tolerance !== undefined ? tolerance * tolerance : 1;\n\n  points = highestQuality ? points : simplifyRadialDist(points, sqTolerance);\n  points = simplifyDouglasPeucker(points, sqTolerance);\n\n  return points;\n}\n\n/**\n * Takes a {@link GeoJSON} object and returns a simplified version. Internally uses\n * [simplify-js](http://mourner.github.io/simplify-js/) to perform simplification using the Ramer-Douglas-Peucker algorithm.\n *\n * @name simplify\n * @param {GeoJSON} geojson object to be simplified\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.tolerance=1] simplification tolerance\n * @param {boolean} [options.highQuality=false] whether or not to spend more time to create a higher-quality simplification with a different algorithm\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} a simplified GeoJSON\n * @example\n * var geojson = turf.polygon([[\n *   [-70.603637, -33.399918],\n *   [-70.614624, -33.395332],\n *   [-70.639343, -33.392466],\n *   [-70.659942, -33.394759],\n *   [-70.683975, -33.404504],\n *   [-70.697021, -33.419406],\n *   [-70.701141, -33.434306],\n *   [-70.700454, -33.446339],\n *   [-70.694274, -33.458369],\n *   [-70.682601, -33.465816],\n *   [-70.668869, -33.472117],\n *   [-70.646209, -33.473835],\n *   [-70.624923, -33.472117],\n *   [-70.609817, -33.468107],\n *   [-70.595397, -33.458369],\n *   [-70.587158, -33.442901],\n *   [-70.587158, -33.426283],\n *   [-70.590591, -33.414248],\n *   [-70.594711, -33.406224],\n *   [-70.603637, -33.399918]\n * ]]);\n * var options = {tolerance: 0.01, highQuality: false};\n * var simplified = turf.simplify(geojson, options);\n *\n * //addToMap\n * var addToMap = [geojson, simplified]\n */\nfunction simplify$1(geojson, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var tolerance = options.tolerance !== undefined ? options.tolerance : 1;\n  var highQuality = options.highQuality || false;\n  var mutate = options.mutate || false;\n\n  if (!geojson) throw new Error(\"geojson is required\");\n  if (tolerance && tolerance < 0) throw new Error(\"invalid tolerance\");\n\n  // Clone geojson to avoid side effects\n  if (mutate !== true) geojson = clone__default['default'](geojson);\n\n  meta.geomEach(geojson, function (geom) {\n    simplifyGeom(geom, tolerance, highQuality);\n  });\n  return geojson;\n}\n\n/**\n * Simplifies a feature's coordinates\n *\n * @private\n * @param {Geometry} geometry to be simplified\n * @param {number} [tolerance=1] simplification tolerance\n * @param {boolean} [highQuality=false] whether or not to spend more time to create a higher-quality simplification with a different algorithm\n * @returns {Geometry} output\n */\nfunction simplifyGeom(geometry, tolerance, highQuality) {\n  var type = geometry.type;\n\n  // \"unsimplyfiable\" geometry types\n  if (type === \"Point\" || type === \"MultiPoint\") return geometry;\n\n  // Remove any extra coordinates\n  cleanCoords__default['default'](geometry, true);\n\n  var coordinates = geometry.coordinates;\n  switch (type) {\n    case \"LineString\":\n      geometry[\"coordinates\"] = simplifyLine(\n        coordinates,\n        tolerance,\n        highQuality\n      );\n      break;\n    case \"MultiLineString\":\n      geometry[\"coordinates\"] = coordinates.map(function (lines) {\n        return simplifyLine(lines, tolerance, highQuality);\n      });\n      break;\n    case \"Polygon\":\n      geometry[\"coordinates\"] = simplifyPolygon(\n        coordinates,\n        tolerance,\n        highQuality\n      );\n      break;\n    case \"MultiPolygon\":\n      geometry[\"coordinates\"] = coordinates.map(function (rings) {\n        return simplifyPolygon(rings, tolerance, highQuality);\n      });\n  }\n  return geometry;\n}\n\n/**\n * Simplifies the coordinates of a LineString with simplify-js\n *\n * @private\n * @param {Array<number>} coordinates to be processed\n * @param {number} tolerance simplification tolerance\n * @param {boolean} highQuality whether or not to spend more time to create a higher-quality\n * @returns {Array<Array<number>>} simplified coords\n */\nfunction simplifyLine(coordinates, tolerance, highQuality) {\n  return simplify(\n    coordinates.map(function (coord) {\n      return { x: coord[0], y: coord[1], z: coord[2] };\n    }),\n    tolerance,\n    highQuality\n  ).map(function (coords) {\n    return coords.z ? [coords.x, coords.y, coords.z] : [coords.x, coords.y];\n  });\n}\n\n/**\n * Simplifies the coordinates of a Polygon with simplify-js\n *\n * @private\n * @param {Array<number>} coordinates to be processed\n * @param {number} tolerance simplification tolerance\n * @param {boolean} highQuality whether or not to spend more time to create a higher-quality\n * @returns {Array<Array<Array<number>>>} simplified coords\n */\nfunction simplifyPolygon(coordinates, tolerance, highQuality) {\n  return coordinates.map(function (ring) {\n    var pts = ring.map(function (coord) {\n      return { x: coord[0], y: coord[1] };\n    });\n    if (pts.length < 4) {\n      throw new Error(\"invalid polygon\");\n    }\n    var simpleRing = simplify(pts, tolerance, highQuality).map(function (\n      coords\n    ) {\n      return [coords.x, coords.y];\n    });\n    //remove 1 percent of tolerance until enough points to make a triangle\n    while (!checkValidity(simpleRing)) {\n      tolerance -= tolerance * 0.01;\n      simpleRing = simplify(pts, tolerance, highQuality).map(function (\n        coords\n      ) {\n        return [coords.x, coords.y];\n      });\n    }\n    if (\n      simpleRing[simpleRing.length - 1][0] !== simpleRing[0][0] ||\n      simpleRing[simpleRing.length - 1][1] !== simpleRing[0][1]\n    ) {\n      simpleRing.push(simpleRing[0]);\n    }\n    return simpleRing;\n  });\n}\n\n/**\n * Returns true if ring has at least 3 coordinates and its first coordinate is the same as its last\n *\n * @private\n * @param {Array<number>} ring coordinates to be checked\n * @returns {boolean} true if valid\n */\nfunction checkValidity(ring) {\n  if (ring.length < 3) return false;\n  //if the last point is the same as the first, it's not a triangle\n  return !(\n    ring.length === 3 &&\n    ring[2][0] === ring[0][0] &&\n    ring[2][1] === ring[0][1]\n  );\n}\n\nmodule.exports = simplify$1;\nmodule.exports.default = simplify$1;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","import React from 'react'\nimport django from 'django'\nimport { Pill } from './Pill'\n\nconst translated = { filterRemove: django.gettext('Remove filter %s') }\n\nconst getFilterRemoveText = (label) => {\n  return django.interpolate(translated.filterRemove, [label])\n}\n\nexport const ControlBarFilterPills = ({ filters: _filters, onRemove }) => {\n  const filters = _filters.filter(f => f.value !== null && f.value !== false && f.value !== '')\n  if (!filters.length) {\n    return null\n  }\n\n  return (\n    <ul className=\"pill__list\">\n      {\n        filters.map((filter) => {\n          const label = filter.label || filter.choices.find(choice => choice[0] === filter.value)[1]\n          return (\n            <Pill\n              key={'pill_' + filter.type + filter.value}\n              pillClass=\"pill\"\n            >\n              {label}\n              <button\n                onClick={() => onRemove(filter.type, filter.value)}\n                className=\"pill__close\"\n                title={getFilterRemoveText(label)}\n              >\n                <span className=\"fa fa-times\" aria-label={getFilterRemoveText(label)} />\n              </button>\n            </Pill>\n          )\n        })\n      }\n    </ul>\n  )\n}\n","/**\r\n * PriorityQueue\r\n * Elements in this queue are sorted according to their value\r\n *\r\n * @author Lukasz Krawczyk <contact@lukaszkrawczyk.eu>\r\n * @copyright MIT\r\n */\r\n\r\n/**\r\n * PriorityQueue class construcotr\r\n * @constructor\r\n *\r\n * @example\r\n * queue: [1,2,3,4]\r\n * priorities: [4,1,2,3]\r\n * > result = [1,4,2,3]\r\n *\r\n * @param {Array} elements\r\n * @param {Array} priorities\r\n * @param {string} sorting - asc / desc\r\n * @returns {PriorityQueue}\r\n */\r\nfunction PriorityQueue(elements, priorities, sorting) {\r\n  /** @type {Array} */\r\n  this._queue = [];\r\n  /** @type {Array} */\r\n  this._priorities = [];\r\n  /** @type {string} */\r\n  this._sorting = 'desc';\r\n\r\n  this._init(elements, priorities, sorting);\r\n};\r\n\r\n/**\r\n * Insert element\r\n *\r\n * @param {Object} ele\r\n * @param {Object} priority\r\n * @returns {undefined}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.insert = function(ele, priority) {\r\n  var indexToInsert = this._queue.length;\r\n  var index = indexToInsert;\r\n\r\n  while (index--) {\r\n    var priority2 = this._priorities[index];\r\n    if (this._sorting === 'desc') {\r\n      if (priority > priority2) {\r\n        indexToInsert = index;\r\n      }\r\n    } else {\r\n      if (priority < priority2) {\r\n        indexToInsert = index;\r\n      }\r\n    }\r\n  }\r\n\r\n  this._insertAt(ele, priority, indexToInsert);\r\n};\r\n\r\n/**\r\n * Remove element\r\n *\r\n * @param {Object} ele\r\n * @returns {undefined}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.remove = function(ele) {\r\n  var index = this._queue.length;\r\n\r\n  while (index--) {\r\n    var ele2 = this._queue[index];\r\n    if (ele === ele2) {\r\n      this._queue.splice(index, 1);\r\n      this._priorities.splice(index, 1);\r\n      break;\r\n    }\r\n  }\r\n};\r\n\r\n/**\r\n * For each loop wrapper\r\n *\r\n * @param {function} func\r\n * @returs {undefined}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.forEach = function(func) {\r\n  this._queue.forEach(func);\r\n};\r\n\r\n/**\r\n * @returns {Array}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.getElements = function() {\r\n  return this._queue;\r\n};\r\n\r\n/**\r\n * @param {number} index\r\n * @returns {Object}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.getElementPriority = function(index) {\r\n  return this._priorities[index];\r\n};\r\n\r\n/**\r\n * @returns {Array}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.getPriorities = function() {\r\n  return this._priorities;\r\n};\r\n\r\n/**\r\n * @returns {Array}\r\n * @access public\r\n */\r\nPriorityQueue.prototype.getElementsWithPriorities = function() {\r\n  var result = [];\r\n\r\n  for (var i = 0, l = this._queue.length; i < l; i++) {\r\n    result.push([this._queue[i], this._priorities[i]]);\r\n  }\r\n\r\n  return result;\r\n};\r\n\r\n/**\r\n * Set object properties\r\n *\r\n * @param {Array} elements\r\n * @param {Array} priorities\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nPriorityQueue.prototype._init = function(elements, priorities, sorting) {\r\n\r\n  if (elements && priorities) {\r\n    this._queue = [];\r\n    this._priorities = [];\r\n\r\n    if (elements.length !== priorities.length) {\r\n      throw new Error('Arrays must have the same length');\r\n    }\r\n\r\n    for (var i = 0; i < elements.length; i++) {\r\n      this.insert(elements[i], priorities[i]);\r\n    }\r\n  }\r\n\r\n  if (sorting) {\r\n    this._sorting = sorting;\r\n  }\r\n};\r\n\r\n/**\r\n * Insert element at given position\r\n *\r\n * @param {Object} ele\r\n * @param {number} index\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nPriorityQueue.prototype._insertAt = function(ele, priority, index) {\r\n  if (this._queue.length === index) {\r\n    this._queue.push(ele);\r\n    this._priorities.push(priority);\r\n  } else {\r\n    this._queue.splice(index, 0, ele);\r\n    this._priorities.splice(index, 0, priority);\r\n  }\r\n};\r\n\r\nif (typeof module !== 'undefined' && module.exports) {\r\n  module.exports = PriorityQueue;\r\n}\r\n","'use strict';\n\nvar circle = require('@turf/circle');\nvar lineArc = require('@turf/line-arc');\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\nvar invariant = require('@turf/invariant');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar circle__default = /*#__PURE__*/_interopDefaultLegacy(circle);\nvar lineArc__default = /*#__PURE__*/_interopDefaultLegacy(lineArc);\n\n/**\n * Creates a circular sector of a circle of given radius and center {@link Point},\n * between (clockwise) bearing1 and bearing2; 0 bearing is North of center point, positive clockwise.\n *\n * @name sector\n * @param {Coord} center center point\n * @param {number} radius radius of the circle\n * @param {number} bearing1 angle, in decimal degrees, of the first radius of the sector\n * @param {number} bearing2 angle, in decimal degrees, of the second radius of the sector\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {number} [options.steps=64] number of steps\n * @param {Properties} [options.properties={}] Translate properties to Feature Polygon\n * @returns {Feature<Polygon>} sector polygon\n * @example\n * var center = turf.point([-75, 40]);\n * var radius = 5;\n * var bearing1 = 25;\n * var bearing2 = 45;\n *\n * var sector = turf.sector(center, radius, bearing1, bearing2);\n *\n * //addToMap\n * var addToMap = [center, sector];\n */\nfunction sector(center, radius, bearing1, bearing2, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var properties = options.properties;\n\n  // validation\n  if (!center) throw new Error(\"center is required\");\n  if (bearing1 === undefined || bearing1 === null)\n    throw new Error(\"bearing1 is required\");\n  if (bearing2 === undefined || bearing2 === null)\n    throw new Error(\"bearing2 is required\");\n  if (!radius) throw new Error(\"radius is required\");\n  if (typeof options !== \"object\") throw new Error(\"options must be an object\");\n\n  if (convertAngleTo360(bearing1) === convertAngleTo360(bearing2)) {\n    return circle__default['default'](center, radius, options);\n  }\n  var coords = invariant.getCoords(center);\n  var arc = lineArc__default['default'](center, radius, bearing1, bearing2, options);\n  var sliceCoords = [[coords]];\n  meta.coordEach(arc, function (currentCoords) {\n    sliceCoords[0].push(currentCoords);\n  });\n  sliceCoords[0].push(coords);\n\n  return helpers.polygon(sliceCoords, properties);\n}\n\n/**\n * Takes any angle in degrees\n * and returns a valid angle between 0-360 degrees\n *\n * @private\n * @param {number} alfa angle between -180-180 degrees\n * @returns {number} angle between 0-360 degrees\n */\nfunction convertAngleTo360(alfa) {\n  var beta = alfa % 360;\n  if (beta < 0) beta += 360;\n  return beta;\n}\n\nmodule.exports = sector;\nmodule.exports.default = sector;\n","'use strict';\n\nvar bbox = require('@turf/bbox');\nvar bboxPolygon = require('@turf/bbox-polygon');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bbox__default = /*#__PURE__*/_interopDefaultLegacy(bbox);\nvar bboxPolygon__default = /*#__PURE__*/_interopDefaultLegacy(bboxPolygon);\n\n/**\n * Takes any number of features and returns a rectangular {@link Polygon} that encompasses all vertices.\n *\n * @name envelope\n * @param {GeoJSON} geojson input features\n * @returns {Feature<Polygon>} a rectangular Polygon feature that encompasses all vertices\n * @example\n * var features = turf.featureCollection([\n *   turf.point([-75.343, 39.984], {\"name\": \"Location A\"}),\n *   turf.point([-75.833, 39.284], {\"name\": \"Location B\"}),\n *   turf.point([-75.534, 39.123], {\"name\": \"Location C\"})\n * ]);\n *\n * var enveloped = turf.envelope(features);\n *\n * //addToMap\n * var addToMap = [features, enveloped];\n */\nfunction envelope(geojson) {\n  return bboxPolygon__default['default'](bbox__default['default'](geojson));\n}\n\nmodule.exports = envelope;\nmodule.exports.default = envelope;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * react-router v7.15.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nvar __typeError = (msg) => {\n  throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\n\n// lib/router/history.ts\nvar Action = /* @__PURE__ */ ((Action2) => {\n  Action2[\"Pop\"] = \"POP\";\n  Action2[\"Push\"] = \"PUSH\";\n  Action2[\"Replace\"] = \"REPLACE\";\n  return Action2;\n})(Action || {});\nvar PopStateEventType = \"popstate\";\nfunction isLocation(obj) {\n  return typeof obj === \"object\" && obj != null && \"pathname\" in obj && \"search\" in obj && \"hash\" in obj && \"state\" in obj && \"key\" in obj;\n}\nfunction createMemoryHistory(options = {}) {\n  let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n  let entries;\n  entries = initialEntries.map(\n    (entry, index2) => createMemoryLocation(\n      entry,\n      typeof entry === \"string\" ? null : entry.state,\n      index2 === 0 ? \"default\" : void 0,\n      typeof entry === \"string\" ? void 0 : entry.mask\n    )\n  );\n  let index = clampIndex(\n    initialIndex == null ? entries.length - 1 : initialIndex\n  );\n  let action = \"POP\" /* Pop */;\n  let listener = null;\n  function clampIndex(n) {\n    return Math.min(Math.max(n, 0), entries.length - 1);\n  }\n  function getCurrentLocation() {\n    return entries[index];\n  }\n  function createMemoryLocation(to, state = null, key, mask) {\n    let location = createLocation(\n      entries ? getCurrentLocation().pathname : \"/\",\n      to,\n      state,\n      key,\n      mask\n    );\n    warning(\n      location.pathname.charAt(0) === \"/\",\n      `relative pathnames are not supported in memory history: ${JSON.stringify(\n        to\n      )}`\n    );\n    return location;\n  }\n  function createHref2(to) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n  let history = {\n    get index() {\n      return index;\n    },\n    get action() {\n      return action;\n    },\n    get location() {\n      return getCurrentLocation();\n    },\n    createHref: createHref2,\n    createURL(to) {\n      return new URL(createHref2(to), \"http://localhost\");\n    },\n    encodeLocation(to) {\n      let path = typeof to === \"string\" ? parsePath(to) : to;\n      return {\n        pathname: path.pathname || \"\",\n        search: path.search || \"\",\n        hash: path.hash || \"\"\n      };\n    },\n    push(to, state) {\n      action = \"PUSH\" /* Push */;\n      let nextLocation = isLocation(to) ? to : createMemoryLocation(to, state);\n      index += 1;\n      entries.splice(index, entries.length, nextLocation);\n      if (v5Compat && listener) {\n        listener({ action, location: nextLocation, delta: 1 });\n      }\n    },\n    replace(to, state) {\n      action = \"REPLACE\" /* Replace */;\n      let nextLocation = isLocation(to) ? to : createMemoryLocation(to, state);\n      entries[index] = nextLocation;\n      if (v5Compat && listener) {\n        listener({ action, location: nextLocation, delta: 0 });\n      }\n    },\n    go(delta) {\n      action = \"POP\" /* Pop */;\n      let nextIndex = clampIndex(index + delta);\n      let nextLocation = entries[nextIndex];\n      index = nextIndex;\n      if (listener) {\n        listener({ action, location: nextLocation, delta });\n      }\n    },\n    listen(fn) {\n      listener = fn;\n      return () => {\n        listener = null;\n      };\n    }\n  };\n  return history;\n}\nfunction createBrowserHistory(options = {}) {\n  function createBrowserLocation(window2, globalHistory) {\n    let maskedLocation = globalHistory.state?.masked;\n    let { pathname, search, hash } = maskedLocation || window2.location;\n    return createLocation(\n      \"\",\n      { pathname, search, hash },\n      // state defaults to `null` because `window.history.state` does\n      globalHistory.state && globalHistory.state.usr || null,\n      globalHistory.state && globalHistory.state.key || \"default\",\n      maskedLocation ? {\n        pathname: window2.location.pathname,\n        search: window2.location.search,\n        hash: window2.location.hash\n      } : void 0\n    );\n  }\n  function createBrowserHref(window2, to) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n  return getUrlBasedHistory(\n    createBrowserLocation,\n    createBrowserHref,\n    null,\n    options\n  );\n}\nfunction createHashHistory(options = {}) {\n  function createHashLocation(window2, globalHistory) {\n    let {\n      pathname = \"/\",\n      search = \"\",\n      hash = \"\"\n    } = parsePath(window2.location.hash.substring(1));\n    if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n      pathname = \"/\" + pathname;\n    }\n    return createLocation(\n      \"\",\n      { pathname, search, hash },\n      // state defaults to `null` because `window.history.state` does\n      globalHistory.state && globalHistory.state.usr || null,\n      globalHistory.state && globalHistory.state.key || \"default\"\n    );\n  }\n  function createHashHref(window2, to) {\n    let base = window2.document.querySelector(\"base\");\n    let href = \"\";\n    if (base && base.getAttribute(\"href\")) {\n      let url = window2.location.href;\n      let hashIndex = url.indexOf(\"#\");\n      href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n    }\n    return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n  }\n  function validateHashLocation(location, to) {\n    warning(\n      location.pathname.charAt(0) === \"/\",\n      `relative pathnames are not supported in hash history.push(${JSON.stringify(\n        to\n      )})`\n    );\n  }\n  return getUrlBasedHistory(\n    createHashLocation,\n    createHashHref,\n    validateHashLocation,\n    options\n  );\n}\nfunction invariant(value, message) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    throw new Error(message);\n  }\n}\nfunction warning(cond, message) {\n  if (!cond) {\n    if (typeof console !== \"undefined\") console.warn(message);\n    try {\n      throw new Error(message);\n    } catch (e) {\n    }\n  }\n}\nfunction createKey() {\n  return Math.random().toString(36).substring(2, 10);\n}\nfunction getHistoryState(location, index) {\n  return {\n    usr: location.state,\n    key: location.key,\n    idx: index,\n    masked: location.mask ? {\n      pathname: location.pathname,\n      search: location.search,\n      hash: location.hash\n    } : void 0\n  };\n}\nfunction createLocation(current, to, state = null, key, mask) {\n  let location = {\n    pathname: typeof current === \"string\" ? current : current.pathname,\n    search: \"\",\n    hash: \"\",\n    ...typeof to === \"string\" ? parsePath(to) : to,\n    state,\n    // TODO: This could be cleaned up.  push/replace should probably just take\n    // full Locations now and avoid the need to run through this flow at all\n    // But that's a pretty big refactor to the current test suite so going to\n    // keep as is for the time being and just let any incoming keys take precedence\n    key: to && to.key || key || createKey(),\n    mask\n  };\n  return location;\n}\nfunction createPath({\n  pathname = \"/\",\n  search = \"\",\n  hash = \"\"\n}) {\n  if (search && search !== \"?\")\n    pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n  if (hash && hash !== \"#\")\n    pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n  return pathname;\n}\nfunction parsePath(path) {\n  let parsedPath = {};\n  if (path) {\n    let hashIndex = path.indexOf(\"#\");\n    if (hashIndex >= 0) {\n      parsedPath.hash = path.substring(hashIndex);\n      path = path.substring(0, hashIndex);\n    }\n    let searchIndex = path.indexOf(\"?\");\n    if (searchIndex >= 0) {\n      parsedPath.search = path.substring(searchIndex);\n      path = path.substring(0, searchIndex);\n    }\n    if (path) {\n      parsedPath.pathname = path;\n    }\n  }\n  return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref2, validateLocation, options = {}) {\n  let { window: window2 = document.defaultView, v5Compat = false } = options;\n  let globalHistory = window2.history;\n  let action = \"POP\" /* Pop */;\n  let listener = null;\n  let index = getIndex();\n  if (index == null) {\n    index = 0;\n    globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n  }\n  function getIndex() {\n    let state = globalHistory.state || { idx: null };\n    return state.idx;\n  }\n  function handlePop() {\n    action = \"POP\" /* Pop */;\n    let nextIndex = getIndex();\n    let delta = nextIndex == null ? null : nextIndex - index;\n    index = nextIndex;\n    if (listener) {\n      listener({ action, location: history.location, delta });\n    }\n  }\n  function push(to, state) {\n    action = \"PUSH\" /* Push */;\n    let location = isLocation(to) ? to : createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n    index = getIndex() + 1;\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location.mask || location);\n    try {\n      globalHistory.pushState(historyState, \"\", url);\n    } catch (error) {\n      if (error instanceof DOMException && error.name === \"DataCloneError\") {\n        throw error;\n      }\n      window2.location.assign(url);\n    }\n    if (v5Compat && listener) {\n      listener({ action, location: history.location, delta: 1 });\n    }\n  }\n  function replace2(to, state) {\n    action = \"REPLACE\" /* Replace */;\n    let location = isLocation(to) ? to : createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n    index = getIndex();\n    let historyState = getHistoryState(location, index);\n    let url = history.createHref(location.mask || location);\n    globalHistory.replaceState(historyState, \"\", url);\n    if (v5Compat && listener) {\n      listener({ action, location: history.location, delta: 0 });\n    }\n  }\n  function createURL(to) {\n    return createBrowserURLImpl(to);\n  }\n  let history = {\n    get action() {\n      return action;\n    },\n    get location() {\n      return getLocation(window2, globalHistory);\n    },\n    listen(fn) {\n      if (listener) {\n        throw new Error(\"A history only accepts one active listener\");\n      }\n      window2.addEventListener(PopStateEventType, handlePop);\n      listener = fn;\n      return () => {\n        window2.removeEventListener(PopStateEventType, handlePop);\n        listener = null;\n      };\n    },\n    createHref(to) {\n      return createHref2(window2, to);\n    },\n    createURL,\n    encodeLocation(to) {\n      let url = createURL(to);\n      return {\n        pathname: url.pathname,\n        search: url.search,\n        hash: url.hash\n      };\n    },\n    push,\n    replace: replace2,\n    go(n) {\n      return globalHistory.go(n);\n    }\n  };\n  return history;\n}\nfunction createBrowserURLImpl(to, isAbsolute = false) {\n  let base = \"http://localhost\";\n  if (typeof window !== \"undefined\") {\n    base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n  }\n  invariant(base, \"No window.location.(origin|href) available to create URL\");\n  let href = typeof to === \"string\" ? to : createPath(to);\n  href = href.replace(/ $/, \"%20\");\n  if (!isAbsolute && href.startsWith(\"//\")) {\n    href = base + href;\n  }\n  return new URL(href, base);\n}\n\n// lib/router/utils.ts\nfunction createContext(defaultValue) {\n  return { defaultValue };\n}\nvar _map;\nvar RouterContextProvider = class {\n  /**\n   * Create a new `RouterContextProvider` instance\n   * @param init An optional initial context map to populate the provider with\n   */\n  constructor(init) {\n    __privateAdd(this, _map, /* @__PURE__ */ new Map());\n    if (init) {\n      for (let [context, value] of init) {\n        this.set(context, value);\n      }\n    }\n  }\n  /**\n   * Access a value from the context. If no value has been set for the context,\n   * it will return the context's `defaultValue` if provided, or throw an error\n   * if no `defaultValue` was set.\n   * @param context The context to get the value for\n   * @returns The value for the context, or the context's `defaultValue` if no\n   * value was set\n   */\n  get(context) {\n    if (__privateGet(this, _map).has(context)) {\n      return __privateGet(this, _map).get(context);\n    }\n    if (context.defaultValue !== void 0) {\n      return context.defaultValue;\n    }\n    throw new Error(\"No value found for context\");\n  }\n  /**\n   * Set a value for the context. If the context already has a value set, this\n   * will overwrite it.\n   *\n   * @param context The context to set the value for\n   * @param value The value to set for the context\n   * @returns {void}\n   */\n  set(context, value) {\n    __privateGet(this, _map).set(context, value);\n  }\n};\n_map = new WeakMap();\nvar unsupportedLazyRouteObjectKeys = /* @__PURE__ */ new Set([\n  \"lazy\",\n  \"caseSensitive\",\n  \"path\",\n  \"id\",\n  \"index\",\n  \"children\"\n]);\nfunction isUnsupportedLazyRouteObjectKey(key) {\n  return unsupportedLazyRouteObjectKeys.has(\n    key\n  );\n}\nvar unsupportedLazyRouteFunctionKeys = /* @__PURE__ */ new Set([\n  \"lazy\",\n  \"caseSensitive\",\n  \"path\",\n  \"id\",\n  \"index\",\n  \"middleware\",\n  \"children\"\n]);\nfunction isUnsupportedLazyRouteFunctionKey(key) {\n  return unsupportedLazyRouteFunctionKeys.has(\n    key\n  );\n}\nfunction isIndexRoute(route) {\n  return route.index === true;\n}\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties2, parentPath = [], manifest = {}, allowInPlaceMutations = false) {\n  return routes.map((route, index) => {\n    let treePath = [...parentPath, String(index)];\n    let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n    invariant(\n      route.index !== true || !route.children,\n      `Cannot specify children on an index route`\n    );\n    invariant(\n      allowInPlaceMutations || !manifest[id],\n      `Found a route id collision on id \"${id}\".  Route id's must be globally unique within Data Router usages`\n    );\n    if (isIndexRoute(route)) {\n      let indexRoute = {\n        ...route,\n        id\n      };\n      manifest[id] = mergeRouteUpdates(\n        indexRoute,\n        mapRouteProperties2(indexRoute)\n      );\n      return indexRoute;\n    } else {\n      let pathOrLayoutRoute = {\n        ...route,\n        id,\n        children: void 0\n      };\n      manifest[id] = mergeRouteUpdates(\n        pathOrLayoutRoute,\n        mapRouteProperties2(pathOrLayoutRoute)\n      );\n      if (route.children) {\n        pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n          route.children,\n          mapRouteProperties2,\n          treePath,\n          manifest,\n          allowInPlaceMutations\n        );\n      }\n      return pathOrLayoutRoute;\n    }\n  });\n}\nfunction mergeRouteUpdates(route, updates) {\n  return Object.assign(route, {\n    ...updates,\n    ...typeof updates.lazy === \"object\" && updates.lazy != null ? {\n      lazy: {\n        ...route.lazy,\n        ...updates.lazy\n      }\n    } : {}\n  });\n}\nfunction matchRoutes(routes, locationArg, basename = \"/\") {\n  return matchRoutesImpl(routes, locationArg, basename, false);\n}\nfunction matchRoutesImpl(routes, locationArg, basename, allowPartial, precomputedBranches) {\n  let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n  let pathname = stripBasename(location.pathname || \"/\", basename);\n  if (pathname == null) {\n    return null;\n  }\n  let branches = precomputedBranches ?? flattenAndRankRoutes(routes);\n  let matches = null;\n  let decoded = decodePath(pathname);\n  for (let i = 0; matches == null && i < branches.length; ++i) {\n    matches = matchRouteBranch(\n      branches[i],\n      decoded,\n      allowPartial\n    );\n  }\n  return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n  let { route, pathname, params } = match;\n  return {\n    id: route.id,\n    pathname,\n    params,\n    data: loaderData[route.id],\n    loaderData: loaderData[route.id],\n    handle: route.handle\n  };\n}\nfunction flattenAndRankRoutes(routes) {\n  let branches = flattenRoutes(routes);\n  rankRouteBranches(branches);\n  return branches;\n}\nfunction flattenRoutes(routes, branches = [], parentsMeta = [], parentPath = \"\", _hasParentOptionalSegments = false) {\n  let flattenRoute = (route, index, hasParentOptionalSegments = _hasParentOptionalSegments, relativePath) => {\n    let meta = {\n      relativePath: relativePath === void 0 ? route.path || \"\" : relativePath,\n      caseSensitive: route.caseSensitive === true,\n      childrenIndex: index,\n      route\n    };\n    if (meta.relativePath.startsWith(\"/\")) {\n      if (!meta.relativePath.startsWith(parentPath) && hasParentOptionalSegments) {\n        return;\n      }\n      invariant(\n        meta.relativePath.startsWith(parentPath),\n        `Absolute route path \"${meta.relativePath}\" nested under path \"${parentPath}\" is not valid. An absolute child route path must start with the combined path of all its parent routes.`\n      );\n      meta.relativePath = meta.relativePath.slice(parentPath.length);\n    }\n    let path = joinPaths([parentPath, meta.relativePath]);\n    let routesMeta = parentsMeta.concat(meta);\n    if (route.children && route.children.length > 0) {\n      invariant(\n        // Our types know better, but runtime JS may not!\n        // @ts-expect-error\n        route.index !== true,\n        `Index routes must not have child routes. Please remove all child routes from route path \"${path}\".`\n      );\n      flattenRoutes(\n        route.children,\n        branches,\n        routesMeta,\n        path,\n        hasParentOptionalSegments\n      );\n    }\n    if (route.path == null && !route.index) {\n      return;\n    }\n    branches.push({\n      path,\n      score: computeScore(path, route.index),\n      routesMeta\n    });\n  };\n  routes.forEach((route, index) => {\n    if (route.path === \"\" || !route.path?.includes(\"?\")) {\n      flattenRoute(route, index);\n    } else {\n      for (let exploded of explodeOptionalSegments(route.path)) {\n        flattenRoute(route, index, true, exploded);\n      }\n    }\n  });\n  return branches;\n}\nfunction explodeOptionalSegments(path) {\n  let segments = path.split(\"/\");\n  if (segments.length === 0) return [];\n  let [first, ...rest] = segments;\n  let isOptional = first.endsWith(\"?\");\n  let required = first.replace(/\\?$/, \"\");\n  if (rest.length === 0) {\n    return isOptional ? [required, \"\"] : [required];\n  }\n  let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n  let result = [];\n  result.push(\n    ...restExploded.map(\n      (subpath) => subpath === \"\" ? required : [required, subpath].join(\"/\")\n    )\n  );\n  if (isOptional) {\n    result.push(...restExploded);\n  }\n  return result.map(\n    (exploded) => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n  );\n}\nfunction rankRouteBranches(branches) {\n  branches.sort(\n    (a, b) => a.score !== b.score ? b.score - a.score : compareIndexes(\n      a.routesMeta.map((meta) => meta.childrenIndex),\n      b.routesMeta.map((meta) => meta.childrenIndex)\n    )\n  );\n}\nvar paramRe = /^:[\\w-]+$/;\nvar dynamicSegmentValue = 3;\nvar indexRouteValue = 2;\nvar emptySegmentValue = 1;\nvar staticSegmentValue = 10;\nvar splatPenalty = -2;\nvar isSplat = (s) => s === \"*\";\nfunction computeScore(path, index) {\n  let segments = path.split(\"/\");\n  let initialScore = segments.length;\n  if (segments.some(isSplat)) {\n    initialScore += splatPenalty;\n  }\n  if (index) {\n    initialScore += indexRouteValue;\n  }\n  return segments.filter((s) => !isSplat(s)).reduce(\n    (score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue),\n    initialScore\n  );\n}\nfunction compareIndexes(a, b) {\n  let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n  return siblings ? (\n    // If two routes are siblings, we should try to match the earlier sibling\n    // first. This allows people to have fine-grained control over the matching\n    // behavior by simply putting routes with identical paths in the order they\n    // want them tried.\n    a[a.length - 1] - b[b.length - 1]\n  ) : (\n    // Otherwise, it doesn't really make sense to rank non-siblings by index,\n    // so they sort equally.\n    0\n  );\n}\nfunction matchRouteBranch(branch, pathname, allowPartial = false) {\n  let { routesMeta } = branch;\n  let matchedParams = {};\n  let matchedPathname = \"/\";\n  let matches = [];\n  for (let i = 0; i < routesMeta.length; ++i) {\n    let meta = routesMeta[i];\n    let end = i === routesMeta.length - 1;\n    let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n    let match = matchPath(\n      { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n      remainingPathname\n    );\n    let route = meta.route;\n    if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {\n      match = matchPath(\n        {\n          path: meta.relativePath,\n          caseSensitive: meta.caseSensitive,\n          end: false\n        },\n        remainingPathname\n      );\n    }\n    if (!match) {\n      return null;\n    }\n    Object.assign(matchedParams, match.params);\n    matches.push({\n      // TODO: Can this as be avoided?\n      params: matchedParams,\n      pathname: joinPaths([matchedPathname, match.pathname]),\n      pathnameBase: normalizePathname(\n        joinPaths([matchedPathname, match.pathnameBase])\n      ),\n      route\n    });\n    if (match.pathnameBase !== \"/\") {\n      matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n    }\n  }\n  return matches;\n}\nfunction generatePath(originalPath, params = {}) {\n  let path = originalPath;\n  if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n    warning(\n      false,\n      `Route path \"${path}\" will be treated as if it were \"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must always follow a \\`/\\` in the pattern. To get rid of this warning, please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n    );\n    path = path.replace(/\\*$/, \"/*\");\n  }\n  const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n  const stringify2 = (p) => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n  const segments = path.split(/\\/+/).map((segment, index, array) => {\n    const isLastSegment = index === array.length - 1;\n    if (isLastSegment && segment === \"*\") {\n      return stringify2(params[\"*\"]);\n    }\n    const keyMatch = segment.match(/^:([\\w-]+)(\\??)(.*)/);\n    if (keyMatch) {\n      const [, key, optional, suffix] = keyMatch;\n      let param = params[key];\n      invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n      return encodeURIComponent(stringify2(param)) + suffix;\n    }\n    return segment.replace(/\\?$/g, \"\");\n  }).filter((segment) => !!segment);\n  return prefix + segments.join(\"/\");\n}\nfunction matchPath(pattern, pathname) {\n  if (typeof pattern === \"string\") {\n    pattern = { path: pattern, caseSensitive: false, end: true };\n  }\n  let [matcher, compiledParams] = compilePath(\n    pattern.path,\n    pattern.caseSensitive,\n    pattern.end\n  );\n  let match = pathname.match(matcher);\n  if (!match) return null;\n  let matchedPathname = match[0];\n  let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n  let captureGroups = match.slice(1);\n  let params = compiledParams.reduce(\n    (memo2, { paramName, isOptional }, index) => {\n      if (paramName === \"*\") {\n        let splatValue = captureGroups[index] || \"\";\n        pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n      }\n      const value = captureGroups[index];\n      if (isOptional && !value) {\n        memo2[paramName] = void 0;\n      } else {\n        memo2[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n      }\n      return memo2;\n    },\n    {}\n  );\n  return {\n    params,\n    pathname: matchedPathname,\n    pathnameBase,\n    pattern\n  };\n}\nfunction compilePath(path, caseSensitive = false, end = true) {\n  warning(\n    path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n    `Route path \"${path}\" will be treated as if it were \"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must always follow a \\`/\\` in the pattern. To get rid of this warning, please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n  );\n  let params = [];\n  let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\").replace(/^\\/*/, \"/\").replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\").replace(\n    /\\/:([\\w-]+)(\\?)?/g,\n    (match, paramName, isOptional, index, str) => {\n      params.push({ paramName, isOptional: isOptional != null });\n      if (isOptional) {\n        let nextChar = str.charAt(index + match.length);\n        if (nextChar && nextChar !== \"/\") {\n          return \"/([^\\\\/]*)\";\n        }\n        return \"(?:/([^\\\\/]*))?\";\n      }\n      return \"/([^\\\\/]+)\";\n    }\n  ).replace(/\\/([\\w-]+)\\?(\\/|$)/g, \"(/$1)?$2\");\n  if (path.endsWith(\"*\")) {\n    params.push({ paramName: \"*\" });\n    regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" : \"(?:\\\\/(.+)|\\\\/*)$\";\n  } else if (end) {\n    regexpSource += \"\\\\/*$\";\n  } else if (path !== \"\" && path !== \"/\") {\n    regexpSource += \"(?:(?=\\\\/|$))\";\n  } else {\n  }\n  let matcher = new RegExp(regexpSource, caseSensitive ? void 0 : \"i\");\n  return [matcher, params];\n}\nfunction decodePath(value) {\n  try {\n    return value.split(\"/\").map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n  } catch (error) {\n    warning(\n      false,\n      `The URL path \"${value}\" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${error}).`\n    );\n    return value;\n  }\n}\nfunction stripBasename(pathname, basename) {\n  if (basename === \"/\") return pathname;\n  if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n    return null;\n  }\n  let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n  let nextChar = pathname.charAt(startIndex);\n  if (nextChar && nextChar !== \"/\") {\n    return null;\n  }\n  return pathname.slice(startIndex) || \"/\";\n}\nfunction prependBasename({\n  basename,\n  pathname\n}) {\n  return pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n}\nvar ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar isAbsoluteUrl = (url) => ABSOLUTE_URL_REGEX.test(url);\nfunction resolvePath(to, fromPathname = \"/\") {\n  let {\n    pathname: toPathname,\n    search = \"\",\n    hash = \"\"\n  } = typeof to === \"string\" ? parsePath(to) : to;\n  let pathname;\n  if (toPathname) {\n    toPathname = removeDoubleSlashes(toPathname);\n    if (toPathname.startsWith(\"/\")) {\n      pathname = resolvePathname(toPathname.substring(1), \"/\");\n    } else {\n      pathname = resolvePathname(toPathname, fromPathname);\n    }\n  } else {\n    pathname = fromPathname;\n  }\n  return {\n    pathname,\n    search: normalizeSearch(search),\n    hash: normalizeHash(hash)\n  };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n  let segments = removeTrailingSlash(fromPathname).split(\"/\");\n  let relativeSegments = relativePath.split(\"/\");\n  relativeSegments.forEach((segment) => {\n    if (segment === \"..\") {\n      if (segments.length > 1) segments.pop();\n    } else if (segment !== \".\") {\n      segments.push(segment);\n    }\n  });\n  return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n  return `Cannot include a '${char}' character in a manually specified \\`to.${field}\\` field [${JSON.stringify(\n    path\n  )}].  Please separate it out to the \\`to.${dest}\\` field. Alternatively you may provide the full path as a string in <Link to=\"...\"> and the router will parse it for you.`;\n}\nfunction getPathContributingMatches(matches) {\n  return matches.filter(\n    (match, index) => index === 0 || match.route.path && match.route.path.length > 0\n  );\n}\nfunction getResolveToMatches(matches) {\n  let pathMatches = getPathContributingMatches(matches);\n  return pathMatches.map(\n    (match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n  );\n}\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative = false) {\n  let to;\n  if (typeof toArg === \"string\") {\n    to = parsePath(toArg);\n  } else {\n    to = { ...toArg };\n    invariant(\n      !to.pathname || !to.pathname.includes(\"?\"),\n      getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n    );\n    invariant(\n      !to.pathname || !to.pathname.includes(\"#\"),\n      getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n    );\n    invariant(\n      !to.search || !to.search.includes(\"#\"),\n      getInvalidPathError(\"#\", \"search\", \"hash\", to)\n    );\n  }\n  let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n  let toPathname = isEmptyPath ? \"/\" : to.pathname;\n  let from;\n  if (toPathname == null) {\n    from = locationPathname;\n  } else {\n    let routePathnameIndex = routePathnames.length - 1;\n    if (!isPathRelative && toPathname.startsWith(\"..\")) {\n      let toSegments = toPathname.split(\"/\");\n      while (toSegments[0] === \"..\") {\n        toSegments.shift();\n        routePathnameIndex -= 1;\n      }\n      to.pathname = toSegments.join(\"/\");\n    }\n    from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n  }\n  let path = resolvePath(to, from);\n  let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n  let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n  if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n    path.pathname += \"/\";\n  }\n  return path;\n}\nvar removeDoubleSlashes = (path) => path.replace(/\\/\\/+/g, \"/\");\nvar joinPaths = (paths) => removeDoubleSlashes(paths.join(\"/\"));\nvar removeTrailingSlash = (path) => path.replace(/\\/+$/, \"\");\nvar normalizePathname = (pathname) => removeTrailingSlash(pathname).replace(/^\\/*/, \"/\");\nvar normalizeSearch = (search) => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\nvar normalizeHash = (hash) => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\nvar DataWithResponseInit = class {\n  constructor(data2, init) {\n    this.type = \"DataWithResponseInit\";\n    this.data = data2;\n    this.init = init || null;\n  }\n};\nfunction data(data2, init) {\n  return new DataWithResponseInit(\n    data2,\n    typeof init === \"number\" ? { status: init } : init\n  );\n}\nvar redirect = (url, init = 302) => {\n  let responseInit = init;\n  if (typeof responseInit === \"number\") {\n    responseInit = { status: responseInit };\n  } else if (typeof responseInit.status === \"undefined\") {\n    responseInit.status = 302;\n  }\n  let headers = new Headers(responseInit.headers);\n  headers.set(\"Location\", url);\n  return new Response(null, { ...responseInit, headers });\n};\nvar redirectDocument = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n  return response;\n};\nvar replace = (url, init) => {\n  let response = redirect(url, init);\n  response.headers.set(\"X-Remix-Replace\", \"true\");\n  return response;\n};\nvar ErrorResponseImpl = class {\n  constructor(status, statusText, data2, internal = false) {\n    this.status = status;\n    this.statusText = statusText || \"\";\n    this.internal = internal;\n    if (data2 instanceof Error) {\n      this.data = data2.toString();\n      this.error = data2;\n    } else {\n      this.data = data2;\n    }\n  }\n};\nfunction isRouteErrorResponse(error) {\n  return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\nfunction getRoutePattern(matches) {\n  let parts = matches.map((m) => m.route.path).filter(Boolean);\n  return joinPaths(parts) || \"/\";\n}\nvar isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\nfunction parseToInfo(_to, basename) {\n  let to = _to;\n  if (typeof to !== \"string\" || !ABSOLUTE_URL_REGEX.test(to)) {\n    return {\n      absoluteURL: void 0,\n      isExternal: false,\n      to\n    };\n  }\n  let absoluteURL = to;\n  let isExternal = false;\n  if (isBrowser) {\n    try {\n      let currentUrl = new URL(window.location.href);\n      let targetUrl = to.startsWith(\"//\") ? new URL(currentUrl.protocol + to) : new URL(to);\n      let path = stripBasename(targetUrl.pathname, basename);\n      if (targetUrl.origin === currentUrl.origin && path != null) {\n        to = path + targetUrl.search + targetUrl.hash;\n      } else {\n        isExternal = true;\n      }\n    } catch (e) {\n      warning(\n        false,\n        `<Link to=\"${to}\"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`\n      );\n    }\n  }\n  return {\n    absoluteURL,\n    isExternal,\n    to\n  };\n}\n\n// lib/router/instrumentation.ts\nvar UninstrumentedSymbol = Symbol(\"Uninstrumented\");\nfunction getRouteInstrumentationUpdates(fns, route) {\n  let aggregated = {\n    lazy: [],\n    \"lazy.loader\": [],\n    \"lazy.action\": [],\n    \"lazy.middleware\": [],\n    middleware: [],\n    loader: [],\n    action: []\n  };\n  fns.forEach(\n    (fn) => fn({\n      id: route.id,\n      index: route.index,\n      path: route.path,\n      instrument(i) {\n        let keys = Object.keys(aggregated);\n        for (let key of keys) {\n          if (i[key]) {\n            aggregated[key].push(i[key]);\n          }\n        }\n      }\n    })\n  );\n  let updates = {};\n  if (typeof route.lazy === \"function\" && aggregated.lazy.length > 0) {\n    let instrumented = wrapImpl(aggregated.lazy, route.lazy, () => void 0);\n    if (instrumented) {\n      updates.lazy = instrumented;\n    }\n  }\n  if (typeof route.lazy === \"object\") {\n    let lazyObject = route.lazy;\n    [\"middleware\", \"loader\", \"action\"].forEach((key) => {\n      let lazyFn = lazyObject[key];\n      let instrumentations = aggregated[`lazy.${key}`];\n      if (typeof lazyFn === \"function\" && instrumentations.length > 0) {\n        let instrumented = wrapImpl(instrumentations, lazyFn, () => void 0);\n        if (instrumented) {\n          updates.lazy = Object.assign(updates.lazy || {}, {\n            [key]: instrumented\n          });\n        }\n      }\n    });\n  }\n  [\"loader\", \"action\"].forEach((key) => {\n    let handler = route[key];\n    if (typeof handler === \"function\" && aggregated[key].length > 0) {\n      let original = handler[UninstrumentedSymbol] ?? handler;\n      let instrumented = wrapImpl(\n        aggregated[key],\n        original,\n        (...args) => getHandlerInfo(args[0])\n      );\n      if (instrumented) {\n        if (key === \"loader\" && original.hydrate === true) {\n          instrumented.hydrate = true;\n        }\n        instrumented[UninstrumentedSymbol] = original;\n        updates[key] = instrumented;\n      }\n    }\n  });\n  if (route.middleware && route.middleware.length > 0 && aggregated.middleware.length > 0) {\n    updates.middleware = route.middleware.map((middleware) => {\n      let original = middleware[UninstrumentedSymbol] ?? middleware;\n      let instrumented = wrapImpl(\n        aggregated.middleware,\n        original,\n        (...args) => getHandlerInfo(args[0])\n      );\n      if (instrumented) {\n        instrumented[UninstrumentedSymbol] = original;\n        return instrumented;\n      }\n      return middleware;\n    });\n  }\n  return updates;\n}\nfunction instrumentClientSideRouter(router, fns) {\n  let aggregated = {\n    navigate: [],\n    fetch: []\n  };\n  fns.forEach(\n    (fn) => fn({\n      instrument(i) {\n        let keys = Object.keys(i);\n        for (let key of keys) {\n          if (i[key]) {\n            aggregated[key].push(i[key]);\n          }\n        }\n      }\n    })\n  );\n  if (aggregated.navigate.length > 0) {\n    let navigate = router.navigate[UninstrumentedSymbol] ?? router.navigate;\n    let instrumentedNavigate = wrapImpl(\n      aggregated.navigate,\n      navigate,\n      (...args) => {\n        let [to, opts] = args;\n        return {\n          to: typeof to === \"number\" || typeof to === \"string\" ? to : to ? createPath(to) : \".\",\n          ...getRouterInfo(router, opts ?? {})\n        };\n      }\n    );\n    if (instrumentedNavigate) {\n      instrumentedNavigate[UninstrumentedSymbol] = navigate;\n      router.navigate = instrumentedNavigate;\n    }\n  }\n  if (aggregated.fetch.length > 0) {\n    let fetch2 = router.fetch[UninstrumentedSymbol] ?? router.fetch;\n    let instrumentedFetch = wrapImpl(aggregated.fetch, fetch2, (...args) => {\n      let [key, , href, opts] = args;\n      return {\n        href: href ?? \".\",\n        fetcherKey: key,\n        ...getRouterInfo(router, opts ?? {})\n      };\n    });\n    if (instrumentedFetch) {\n      instrumentedFetch[UninstrumentedSymbol] = fetch2;\n      router.fetch = instrumentedFetch;\n    }\n  }\n  return router;\n}\nfunction instrumentHandler(handler, fns) {\n  let aggregated = {\n    request: []\n  };\n  fns.forEach(\n    (fn) => fn({\n      instrument(i) {\n        let keys = Object.keys(i);\n        for (let key of keys) {\n          if (i[key]) {\n            aggregated[key].push(i[key]);\n          }\n        }\n      }\n    })\n  );\n  let instrumentedHandler = handler;\n  if (aggregated.request.length > 0) {\n    instrumentedHandler = wrapImpl(aggregated.request, handler, (...args) => {\n      let [request, context] = args;\n      return {\n        request: getReadonlyRequest(request),\n        context: context != null ? getReadonlyContext(context) : context\n      };\n    });\n  }\n  return instrumentedHandler;\n}\nfunction wrapImpl(impls, handler, getInfo) {\n  if (impls.length === 0) {\n    return null;\n  }\n  return async (...args) => {\n    let result = await recurseRight(\n      impls,\n      getInfo(...args),\n      () => handler(...args),\n      impls.length - 1\n    );\n    if (result.type === \"error\") {\n      throw result.value;\n    }\n    return result.value;\n  };\n}\nasync function recurseRight(impls, info, handler, index) {\n  let impl = impls[index];\n  let result;\n  if (!impl) {\n    try {\n      let value = await handler();\n      result = { type: \"success\", value };\n    } catch (e) {\n      result = { type: \"error\", value: e };\n    }\n  } else {\n    let handlerPromise = void 0;\n    let callHandler = async () => {\n      if (handlerPromise) {\n        console.error(\"You cannot call instrumented handlers more than once\");\n      } else {\n        handlerPromise = recurseRight(impls, info, handler, index - 1);\n      }\n      result = await handlerPromise;\n      invariant(result, \"Expected a result\");\n      if (result.type === \"error\" && result.value instanceof Error) {\n        return { status: \"error\", error: result.value };\n      }\n      return { status: \"success\", error: void 0 };\n    };\n    try {\n      await impl(callHandler, info);\n    } catch (e) {\n      console.error(\"An instrumentation function threw an error:\", e);\n    }\n    if (!handlerPromise) {\n      await callHandler();\n    }\n    await handlerPromise;\n  }\n  if (result) {\n    return result;\n  }\n  return {\n    type: \"error\",\n    value: new Error(\"No result assigned in instrumentation chain.\")\n  };\n}\nfunction getHandlerInfo(args) {\n  let { request, context, params, pattern } = args;\n  return {\n    request: getReadonlyRequest(request),\n    params: { ...params },\n    pattern,\n    context: getReadonlyContext(context)\n  };\n}\nfunction getRouterInfo(router, opts) {\n  return {\n    currentUrl: createPath(router.state.location),\n    ...\"formMethod\" in opts ? { formMethod: opts.formMethod } : {},\n    ...\"formEncType\" in opts ? { formEncType: opts.formEncType } : {},\n    ...\"formData\" in opts ? { formData: opts.formData } : {},\n    ...\"body\" in opts ? { body: opts.body } : {}\n  };\n}\nfunction getReadonlyRequest(request) {\n  return {\n    method: request.method,\n    url: request.url,\n    headers: {\n      get: (...args) => request.headers.get(...args)\n    }\n  };\n}\nfunction getReadonlyContext(context) {\n  if (isPlainObject(context)) {\n    let frozen = { ...context };\n    Object.freeze(frozen);\n    return frozen;\n  } else {\n    return {\n      get: (ctx) => context.get(ctx)\n    };\n  }\n}\nvar objectProtoNames = Object.getOwnPropertyNames(Object.prototype).sort().join(\"\\0\");\nfunction isPlainObject(thing) {\n  if (thing === null || typeof thing !== \"object\") {\n    return false;\n  }\n  const proto = Object.getPrototypeOf(thing);\n  return proto === Object.prototype || proto === null || Object.getOwnPropertyNames(proto).sort().join(\"\\0\") === objectProtoNames;\n}\n\n// lib/router/router.ts\nvar validMutationMethodsArr = [\n  \"POST\",\n  \"PUT\",\n  \"PATCH\",\n  \"DELETE\"\n];\nvar validMutationMethods = new Set(\n  validMutationMethodsArr\n);\nvar validRequestMethodsArr = [\n  \"GET\",\n  ...validMutationMethodsArr\n];\nvar validRequestMethods = new Set(validRequestMethodsArr);\nvar redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);\nvar redirectPreserveMethodStatusCodes = /* @__PURE__ */ new Set([307, 308]);\nvar IDLE_NAVIGATION = {\n  state: \"idle\",\n  location: void 0,\n  matches: void 0,\n  historyAction: void 0,\n  formMethod: void 0,\n  formAction: void 0,\n  formEncType: void 0,\n  formData: void 0,\n  json: void 0,\n  text: void 0\n};\nvar IDLE_FETCHER = {\n  state: \"idle\",\n  data: void 0,\n  formMethod: void 0,\n  formAction: void 0,\n  formEncType: void 0,\n  formData: void 0,\n  json: void 0,\n  text: void 0\n};\nvar IDLE_BLOCKER = {\n  state: \"unblocked\",\n  proceed: void 0,\n  reset: void 0,\n  location: void 0\n};\nvar defaultMapRouteProperties = (route) => ({\n  hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nvar TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\nvar ResetLoaderDataSymbol = Symbol(\"ResetLoaderData\");\nvar _routes, _branches, _hmrRoutes, _hmrBranches;\nvar DataRoutes = class {\n  constructor(routes) {\n    __privateAdd(this, _routes);\n    __privateAdd(this, _branches);\n    __privateAdd(this, _hmrRoutes);\n    __privateAdd(this, _hmrBranches);\n    __privateSet(this, _routes, routes);\n    __privateSet(this, _branches, flattenAndRankRoutes(routes));\n  }\n  /** The stable route tree */\n  get stableRoutes() {\n    return __privateGet(this, _routes);\n  }\n  /** The in-flight route tree if one is active, otherwise the stable tree */\n  get activeRoutes() {\n    return __privateGet(this, _hmrRoutes) ?? __privateGet(this, _routes);\n  }\n  /** Pre-computed branches */\n  get branches() {\n    return __privateGet(this, _hmrBranches) ?? __privateGet(this, _branches);\n  }\n  get hasHMRRoutes() {\n    return __privateGet(this, _hmrRoutes) != null;\n  }\n  /** Replace the stable route tree and recompute its branches */\n  setRoutes(routes) {\n    __privateSet(this, _routes, routes);\n    __privateSet(this, _branches, flattenAndRankRoutes(routes));\n  }\n  /** Set a new in-flight route tree and recompute its branches */\n  setHmrRoutes(routes) {\n    __privateSet(this, _hmrRoutes, routes);\n    __privateSet(this, _hmrBranches, flattenAndRankRoutes(routes));\n  }\n  /** Commit in-flight routes/branches to the stable slot and clear in-flight */\n  commitHmrRoutes() {\n    if (__privateGet(this, _hmrRoutes)) {\n      __privateSet(this, _routes, __privateGet(this, _hmrRoutes));\n      __privateSet(this, _branches, __privateGet(this, _hmrBranches));\n      __privateSet(this, _hmrRoutes, void 0);\n      __privateSet(this, _hmrBranches, void 0);\n    }\n  }\n};\n_routes = new WeakMap();\n_branches = new WeakMap();\n_hmrRoutes = new WeakMap();\n_hmrBranches = new WeakMap();\nfunction createRouter(init) {\n  const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : void 0;\n  const isBrowser3 = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n  invariant(\n    init.routes.length > 0,\n    \"You must provide a non-empty routes array to createRouter\"\n  );\n  let hydrationRouteProperties2 = init.hydrationRouteProperties || [];\n  let _mapRouteProperties = init.mapRouteProperties || defaultMapRouteProperties;\n  let mapRouteProperties2 = _mapRouteProperties;\n  if (init.instrumentations) {\n    let instrumentations = init.instrumentations;\n    mapRouteProperties2 = (route) => {\n      return {\n        ..._mapRouteProperties(route),\n        ...getRouteInstrumentationUpdates(\n          instrumentations.map((i) => i.route).filter(Boolean),\n          route\n        )\n      };\n    };\n  }\n  let manifest = {};\n  let dataRoutes = new DataRoutes(\n    convertRoutesToDataRoutes(\n      init.routes,\n      mapRouteProperties2,\n      void 0,\n      manifest\n    )\n  );\n  let basename = init.basename || \"/\";\n  if (!basename.startsWith(\"/\")) {\n    basename = `/${basename}`;\n  }\n  let dataStrategyImpl = init.dataStrategy || defaultDataStrategyWithMiddleware;\n  let future = {\n    ...init.future\n  };\n  let unlistenHistory = null;\n  let subscribers = /* @__PURE__ */ new Set();\n  let bufferedInitialStateUpdate = null;\n  let savedScrollPositions2 = null;\n  let getScrollRestorationKey2 = null;\n  let getScrollPosition = null;\n  let initialScrollRestored = init.hydrationData != null;\n  let initialMatches = matchRoutesImpl(\n    dataRoutes.activeRoutes,\n    init.history.location,\n    basename,\n    false,\n    dataRoutes.branches\n  );\n  let initialMatchesIsFOW = false;\n  let initialErrors = null;\n  let initialized;\n  let renderFallback;\n  if (initialMatches == null && !init.patchRoutesOnNavigation) {\n    let error = getInternalRouterError(404, {\n      pathname: init.history.location.pathname\n    });\n    let { matches, route } = getShortCircuitMatches(dataRoutes.activeRoutes);\n    initialized = true;\n    renderFallback = !initialized;\n    initialMatches = matches;\n    initialErrors = { [route.id]: error };\n  } else {\n    if (initialMatches && !init.hydrationData) {\n      let fogOfWar = checkFogOfWar(\n        initialMatches,\n        dataRoutes.activeRoutes,\n        init.history.location.pathname\n      );\n      if (fogOfWar.active) {\n        initialMatches = null;\n      }\n    }\n    if (!initialMatches) {\n      initialized = false;\n      renderFallback = !initialized;\n      initialMatches = [];\n      let fogOfWar = checkFogOfWar(\n        null,\n        dataRoutes.activeRoutes,\n        init.history.location.pathname\n      );\n      if (fogOfWar.active && fogOfWar.matches) {\n        initialMatchesIsFOW = true;\n        initialMatches = fogOfWar.matches;\n      }\n    } else if (initialMatches.some((m) => m.route.lazy)) {\n      initialized = false;\n      renderFallback = !initialized;\n    } else if (!initialMatches.some((m) => routeHasLoaderOrMiddleware(m.route))) {\n      initialized = true;\n      renderFallback = !initialized;\n    } else {\n      let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n      let errors = init.hydrationData ? init.hydrationData.errors : null;\n      let relevantMatches = initialMatches;\n      if (errors) {\n        let idx = initialMatches.findIndex(\n          (m) => errors[m.route.id] !== void 0\n        );\n        relevantMatches = relevantMatches.slice(0, idx + 1);\n      }\n      renderFallback = false;\n      initialized = true;\n      relevantMatches.forEach((m) => {\n        let status = getRouteHydrationStatus(m.route, loaderData, errors);\n        renderFallback = renderFallback || status.renderFallback;\n        initialized = initialized && !status.shouldLoad;\n      });\n    }\n  }\n  let router;\n  let state = {\n    historyAction: init.history.action,\n    location: init.history.location,\n    matches: initialMatches,\n    initialized,\n    renderFallback,\n    navigation: IDLE_NAVIGATION,\n    // Don't restore on initial updateState() if we were SSR'd\n    restoreScrollPosition: init.hydrationData != null ? false : null,\n    preventScrollReset: false,\n    revalidation: \"idle\",\n    loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n    actionData: init.hydrationData && init.hydrationData.actionData || null,\n    errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n    fetchers: /* @__PURE__ */ new Map(),\n    blockers: /* @__PURE__ */ new Map()\n  };\n  let pendingAction = \"POP\" /* Pop */;\n  let pendingPopstateNavigationDfd = null;\n  let pendingPreventScrollReset = false;\n  let pendingNavigationController;\n  let pendingViewTransitionEnabled = false;\n  let appliedViewTransitions = /* @__PURE__ */ new Map();\n  let removePageHideEventListener = null;\n  let isUninterruptedRevalidation = false;\n  let isRevalidationRequired = false;\n  let cancelledFetcherLoads = /* @__PURE__ */ new Set();\n  let fetchControllers = /* @__PURE__ */ new Map();\n  let incrementingLoadId = 0;\n  let pendingNavigationLoadId = -1;\n  let fetchReloadIds = /* @__PURE__ */ new Map();\n  let fetchRedirectIds = /* @__PURE__ */ new Set();\n  let fetchLoadMatches = /* @__PURE__ */ new Map();\n  let activeFetchers = /* @__PURE__ */ new Map();\n  let fetchersQueuedForDeletion = /* @__PURE__ */ new Set();\n  let blockerFunctions = /* @__PURE__ */ new Map();\n  let unblockBlockerHistoryUpdate = void 0;\n  let pendingRevalidationDfd = null;\n  function initialize() {\n    unlistenHistory = init.history.listen(\n      ({ action: historyAction, location, delta }) => {\n        if (unblockBlockerHistoryUpdate) {\n          unblockBlockerHistoryUpdate();\n          unblockBlockerHistoryUpdate = void 0;\n          return;\n        }\n        warning(\n          blockerFunctions.size === 0 || delta != null,\n          \"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs.  This can also happen if you are using createHashRouter and the user manually changes the URL.\"\n        );\n        let blockerKey = shouldBlockNavigation({\n          currentLocation: state.location,\n          nextLocation: location,\n          historyAction\n        });\n        if (blockerKey && delta != null) {\n          let nextHistoryUpdatePromise = new Promise((resolve) => {\n            unblockBlockerHistoryUpdate = resolve;\n          });\n          init.history.go(delta * -1);\n          updateBlocker(blockerKey, {\n            state: \"blocked\",\n            location,\n            proceed() {\n              updateBlocker(blockerKey, {\n                state: \"proceeding\",\n                proceed: void 0,\n                reset: void 0,\n                location\n              });\n              nextHistoryUpdatePromise.then(() => init.history.go(delta));\n            },\n            reset() {\n              let blockers = new Map(state.blockers);\n              blockers.set(blockerKey, IDLE_BLOCKER);\n              updateState({ blockers });\n            }\n          });\n          pendingPopstateNavigationDfd?.resolve();\n          pendingPopstateNavigationDfd = null;\n          return;\n        }\n        return startNavigation(historyAction, location);\n      }\n    );\n    if (isBrowser3) {\n      restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n      let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n      routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n      removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n    }\n    if (!state.initialized) {\n      startNavigation(\"POP\" /* Pop */, state.location, {\n        initialHydration: true\n      });\n    }\n    return router;\n  }\n  function dispose() {\n    if (unlistenHistory) {\n      unlistenHistory();\n    }\n    if (removePageHideEventListener) {\n      removePageHideEventListener();\n    }\n    subscribers.clear();\n    pendingNavigationController && pendingNavigationController.abort();\n    state.fetchers.forEach((_, key) => deleteFetcher(state.fetchers, key));\n    state.blockers.forEach((_, key) => deleteBlocker(key));\n  }\n  function subscribe(fn) {\n    subscribers.add(fn);\n    if (bufferedInitialStateUpdate) {\n      let { newErrors } = bufferedInitialStateUpdate;\n      bufferedInitialStateUpdate = null;\n      fn(state, {\n        deletedFetchers: [],\n        newErrors,\n        viewTransitionOpts: void 0,\n        flushSync: false\n      });\n    }\n    return () => subscribers.delete(fn);\n  }\n  function updateState(newState, opts = {}) {\n    if (newState.matches) {\n      newState.matches = newState.matches.map((m) => {\n        let route = manifest[m.route.id];\n        let matchRoute = m.route;\n        if (matchRoute.element !== route.element || matchRoute.errorElement !== route.errorElement || matchRoute.hydrateFallbackElement !== route.hydrateFallbackElement) {\n          return {\n            ...m,\n            route\n          };\n        }\n        return m;\n      });\n    }\n    state = {\n      ...state,\n      ...newState\n    };\n    let unmountedFetchers = [];\n    let mountedFetchers = [];\n    state.fetchers.forEach((fetcher, key) => {\n      if (fetcher.state === \"idle\") {\n        if (fetchersQueuedForDeletion.has(key)) {\n          unmountedFetchers.push(key);\n        } else {\n          mountedFetchers.push(key);\n        }\n      }\n    });\n    fetchersQueuedForDeletion.forEach((key) => {\n      if (!state.fetchers.has(key) && !fetchControllers.has(key)) {\n        unmountedFetchers.push(key);\n      }\n    });\n    if (subscribers.size === 0) {\n      bufferedInitialStateUpdate = { newErrors: newState.errors ?? null };\n    }\n    [...subscribers].forEach(\n      (subscriber) => subscriber(state, {\n        deletedFetchers: unmountedFetchers,\n        newErrors: newState.errors ?? null,\n        viewTransitionOpts: opts.viewTransitionOpts,\n        flushSync: opts.flushSync === true\n      })\n    );\n    unmountedFetchers.forEach((key) => deleteFetcher(state.fetchers, key));\n    mountedFetchers.forEach((key) => state.fetchers.delete(key));\n  }\n  function completeNavigation(location, newState, { flushSync } = {}) {\n    let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && location.state?._isRedirect !== true;\n    let actionData;\n    if (newState.actionData) {\n      if (Object.keys(newState.actionData).length > 0) {\n        actionData = newState.actionData;\n      } else {\n        actionData = null;\n      }\n    } else if (isActionReload) {\n      actionData = state.actionData;\n    } else {\n      actionData = null;\n    }\n    let loaderData = newState.loaderData ? mergeLoaderData(\n      state.loaderData,\n      newState.loaderData,\n      newState.matches || [],\n      newState.errors\n    ) : state.loaderData;\n    let blockers = state.blockers;\n    if (blockers.size > 0) {\n      blockers = new Map(blockers);\n      blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n    }\n    let restoreScrollPosition = isUninterruptedRevalidation ? false : getSavedScrollPosition(location, newState.matches || state.matches);\n    let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && location.state?._isRedirect !== true;\n    dataRoutes.commitHmrRoutes();\n    if (isUninterruptedRevalidation) {\n    } else if (pendingAction === \"POP\" /* Pop */) {\n    } else if (pendingAction === \"PUSH\" /* Push */) {\n      init.history.push(location, location.state);\n    } else if (pendingAction === \"REPLACE\" /* Replace */) {\n      init.history.replace(location, location.state);\n    }\n    let viewTransitionOpts;\n    if (pendingAction === \"POP\" /* Pop */) {\n      let priorPaths = appliedViewTransitions.get(state.location.pathname);\n      if (priorPaths && priorPaths.has(location.pathname)) {\n        viewTransitionOpts = {\n          currentLocation: state.location,\n          nextLocation: location\n        };\n      } else if (appliedViewTransitions.has(location.pathname)) {\n        viewTransitionOpts = {\n          currentLocation: location,\n          nextLocation: state.location\n        };\n      }\n    } else if (pendingViewTransitionEnabled) {\n      let toPaths = appliedViewTransitions.get(state.location.pathname);\n      if (toPaths) {\n        toPaths.add(location.pathname);\n      } else {\n        toPaths = /* @__PURE__ */ new Set([location.pathname]);\n        appliedViewTransitions.set(state.location.pathname, toPaths);\n      }\n      viewTransitionOpts = {\n        currentLocation: state.location,\n        nextLocation: location\n      };\n    }\n    updateState(\n      {\n        ...newState,\n        // matches, errors, fetchers go through as-is\n        actionData,\n        loaderData,\n        historyAction: pendingAction,\n        location,\n        initialized: true,\n        renderFallback: false,\n        navigation: IDLE_NAVIGATION,\n        revalidation: \"idle\",\n        restoreScrollPosition,\n        preventScrollReset,\n        blockers\n      },\n      {\n        viewTransitionOpts,\n        flushSync: flushSync === true\n      }\n    );\n    pendingAction = \"POP\" /* Pop */;\n    pendingPreventScrollReset = false;\n    pendingViewTransitionEnabled = false;\n    isUninterruptedRevalidation = false;\n    isRevalidationRequired = false;\n    pendingPopstateNavigationDfd?.resolve();\n    pendingPopstateNavigationDfd = null;\n    pendingRevalidationDfd?.resolve();\n    pendingRevalidationDfd = null;\n  }\n  async function navigate(to, opts) {\n    pendingPopstateNavigationDfd?.resolve();\n    pendingPopstateNavigationDfd = null;\n    if (typeof to === \"number\") {\n      if (!pendingPopstateNavigationDfd) {\n        pendingPopstateNavigationDfd = createDeferred();\n      }\n      let promise = pendingPopstateNavigationDfd.promise;\n      init.history.go(to);\n      return promise;\n    }\n    let normalizedPath = normalizeTo(\n      state.location,\n      state.matches,\n      basename,\n      to,\n      opts?.fromRouteId,\n      opts?.relative\n    );\n    let { path, submission, error } = normalizeNavigateOptions(\n      false,\n      normalizedPath,\n      opts\n    );\n    let maskPath;\n    if (opts?.mask) {\n      let partialPath = typeof opts.mask === \"string\" ? parsePath(opts.mask) : {\n        ...state.location.mask,\n        ...opts.mask\n      };\n      maskPath = {\n        pathname: \"\",\n        search: \"\",\n        hash: \"\",\n        ...partialPath\n      };\n    }\n    let currentLocation = state.location;\n    let nextLocation = createLocation(\n      currentLocation,\n      path,\n      opts && opts.state,\n      void 0,\n      maskPath\n    );\n    nextLocation = {\n      ...nextLocation,\n      ...init.history.encodeLocation(nextLocation)\n    };\n    let userReplace = opts && opts.replace != null ? opts.replace : void 0;\n    let historyAction = \"PUSH\" /* Push */;\n    if (userReplace === true) {\n      historyAction = \"REPLACE\" /* Replace */;\n    } else if (userReplace === false) {\n    } else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n      historyAction = \"REPLACE\" /* Replace */;\n    }\n    let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : void 0;\n    let flushSync = (opts && opts.flushSync) === true;\n    let blockerKey = shouldBlockNavigation({\n      currentLocation,\n      nextLocation,\n      historyAction\n    });\n    if (blockerKey) {\n      updateBlocker(blockerKey, {\n        state: \"blocked\",\n        location: nextLocation,\n        proceed() {\n          updateBlocker(blockerKey, {\n            state: \"proceeding\",\n            proceed: void 0,\n            reset: void 0,\n            location: nextLocation\n          });\n          navigate(to, opts);\n        },\n        reset() {\n          let blockers = new Map(state.blockers);\n          blockers.set(blockerKey, IDLE_BLOCKER);\n          updateState({ blockers });\n        }\n      });\n      return;\n    }\n    await startNavigation(historyAction, nextLocation, {\n      submission,\n      // Send through the formData serialization error if we have one so we can\n      // render at the right error boundary after we match routes\n      pendingError: error,\n      preventScrollReset,\n      replace: opts && opts.replace,\n      enableViewTransition: opts && opts.viewTransition,\n      flushSync,\n      callSiteDefaultShouldRevalidate: opts && opts.defaultShouldRevalidate\n    });\n  }\n  function revalidate() {\n    if (!pendingRevalidationDfd) {\n      pendingRevalidationDfd = createDeferred();\n    }\n    interruptActiveLoads();\n    updateState({ revalidation: \"loading\" });\n    let promise = pendingRevalidationDfd.promise;\n    if (state.navigation.state === \"submitting\") {\n      return promise;\n    }\n    if (state.navigation.state === \"idle\") {\n      startNavigation(state.historyAction, state.location, {\n        startUninterruptedRevalidation: true\n      });\n      return promise;\n    }\n    startNavigation(\n      pendingAction || state.historyAction,\n      state.navigation.location,\n      {\n        overrideNavigation: state.navigation,\n        // Proxy through any rending view transition\n        enableViewTransition: pendingViewTransitionEnabled === true\n      }\n    );\n    return promise;\n  }\n  async function startNavigation(historyAction, location, opts) {\n    pendingNavigationController && pendingNavigationController.abort();\n    pendingNavigationController = null;\n    pendingAction = historyAction;\n    isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n    saveScrollPosition(state.location, state.matches);\n    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n    pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n    let routesToUse = dataRoutes.activeRoutes;\n    let matches = opts?.initialHydration && state.matches && state.matches.length > 0 && !initialMatchesIsFOW ? (\n      // `matchRoutes()` has already been called if we're in here via `router.initialize()`\n      state.matches\n    ) : matchRoutesImpl(\n      routesToUse,\n      location,\n      basename,\n      false,\n      dataRoutes.branches\n    );\n    let flushSync = (opts && opts.flushSync) === true;\n    if (matches && state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n      completeNavigation(location, { matches }, { flushSync });\n      return;\n    }\n    let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n    if (fogOfWar.active && fogOfWar.matches) {\n      matches = fogOfWar.matches;\n    }\n    if (!matches) {\n      let { error, notFoundMatches, route } = handleNavigational404(\n        location.pathname\n      );\n      completeNavigation(\n        location,\n        {\n          matches: notFoundMatches,\n          loaderData: {},\n          errors: {\n            [route.id]: error\n          }\n        },\n        { flushSync }\n      );\n      return;\n    }\n    let loadingNavigation = opts && opts.overrideNavigation ? {\n      ...opts.overrideNavigation,\n      matches,\n      historyAction\n    } : void 0;\n    pendingNavigationController = new AbortController();\n    let request = createClientSideRequest(\n      init.history,\n      location,\n      pendingNavigationController.signal,\n      opts && opts.submission\n    );\n    let scopedContext = init.getContext ? await init.getContext() : new RouterContextProvider();\n    let pendingActionResult;\n    if (opts && opts.pendingError) {\n      pendingActionResult = [\n        findNearestBoundary(matches).route.id,\n        { type: \"error\" /* error */, error: opts.pendingError }\n      ];\n    } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n      let actionResult = await handleAction(\n        request,\n        location,\n        opts.submission,\n        matches,\n        historyAction,\n        scopedContext,\n        fogOfWar.active,\n        opts && opts.initialHydration === true,\n        { replace: opts.replace, flushSync }\n      );\n      if (actionResult.shortCircuited) {\n        return;\n      }\n      if (actionResult.pendingActionResult) {\n        let [routeId, result] = actionResult.pendingActionResult;\n        if (isErrorResult(result) && isRouteErrorResponse(result.error) && result.error.status === 404) {\n          pendingNavigationController = null;\n          completeNavigation(location, {\n            matches: actionResult.matches,\n            loaderData: {},\n            errors: {\n              [routeId]: result.error\n            }\n          });\n          return;\n        }\n      }\n      matches = actionResult.matches || matches;\n      pendingActionResult = actionResult.pendingActionResult;\n      loadingNavigation = getLoadingNavigation(\n        location,\n        matches,\n        historyAction,\n        opts.submission\n      );\n      flushSync = false;\n      fogOfWar.active = false;\n      request = createClientSideRequest(\n        init.history,\n        request.url,\n        request.signal\n      );\n    }\n    let {\n      shortCircuited,\n      matches: updatedMatches,\n      loaderData,\n      errors,\n      workingFetchers\n    } = await handleLoaders(\n      request,\n      location,\n      matches,\n      historyAction,\n      scopedContext,\n      fogOfWar.active,\n      loadingNavigation,\n      opts && opts.submission,\n      opts && opts.fetcherSubmission,\n      opts && opts.replace,\n      opts && opts.initialHydration === true,\n      flushSync,\n      pendingActionResult,\n      opts && opts.callSiteDefaultShouldRevalidate\n    );\n    if (shortCircuited) {\n      return;\n    }\n    pendingNavigationController = null;\n    completeNavigation(location, {\n      matches: updatedMatches || matches,\n      ...getActionDataForCommit(pendingActionResult),\n      loaderData,\n      errors,\n      ...workingFetchers ? { fetchers: workingFetchers } : {}\n    });\n  }\n  async function handleAction(request, location, submission, matches, historyAction, scopedContext, isFogOfWar, initialHydration, opts = {}) {\n    interruptActiveLoads();\n    let navigation = getSubmittingNavigation(\n      location,\n      matches,\n      historyAction,\n      submission\n    );\n    updateState({ navigation }, { flushSync: opts.flushSync === true });\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(\n        matches,\n        location.pathname,\n        request.signal\n      );\n      if (discoverResult.type === \"aborted\") {\n        return { shortCircuited: true };\n      } else if (discoverResult.type === \"error\") {\n        if (discoverResult.partialMatches.length === 0) {\n          let { matches: matches2, route } = getShortCircuitMatches(\n            dataRoutes.activeRoutes\n          );\n          return {\n            matches: matches2,\n            pendingActionResult: [\n              route.id,\n              {\n                type: \"error\" /* error */,\n                error: discoverResult.error\n              }\n            ]\n          };\n        }\n        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n        return {\n          matches: discoverResult.partialMatches,\n          pendingActionResult: [\n            boundaryId,\n            {\n              type: \"error\" /* error */,\n              error: discoverResult.error\n            }\n          ]\n        };\n      } else if (!discoverResult.matches) {\n        let { notFoundMatches, error, route } = handleNavigational404(\n          location.pathname\n        );\n        return {\n          matches: notFoundMatches,\n          pendingActionResult: [\n            route.id,\n            {\n              type: \"error\" /* error */,\n              error\n            }\n          ]\n        };\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n    let result;\n    let actionMatch = getTargetMatch(matches, location);\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      result = {\n        type: \"error\" /* error */,\n        error: getInternalRouterError(405, {\n          method: request.method,\n          pathname: location.pathname,\n          routeId: actionMatch.route.id\n        })\n      };\n    } else {\n      let dsMatches = getTargetedDataStrategyMatches(\n        mapRouteProperties2,\n        manifest,\n        request,\n        location,\n        matches,\n        actionMatch,\n        initialHydration ? [] : hydrationRouteProperties2,\n        scopedContext\n      );\n      let results = await callDataStrategy(\n        request,\n        location,\n        dsMatches,\n        scopedContext,\n        null\n      );\n      result = results[actionMatch.route.id];\n      if (!result) {\n        for (let match of matches) {\n          if (results[match.route.id]) {\n            result = results[match.route.id];\n            break;\n          }\n        }\n      }\n      if (request.signal.aborted) {\n        return { shortCircuited: true };\n      }\n    }\n    if (isRedirectResult(result)) {\n      let replace2;\n      if (opts && opts.replace != null) {\n        replace2 = opts.replace;\n      } else {\n        let location2 = normalizeRedirectLocation(\n          result.response.headers.get(\"Location\"),\n          new URL(request.url),\n          basename,\n          init.history\n        );\n        replace2 = location2 === state.location.pathname + state.location.search;\n      }\n      await startRedirectNavigation(request, result, true, {\n        submission,\n        replace: replace2\n      });\n      return { shortCircuited: true };\n    }\n    if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n      if ((opts && opts.replace) !== true) {\n        pendingAction = \"PUSH\" /* Push */;\n      }\n      return {\n        matches,\n        pendingActionResult: [\n          boundaryMatch.route.id,\n          result,\n          actionMatch.route.id\n        ]\n      };\n    }\n    return {\n      matches,\n      pendingActionResult: [actionMatch.route.id, result]\n    };\n  }\n  async function handleLoaders(request, location, matches, historyAction, scopedContext, isFogOfWar, overrideNavigation, submission, fetcherSubmission, replace2, initialHydration, flushSync, pendingActionResult, callSiteDefaultShouldRevalidate) {\n    let loadingNavigation = overrideNavigation || getLoadingNavigation(location, matches, historyAction, submission);\n    let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n    let shouldUpdateNavigationState = !isUninterruptedRevalidation && !initialHydration;\n    if (isFogOfWar) {\n      if (shouldUpdateNavigationState) {\n        let actionData = getUpdatedActionData(pendingActionResult);\n        updateState(\n          {\n            navigation: loadingNavigation,\n            ...actionData !== void 0 ? { actionData } : {}\n          },\n          {\n            flushSync\n          }\n        );\n      }\n      let discoverResult = await discoverRoutes(\n        matches,\n        location.pathname,\n        request.signal\n      );\n      if (discoverResult.type === \"aborted\") {\n        return { shortCircuited: true };\n      } else if (discoverResult.type === \"error\") {\n        if (discoverResult.partialMatches.length === 0) {\n          let { matches: matches2, route } = getShortCircuitMatches(\n            dataRoutes.activeRoutes\n          );\n          return {\n            matches: matches2,\n            loaderData: {},\n            errors: {\n              [route.id]: discoverResult.error\n            }\n          };\n        }\n        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n        return {\n          matches: discoverResult.partialMatches,\n          loaderData: {},\n          errors: {\n            [boundaryId]: discoverResult.error\n          }\n        };\n      } else if (!discoverResult.matches) {\n        let { error, notFoundMatches, route } = handleNavigational404(\n          location.pathname\n        );\n        return {\n          matches: notFoundMatches,\n          loaderData: {},\n          errors: {\n            [route.id]: error\n          }\n        };\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n    let routesToUse = dataRoutes.activeRoutes;\n    let { dsMatches, revalidatingFetchers } = getMatchesToLoad(\n      request,\n      scopedContext,\n      mapRouteProperties2,\n      manifest,\n      init.history,\n      state,\n      matches,\n      activeSubmission,\n      location,\n      initialHydration ? [] : hydrationRouteProperties2,\n      initialHydration === true,\n      isRevalidationRequired,\n      cancelledFetcherLoads,\n      fetchersQueuedForDeletion,\n      fetchLoadMatches,\n      fetchRedirectIds,\n      routesToUse,\n      basename,\n      init.patchRoutesOnNavigation != null,\n      dataRoutes.branches,\n      pendingActionResult,\n      callSiteDefaultShouldRevalidate\n    );\n    pendingNavigationLoadId = ++incrementingLoadId;\n    if (!init.dataStrategy && !dsMatches.some((m) => m.shouldLoad) && !dsMatches.some(\n      (m) => m.route.middleware && m.route.middleware.length > 0\n    ) && revalidatingFetchers.length === 0) {\n      let workingFetchers2 = new Map(state.fetchers);\n      let didUpdateFetcherRedirects2 = markFetchRedirectsDone(workingFetchers2);\n      completeNavigation(\n        location,\n        {\n          matches,\n          loaderData: {},\n          // Commit pending error if we're short circuiting\n          errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? { [pendingActionResult[0]]: pendingActionResult[1].error } : null,\n          ...getActionDataForCommit(pendingActionResult),\n          ...didUpdateFetcherRedirects2 ? { fetchers: workingFetchers2 } : {}\n        },\n        { flushSync }\n      );\n      return { shortCircuited: true };\n    }\n    if (shouldUpdateNavigationState) {\n      let updates = {};\n      if (!isFogOfWar) {\n        updates.navigation = loadingNavigation;\n        let actionData = getUpdatedActionData(pendingActionResult);\n        if (actionData !== void 0) {\n          updates.actionData = actionData;\n        }\n      }\n      if (revalidatingFetchers.length > 0) {\n        updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n      }\n      updateState(updates, { flushSync });\n    }\n    revalidatingFetchers.forEach((rf) => {\n      abortFetcher(rf.key);\n      if (rf.controller) {\n        fetchControllers.set(rf.key, rf.controller);\n      }\n    });\n    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.addEventListener(\n        \"abort\",\n        abortPendingFetchRevalidations\n      );\n    }\n    let { loaderResults, fetcherResults } = await callLoadersAndMaybeResolveData(\n      dsMatches,\n      revalidatingFetchers,\n      request,\n      location,\n      scopedContext\n    );\n    if (request.signal.aborted) {\n      return { shortCircuited: true };\n    }\n    if (pendingNavigationController) {\n      pendingNavigationController.signal.removeEventListener(\n        \"abort\",\n        abortPendingFetchRevalidations\n      );\n    }\n    revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n    let redirect2 = findRedirect(loaderResults);\n    if (redirect2) {\n      await startRedirectNavigation(request, redirect2.result, true, {\n        replace: replace2\n      });\n      return { shortCircuited: true };\n    }\n    redirect2 = findRedirect(fetcherResults);\n    if (redirect2) {\n      fetchRedirectIds.add(redirect2.key);\n      await startRedirectNavigation(request, redirect2.result, true, {\n        replace: replace2\n      });\n      return { shortCircuited: true };\n    }\n    let workingFetchers = new Map(state.fetchers);\n    let { loaderData, errors } = processLoaderData(\n      state,\n      matches,\n      loaderResults,\n      pendingActionResult,\n      revalidatingFetchers,\n      fetcherResults,\n      workingFetchers\n    );\n    if (initialHydration && state.errors) {\n      errors = { ...state.errors, ...errors };\n    }\n    let didUpdateFetcherRedirects = markFetchRedirectsDone(workingFetchers);\n    let didAbortFetchLoads = abortStaleFetchLoads(\n      pendingNavigationLoadId,\n      workingFetchers\n    );\n    let shouldUpdateFetchers = didUpdateFetcherRedirects || didAbortFetchLoads || revalidatingFetchers.length > 0;\n    return {\n      matches,\n      loaderData,\n      errors,\n      ...shouldUpdateFetchers ? { workingFetchers } : {}\n    };\n  }\n  function getUpdatedActionData(pendingActionResult) {\n    if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n      return {\n        [pendingActionResult[0]]: pendingActionResult[1].data\n      };\n    } else if (state.actionData) {\n      if (Object.keys(state.actionData).length === 0) {\n        return null;\n      } else {\n        return state.actionData;\n      }\n    }\n  }\n  function getUpdatedRevalidatingFetchers(revalidatingFetchers) {\n    let workingFetchers = new Map(state.fetchers);\n    revalidatingFetchers.forEach((rf) => {\n      let fetcher = workingFetchers.get(rf.key);\n      let revalidatingFetcher = getLoadingFetcher(\n        void 0,\n        fetcher ? fetcher.data : void 0\n      );\n      workingFetchers.set(rf.key, revalidatingFetcher);\n    });\n    return workingFetchers;\n  }\n  async function fetch2(key, routeId, href, opts) {\n    abortFetcher(key);\n    let flushSync = (opts && opts.flushSync) === true;\n    let routesToUse = dataRoutes.activeRoutes;\n    let normalizedPath = normalizeTo(\n      state.location,\n      state.matches,\n      basename,\n      href,\n      routeId,\n      opts?.relative\n    );\n    let matches = matchRoutesImpl(\n      routesToUse,\n      normalizedPath,\n      basename,\n      false,\n      dataRoutes.branches\n    );\n    let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n    if (fogOfWar.active && fogOfWar.matches) {\n      matches = fogOfWar.matches;\n    }\n    if (!matches) {\n      setFetcherError(\n        key,\n        routeId,\n        getInternalRouterError(404, { pathname: normalizedPath }),\n        { flushSync }\n      );\n      return;\n    }\n    let { path, submission, error } = normalizeNavigateOptions(\n      true,\n      normalizedPath,\n      opts\n    );\n    if (error) {\n      setFetcherError(key, routeId, error, { flushSync });\n      return;\n    }\n    let scopedContext = init.getContext ? await init.getContext() : new RouterContextProvider();\n    let preventScrollReset = (opts && opts.preventScrollReset) === true;\n    if (submission && isMutationMethod(submission.formMethod)) {\n      await handleFetcherAction(\n        key,\n        routeId,\n        path,\n        matches,\n        scopedContext,\n        fogOfWar.active,\n        flushSync,\n        preventScrollReset,\n        submission,\n        opts && opts.defaultShouldRevalidate\n      );\n      return;\n    }\n    fetchLoadMatches.set(key, { routeId, path });\n    await handleFetcherLoader(\n      key,\n      routeId,\n      path,\n      matches,\n      scopedContext,\n      fogOfWar.active,\n      flushSync,\n      preventScrollReset,\n      submission\n    );\n  }\n  async function handleFetcherAction(key, routeId, path, requestMatches, scopedContext, isFogOfWar, flushSync, preventScrollReset, submission, callSiteDefaultShouldRevalidate) {\n    interruptActiveLoads();\n    fetchLoadMatches.delete(key);\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n      flushSync\n    });\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      init.history,\n      path,\n      abortController.signal,\n      submission\n    );\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(\n        requestMatches,\n        new URL(fetchRequest.url).pathname,\n        fetchRequest.signal,\n        key\n      );\n      if (discoverResult.type === \"aborted\") {\n        return;\n      } else if (discoverResult.type === \"error\") {\n        setFetcherError(key, routeId, discoverResult.error, { flushSync });\n        return;\n      } else if (!discoverResult.matches) {\n        setFetcherError(\n          key,\n          routeId,\n          getInternalRouterError(404, { pathname: path }),\n          { flushSync }\n        );\n        return;\n      } else {\n        requestMatches = discoverResult.matches;\n      }\n    }\n    let match = getTargetMatch(requestMatches, path);\n    if (!match.route.action && !match.route.lazy) {\n      let error = getInternalRouterError(405, {\n        method: submission.formMethod,\n        pathname: path,\n        routeId\n      });\n      setFetcherError(key, routeId, error, { flushSync });\n      return;\n    }\n    fetchControllers.set(key, abortController);\n    let originatingLoadId = incrementingLoadId;\n    let fetchMatches = getTargetedDataStrategyMatches(\n      mapRouteProperties2,\n      manifest,\n      fetchRequest,\n      path,\n      requestMatches,\n      match,\n      hydrationRouteProperties2,\n      scopedContext\n    );\n    let actionResults = await callDataStrategy(\n      fetchRequest,\n      path,\n      fetchMatches,\n      scopedContext,\n      key\n    );\n    let actionResult = actionResults[match.route.id];\n    if (!actionResult) {\n      for (let match2 of fetchMatches) {\n        if (actionResults[match2.route.id]) {\n          actionResult = actionResults[match2.route.id];\n          break;\n        }\n      }\n    }\n    if (fetchRequest.signal.aborted) {\n      if (fetchControllers.get(key) === abortController) {\n        fetchControllers.delete(key);\n      }\n      return;\n    }\n    if (fetchersQueuedForDeletion.has(key)) {\n      if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n        updateFetcherState(key, getDoneFetcher(void 0));\n        return;\n      }\n    } else {\n      if (isRedirectResult(actionResult)) {\n        fetchControllers.delete(key);\n        if (pendingNavigationLoadId > originatingLoadId) {\n          updateFetcherState(key, getDoneFetcher(void 0));\n          return;\n        } else {\n          fetchRedirectIds.add(key);\n          updateFetcherState(key, getLoadingFetcher(submission));\n          return startRedirectNavigation(fetchRequest, actionResult, false, {\n            fetcherSubmission: submission,\n            preventScrollReset\n          });\n        }\n      }\n      if (isErrorResult(actionResult)) {\n        setFetcherError(key, routeId, actionResult.error);\n        return;\n      }\n    }\n    let nextLocation = state.navigation.location || state.location;\n    let revalidationRequest = createClientSideRequest(\n      init.history,\n      nextLocation,\n      abortController.signal\n    );\n    let routesToUse = dataRoutes.activeRoutes;\n    let matches = state.navigation.state !== \"idle\" ? matchRoutesImpl(\n      routesToUse,\n      state.navigation.location,\n      basename,\n      false,\n      dataRoutes.branches\n    ) : state.matches;\n    invariant(matches, \"Didn't find any matches after fetcher action\");\n    let loadId = ++incrementingLoadId;\n    fetchReloadIds.set(key, loadId);\n    let { dsMatches, revalidatingFetchers } = getMatchesToLoad(\n      revalidationRequest,\n      scopedContext,\n      mapRouteProperties2,\n      manifest,\n      init.history,\n      state,\n      matches,\n      submission,\n      nextLocation,\n      hydrationRouteProperties2,\n      false,\n      isRevalidationRequired,\n      cancelledFetcherLoads,\n      fetchersQueuedForDeletion,\n      fetchLoadMatches,\n      fetchRedirectIds,\n      routesToUse,\n      basename,\n      init.patchRoutesOnNavigation != null,\n      dataRoutes.branches,\n      [match.route.id, actionResult],\n      callSiteDefaultShouldRevalidate\n    );\n    let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n    let workingFetchers = new Map(state.fetchers);\n    workingFetchers.set(key, loadFetcher);\n    revalidatingFetchers.filter((rf) => rf.key !== key).forEach((rf) => {\n      let staleKey = rf.key;\n      let existingFetcher2 = workingFetchers.get(staleKey);\n      let revalidatingFetcher = getLoadingFetcher(\n        void 0,\n        existingFetcher2 ? existingFetcher2.data : void 0\n      );\n      workingFetchers.set(staleKey, revalidatingFetcher);\n      abortFetcher(staleKey);\n      if (rf.controller) {\n        fetchControllers.set(staleKey, rf.controller);\n      }\n    });\n    updateState({ fetchers: workingFetchers });\n    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n    abortController.signal.addEventListener(\n      \"abort\",\n      abortPendingFetchRevalidations\n    );\n    let { loaderResults, fetcherResults } = await callLoadersAndMaybeResolveData(\n      dsMatches,\n      revalidatingFetchers,\n      revalidationRequest,\n      nextLocation,\n      scopedContext\n    );\n    if (abortController.signal.aborted) {\n      return;\n    }\n    abortController.signal.removeEventListener(\n      \"abort\",\n      abortPendingFetchRevalidations\n    );\n    fetchReloadIds.delete(key);\n    fetchControllers.delete(key);\n    revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n    let fetcherIsMounted = state.fetchers.has(key);\n    let getRedirectStateWithDoneFetcher = (s) => {\n      if (!fetcherIsMounted) return s;\n      let workingFetchers2 = new Map(s.fetchers);\n      workingFetchers2.set(key, getDoneFetcher(actionResult.data));\n      return { ...s, fetchers: workingFetchers2 };\n    };\n    let redirect2 = findRedirect(loaderResults);\n    if (redirect2) {\n      state = getRedirectStateWithDoneFetcher(state);\n      return startRedirectNavigation(\n        revalidationRequest,\n        redirect2.result,\n        false,\n        { preventScrollReset }\n      );\n    }\n    redirect2 = findRedirect(fetcherResults);\n    if (redirect2) {\n      fetchRedirectIds.add(redirect2.key);\n      state = getRedirectStateWithDoneFetcher(state);\n      return startRedirectNavigation(\n        revalidationRequest,\n        redirect2.result,\n        false,\n        { preventScrollReset }\n      );\n    }\n    let finalFetchers = new Map(state.fetchers);\n    if (fetcherIsMounted) {\n      finalFetchers.set(key, getDoneFetcher(actionResult.data));\n    }\n    let { loaderData, errors } = processLoaderData(\n      state,\n      matches,\n      loaderResults,\n      void 0,\n      revalidatingFetchers,\n      fetcherResults,\n      finalFetchers\n    );\n    abortStaleFetchLoads(loadId, finalFetchers);\n    if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n      invariant(pendingAction, \"Expected pending action\");\n      pendingNavigationController && pendingNavigationController.abort();\n      completeNavigation(state.navigation.location, {\n        matches,\n        loaderData,\n        errors,\n        fetchers: finalFetchers\n      });\n    } else {\n      updateState({\n        errors,\n        loaderData: mergeLoaderData(\n          state.loaderData,\n          loaderData,\n          matches,\n          errors\n        ),\n        fetchers: finalFetchers\n      });\n      isRevalidationRequired = false;\n    }\n  }\n  async function handleFetcherLoader(key, routeId, path, matches, scopedContext, isFogOfWar, flushSync, preventScrollReset, submission) {\n    let existingFetcher = state.fetchers.get(key);\n    updateFetcherState(\n      key,\n      getLoadingFetcher(\n        submission,\n        existingFetcher ? existingFetcher.data : void 0\n      ),\n      { flushSync }\n    );\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      init.history,\n      path,\n      abortController.signal\n    );\n    if (isFogOfWar) {\n      let discoverResult = await discoverRoutes(\n        matches,\n        new URL(fetchRequest.url).pathname,\n        fetchRequest.signal,\n        key\n      );\n      if (discoverResult.type === \"aborted\") {\n        return;\n      } else if (discoverResult.type === \"error\") {\n        setFetcherError(key, routeId, discoverResult.error, { flushSync });\n        return;\n      } else if (!discoverResult.matches) {\n        setFetcherError(\n          key,\n          routeId,\n          getInternalRouterError(404, { pathname: path }),\n          { flushSync }\n        );\n        return;\n      } else {\n        matches = discoverResult.matches;\n      }\n    }\n    let match = getTargetMatch(matches, path);\n    fetchControllers.set(key, abortController);\n    let originatingLoadId = incrementingLoadId;\n    let dsMatches = getTargetedDataStrategyMatches(\n      mapRouteProperties2,\n      manifest,\n      fetchRequest,\n      path,\n      matches,\n      match,\n      hydrationRouteProperties2,\n      scopedContext\n    );\n    let results = await callDataStrategy(\n      fetchRequest,\n      path,\n      dsMatches,\n      scopedContext,\n      key\n    );\n    let result = results[match.route.id];\n    if (!result) {\n      for (let match2 of matches) {\n        if (results[match2.route.id]) {\n          result = results[match2.route.id];\n          break;\n        }\n      }\n    }\n    if (fetchControllers.get(key) === abortController) {\n      fetchControllers.delete(key);\n    }\n    if (fetchRequest.signal.aborted) {\n      return;\n    }\n    if (fetchersQueuedForDeletion.has(key)) {\n      updateFetcherState(key, getDoneFetcher(void 0));\n      return;\n    }\n    if (isRedirectResult(result)) {\n      if (pendingNavigationLoadId > originatingLoadId) {\n        updateFetcherState(key, getDoneFetcher(void 0));\n        return;\n      } else {\n        fetchRedirectIds.add(key);\n        await startRedirectNavigation(fetchRequest, result, false, {\n          preventScrollReset\n        });\n        return;\n      }\n    }\n    if (isErrorResult(result)) {\n      setFetcherError(key, routeId, result.error);\n      return;\n    }\n    updateFetcherState(key, getDoneFetcher(result.data));\n  }\n  async function startRedirectNavigation(request, redirect2, isNavigation, {\n    submission,\n    fetcherSubmission,\n    preventScrollReset,\n    replace: replace2\n  } = {}) {\n    if (!isNavigation) {\n      pendingPopstateNavigationDfd?.resolve();\n      pendingPopstateNavigationDfd = null;\n    }\n    if (redirect2.response.headers.has(\"X-Remix-Revalidate\")) {\n      isRevalidationRequired = true;\n    }\n    let location = redirect2.response.headers.get(\"Location\");\n    invariant(location, \"Expected a Location header on the redirect Response\");\n    location = normalizeRedirectLocation(\n      location,\n      new URL(request.url),\n      basename,\n      init.history\n    );\n    let redirectLocation = createLocation(state.location, location, {\n      _isRedirect: true\n    });\n    if (isBrowser3) {\n      let isDocumentReload = false;\n      if (redirect2.response.headers.has(\"X-Remix-Reload-Document\")) {\n        isDocumentReload = true;\n      } else if (isAbsoluteUrl(location)) {\n        const url = createBrowserURLImpl(location, true);\n        isDocumentReload = // Hard reload if it's an absolute URL to a new origin\n        url.origin !== routerWindow.location.origin || // Hard reload if it's an absolute URL that does not match our basename\n        stripBasename(url.pathname, basename) == null;\n      }\n      if (isDocumentReload) {\n        if (replace2) {\n          routerWindow.location.replace(location);\n        } else {\n          routerWindow.location.assign(location);\n        }\n        return;\n      }\n    }\n    pendingNavigationController = null;\n    let redirectNavigationType = replace2 === true || redirect2.response.headers.has(\"X-Remix-Replace\") ? \"REPLACE\" /* Replace */ : \"PUSH\" /* Push */;\n    let { formMethod, formAction, formEncType } = state.navigation;\n    if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n      submission = getSubmissionFromNavigation(state.navigation);\n    }\n    let activeSubmission = submission || fetcherSubmission;\n    if (redirectPreserveMethodStatusCodes.has(redirect2.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n      await startNavigation(redirectNavigationType, redirectLocation, {\n        submission: {\n          ...activeSubmission,\n          formAction: location\n        },\n        // Preserve these flags across redirects\n        preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n      });\n    } else {\n      let overrideNavigation = getLoadingNavigation(\n        redirectLocation,\n        [],\n        redirectNavigationType,\n        submission\n      );\n      await startNavigation(redirectNavigationType, redirectLocation, {\n        overrideNavigation,\n        // Send fetcher submissions through for shouldRevalidate\n        fetcherSubmission,\n        // Preserve these flags across redirects\n        preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n      });\n    }\n  }\n  async function callDataStrategy(request, path, matches, scopedContext, fetcherKey) {\n    let results;\n    let dataResults = {};\n    try {\n      results = await callDataStrategyImpl(\n        dataStrategyImpl,\n        request,\n        path,\n        matches,\n        fetcherKey,\n        scopedContext,\n        false\n      );\n    } catch (e) {\n      matches.filter((m) => m.shouldLoad).forEach((m) => {\n        dataResults[m.route.id] = {\n          type: \"error\" /* error */,\n          error: e\n        };\n      });\n      return dataResults;\n    }\n    if (request.signal.aborted) {\n      return dataResults;\n    }\n    if (!isMutationMethod(request.method)) {\n      for (let match of matches) {\n        if (results[match.route.id]?.type === \"error\" /* error */) {\n          break;\n        }\n        if (!results.hasOwnProperty(match.route.id) && !state.loaderData.hasOwnProperty(match.route.id) && (!state.errors || !state.errors.hasOwnProperty(match.route.id)) && match.shouldCallHandler()) {\n          results[match.route.id] = {\n            type: \"error\" /* error */,\n            result: new Error(\n              `No result returned from dataStrategy for route ${match.route.id}`\n            )\n          };\n        }\n      }\n    }\n    for (let [routeId, result] of Object.entries(results)) {\n      if (isRedirectDataStrategyResult(result)) {\n        let response = result.result;\n        dataResults[routeId] = {\n          type: \"redirect\" /* redirect */,\n          response: normalizeRelativeRoutingRedirectResponse(\n            response,\n            request,\n            routeId,\n            matches,\n            basename\n          )\n        };\n      } else {\n        dataResults[routeId] = await convertDataStrategyResultToDataResult(result);\n      }\n    }\n    return dataResults;\n  }\n  async function callLoadersAndMaybeResolveData(matches, fetchersToLoad, request, location, scopedContext) {\n    let loaderResultsPromise = callDataStrategy(\n      request,\n      location,\n      matches,\n      scopedContext,\n      null\n    );\n    let fetcherResultsPromise = Promise.all(\n      fetchersToLoad.map(async (f) => {\n        if (f.matches && f.match && f.request && f.controller) {\n          let results = await callDataStrategy(\n            f.request,\n            f.path,\n            f.matches,\n            scopedContext,\n            f.key\n          );\n          let result = results[f.match.route.id];\n          return { [f.key]: result };\n        } else {\n          return Promise.resolve({\n            [f.key]: {\n              type: \"error\" /* error */,\n              error: getInternalRouterError(404, {\n                pathname: f.path\n              })\n            }\n          });\n        }\n      })\n    );\n    let loaderResults = await loaderResultsPromise;\n    let fetcherResults = (await fetcherResultsPromise).reduce(\n      (acc, r) => Object.assign(acc, r),\n      {}\n    );\n    return {\n      loaderResults,\n      fetcherResults\n    };\n  }\n  function interruptActiveLoads() {\n    isRevalidationRequired = true;\n    fetchLoadMatches.forEach((_, key) => {\n      if (fetchControllers.has(key)) {\n        cancelledFetcherLoads.add(key);\n      }\n      abortFetcher(key);\n    });\n  }\n  function updateFetcherState(key, fetcher, opts = {}) {\n    let workingFetchers = new Map(state.fetchers);\n    workingFetchers.set(key, fetcher);\n    updateState(\n      { fetchers: workingFetchers },\n      { flushSync: (opts && opts.flushSync) === true }\n    );\n  }\n  function setFetcherError(key, routeId, error, opts = {}) {\n    let boundaryMatch = findNearestBoundary(state.matches, routeId);\n    let workingFetchers = new Map(state.fetchers);\n    deleteFetcher(workingFetchers, key);\n    updateState(\n      {\n        errors: {\n          [boundaryMatch.route.id]: error\n        },\n        fetchers: workingFetchers\n      },\n      { flushSync: (opts && opts.flushSync) === true }\n    );\n  }\n  function getFetcher(key) {\n    activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n    if (fetchersQueuedForDeletion.has(key)) {\n      fetchersQueuedForDeletion.delete(key);\n    }\n    return state.fetchers.get(key) || IDLE_FETCHER;\n  }\n  function resetFetcher(key, opts) {\n    abortFetcher(key, opts?.reason);\n    updateFetcherState(key, getDoneFetcher(null));\n  }\n  function deleteFetcher(fetchers, key) {\n    let fetcher = state.fetchers.get(key);\n    if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n      abortFetcher(key);\n    }\n    fetchLoadMatches.delete(key);\n    fetchReloadIds.delete(key);\n    fetchRedirectIds.delete(key);\n    fetchersQueuedForDeletion.delete(key);\n    cancelledFetcherLoads.delete(key);\n    fetchers.delete(key);\n  }\n  function queueFetcherForDeletion(key) {\n    let count = (activeFetchers.get(key) || 0) - 1;\n    if (count <= 0) {\n      activeFetchers.delete(key);\n      fetchersQueuedForDeletion.add(key);\n    } else {\n      activeFetchers.set(key, count);\n    }\n    updateState({ fetchers: new Map(state.fetchers) });\n  }\n  function abortFetcher(key, reason) {\n    let controller = fetchControllers.get(key);\n    if (controller) {\n      controller.abort(reason);\n      fetchControllers.delete(key);\n    }\n  }\n  function markFetchersDone(keys, fetchers) {\n    for (let key of keys) {\n      let fetcher = fetchers.get(key);\n      invariant(fetcher, `Expected fetcher: ${key}`);\n      let doneFetcher = getDoneFetcher(fetcher.data);\n      fetchers.set(key, doneFetcher);\n    }\n  }\n  function markFetchRedirectsDone(fetchers) {\n    let doneKeys = [];\n    let didUpdateFetchers = false;\n    for (let key of fetchRedirectIds) {\n      let fetcher = fetchers.get(key);\n      invariant(fetcher, `Expected fetcher: ${key}`);\n      if (fetcher.state === \"loading\") {\n        fetchRedirectIds.delete(key);\n        doneKeys.push(key);\n        didUpdateFetchers = true;\n      }\n    }\n    markFetchersDone(doneKeys, fetchers);\n    return didUpdateFetchers;\n  }\n  function abortStaleFetchLoads(landedId, fetchers) {\n    let yeetedKeys = [];\n    for (let [key, id] of fetchReloadIds) {\n      if (id < landedId) {\n        let fetcher = fetchers.get(key);\n        invariant(fetcher, `Expected fetcher: ${key}`);\n        if (fetcher.state === \"loading\") {\n          abortFetcher(key);\n          fetchReloadIds.delete(key);\n          yeetedKeys.push(key);\n        }\n      }\n    }\n    markFetchersDone(yeetedKeys, fetchers);\n    return yeetedKeys.length > 0;\n  }\n  function getBlocker(key, fn) {\n    let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n    if (blockerFunctions.get(key) !== fn) {\n      blockerFunctions.set(key, fn);\n    }\n    return blocker;\n  }\n  function deleteBlocker(key) {\n    state.blockers.delete(key);\n    blockerFunctions.delete(key);\n  }\n  function updateBlocker(key, newBlocker) {\n    let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n    invariant(\n      blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\",\n      `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n    );\n    let blockers = new Map(state.blockers);\n    blockers.set(key, newBlocker);\n    updateState({ blockers });\n  }\n  function shouldBlockNavigation({\n    currentLocation,\n    nextLocation,\n    historyAction\n  }) {\n    if (blockerFunctions.size === 0) {\n      return;\n    }\n    if (blockerFunctions.size > 1) {\n      warning(false, \"A router only supports one blocker at a time\");\n    }\n    let entries = Array.from(blockerFunctions.entries());\n    let [blockerKey, blockerFunction] = entries[entries.length - 1];\n    let blocker = state.blockers.get(blockerKey);\n    if (blocker && blocker.state === \"proceeding\") {\n      return;\n    }\n    if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n      return blockerKey;\n    }\n  }\n  function handleNavigational404(pathname) {\n    let error = getInternalRouterError(404, { pathname });\n    let routesToUse = dataRoutes.activeRoutes;\n    let { matches, route } = getShortCircuitMatches(routesToUse);\n    return { notFoundMatches: matches, route, error };\n  }\n  function enableScrollRestoration(positions, getPosition, getKey) {\n    savedScrollPositions2 = positions;\n    getScrollPosition = getPosition;\n    getScrollRestorationKey2 = getKey || null;\n    if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n      initialScrollRestored = true;\n      let y = getSavedScrollPosition(state.location, state.matches);\n      if (y != null) {\n        updateState({ restoreScrollPosition: y });\n      }\n    }\n    return () => {\n      savedScrollPositions2 = null;\n      getScrollPosition = null;\n      getScrollRestorationKey2 = null;\n    };\n  }\n  function getScrollKey(location, matches) {\n    if (getScrollRestorationKey2) {\n      let key = getScrollRestorationKey2(\n        location,\n        matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n      );\n      return key || location.key;\n    }\n    return location.key;\n  }\n  function saveScrollPosition(location, matches) {\n    if (savedScrollPositions2 && getScrollPosition) {\n      let key = getScrollKey(location, matches);\n      savedScrollPositions2[key] = getScrollPosition();\n    }\n  }\n  function getSavedScrollPosition(location, matches) {\n    if (savedScrollPositions2) {\n      let key = getScrollKey(location, matches);\n      let y = savedScrollPositions2[key];\n      if (typeof y === \"number\") {\n        return y;\n      }\n    }\n    return null;\n  }\n  function checkFogOfWar(matches, routesToUse, pathname) {\n    if (init.patchRoutesOnNavigation) {\n      let activeBranches = dataRoutes.branches;\n      if (!matches) {\n        let fogMatches = matchRoutesImpl(\n          routesToUse,\n          pathname,\n          basename,\n          true,\n          activeBranches\n        );\n        return { active: true, matches: fogMatches || [] };\n      } else {\n        if (Object.keys(matches[0].params).length > 0) {\n          let partialMatches = matchRoutesImpl(\n            routesToUse,\n            pathname,\n            basename,\n            true,\n            activeBranches\n          );\n          return { active: true, matches: partialMatches };\n        }\n      }\n    }\n    return { active: false, matches: null };\n  }\n  async function discoverRoutes(matches, pathname, signal, fetcherKey) {\n    if (!init.patchRoutesOnNavigation) {\n      return { type: \"success\", matches };\n    }\n    let partialMatches = matches;\n    while (true) {\n      let localManifest = manifest;\n      try {\n        await init.patchRoutesOnNavigation({\n          signal,\n          path: pathname,\n          matches: partialMatches,\n          fetcherKey,\n          patch: (routeId, children) => {\n            if (signal.aborted) return;\n            patchRoutesImpl(\n              routeId,\n              children,\n              dataRoutes,\n              localManifest,\n              mapRouteProperties2,\n              false\n            );\n          }\n        });\n      } catch (e) {\n        return { type: \"error\", error: e, partialMatches };\n      }\n      if (signal.aborted) {\n        return { type: \"aborted\" };\n      }\n      let activeBranches = dataRoutes.branches;\n      let newMatches = matchRoutesImpl(\n        dataRoutes.activeRoutes,\n        pathname,\n        basename,\n        false,\n        activeBranches\n      );\n      let newPartialMatches = null;\n      if (newMatches) {\n        if (Object.keys(newMatches[0].params).length === 0) {\n          return { type: \"success\", matches: newMatches };\n        } else {\n          newPartialMatches = matchRoutesImpl(\n            dataRoutes.activeRoutes,\n            pathname,\n            basename,\n            true,\n            activeBranches\n          );\n          let matchedDeeper = newPartialMatches && partialMatches.length < newPartialMatches.length && compareMatches(\n            partialMatches,\n            newPartialMatches.slice(0, partialMatches.length)\n          );\n          if (!matchedDeeper) {\n            return { type: \"success\", matches: newMatches };\n          }\n        }\n      }\n      if (!newPartialMatches) {\n        newPartialMatches = matchRoutesImpl(\n          dataRoutes.activeRoutes,\n          pathname,\n          basename,\n          true,\n          activeBranches\n        );\n      }\n      if (!newPartialMatches || compareMatches(partialMatches, newPartialMatches)) {\n        return { type: \"success\", matches: null };\n      }\n      partialMatches = newPartialMatches;\n    }\n  }\n  function compareMatches(a, b) {\n    return a.length === b.length && a.every((m, i) => m.route.id === b[i].route.id);\n  }\n  function _internalSetRoutes(newRoutes) {\n    manifest = {};\n    dataRoutes.setHmrRoutes(\n      convertRoutesToDataRoutes(\n        newRoutes,\n        mapRouteProperties2,\n        void 0,\n        manifest\n      )\n    );\n  }\n  function patchRoutes(routeId, children, unstable_allowElementMutations = false) {\n    patchRoutesImpl(\n      routeId,\n      children,\n      dataRoutes,\n      manifest,\n      mapRouteProperties2,\n      unstable_allowElementMutations\n    );\n    if (!dataRoutes.hasHMRRoutes) {\n      updateState({});\n    }\n  }\n  router = {\n    get basename() {\n      return basename;\n    },\n    get future() {\n      return future;\n    },\n    get state() {\n      return state;\n    },\n    get routes() {\n      return dataRoutes.stableRoutes;\n    },\n    get branches() {\n      return dataRoutes.branches;\n    },\n    get manifest() {\n      return manifest;\n    },\n    get window() {\n      return routerWindow;\n    },\n    initialize,\n    subscribe,\n    enableScrollRestoration,\n    navigate,\n    fetch: fetch2,\n    revalidate,\n    // Passthrough to history-aware createHref used by useHref so we get proper\n    // hash-aware URLs in DOM paths\n    createHref: (to) => init.history.createHref(to),\n    encodeLocation: (to) => init.history.encodeLocation(to),\n    getFetcher,\n    resetFetcher,\n    deleteFetcher: queueFetcherForDeletion,\n    dispose,\n    getBlocker,\n    deleteBlocker,\n    patchRoutes,\n    _internalFetchControllers: fetchControllers,\n    // TODO: Remove setRoutes, it's temporary to avoid dealing with\n    // updating the tree while validating the update algorithm.\n    _internalSetRoutes,\n    _internalSetStateDoNotUseOrYouWillBreakYourApp(newState) {\n      updateState(newState);\n    }\n  };\n  if (init.instrumentations) {\n    router = instrumentClientSideRouter(\n      router,\n      init.instrumentations.map((i) => i.router).filter(Boolean)\n    );\n  }\n  return router;\n}\nfunction createStaticHandler(routes, opts) {\n  invariant(\n    routes.length > 0,\n    \"You must provide a non-empty routes array to createStaticHandler\"\n  );\n  let manifest = {};\n  let basename = (opts ? opts.basename : null) || \"/\";\n  let _mapRouteProperties = opts?.mapRouteProperties || defaultMapRouteProperties;\n  let mapRouteProperties2 = _mapRouteProperties;\n  let future = {\n    ...opts?.future\n  };\n  if (opts?.instrumentations) {\n    let instrumentations = opts.instrumentations;\n    mapRouteProperties2 = (route) => {\n      return {\n        ..._mapRouteProperties(route),\n        ...getRouteInstrumentationUpdates(\n          instrumentations.map((i) => i.route).filter(Boolean),\n          route\n        )\n      };\n    };\n  }\n  let dataRoutes = convertRoutesToDataRoutes(\n    routes,\n    mapRouteProperties2,\n    void 0,\n    manifest\n  );\n  let routeBranches = flattenAndRankRoutes(dataRoutes);\n  async function query(request, {\n    requestContext,\n    filterMatchesToLoad,\n    skipLoaderErrorBubbling,\n    skipRevalidation,\n    dataStrategy,\n    generateMiddlewareResponse,\n    normalizePath\n  } = {}) {\n    let normalizePathImpl = normalizePath || defaultNormalizePath;\n    let method = request.method;\n    let location = createLocation(\n      \"\",\n      normalizePathImpl(request),\n      null,\n      \"default\"\n    );\n    let matches = matchRoutesImpl(\n      dataRoutes,\n      location,\n      basename,\n      false,\n      routeBranches\n    );\n    requestContext = requestContext != null ? requestContext : new RouterContextProvider();\n    if (!isValidMethod(method) && method !== \"HEAD\") {\n      let error = getInternalRouterError(405, { method });\n      let { matches: methodNotAllowedMatches, route } = getShortCircuitMatches(dataRoutes);\n      let staticContext = {\n        basename,\n        location,\n        matches: methodNotAllowedMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {}\n      };\n      return generateMiddlewareResponse ? generateMiddlewareResponse(() => Promise.resolve(staticContext)) : staticContext;\n    } else if (!matches) {\n      let error = getInternalRouterError(404, { pathname: location.pathname });\n      let { matches: notFoundMatches, route } = getShortCircuitMatches(dataRoutes);\n      let staticContext = {\n        basename,\n        location,\n        matches: notFoundMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {}\n      };\n      return generateMiddlewareResponse ? generateMiddlewareResponse(() => Promise.resolve(staticContext)) : staticContext;\n    }\n    if (generateMiddlewareResponse) {\n      invariant(\n        requestContext instanceof RouterContextProvider,\n        \"When using middleware in `staticHandler.query()`, any provided `requestContext` must be an instance of `RouterContextProvider`\"\n      );\n      try {\n        await loadLazyMiddlewareForMatches(\n          matches,\n          manifest,\n          mapRouteProperties2\n        );\n        let renderedStaticContext;\n        let response = await runServerMiddlewarePipeline(\n          {\n            request,\n            url: createDataFunctionUrl(request, location),\n            pattern: getRoutePattern(matches),\n            matches,\n            params: matches[0].params,\n            // If we're calling middleware then it must be enabled so we can cast\n            // this to the proper type knowing it's not an `AppLoadContext`\n            context: requestContext\n          },\n          async () => {\n            let res = await generateMiddlewareResponse(\n              async (revalidationRequest, opts2 = {}) => {\n                let result2 = await queryImpl(\n                  revalidationRequest,\n                  location,\n                  matches,\n                  requestContext,\n                  dataStrategy || null,\n                  skipLoaderErrorBubbling === true,\n                  null,\n                  \"filterMatchesToLoad\" in opts2 ? opts2.filterMatchesToLoad ?? null : filterMatchesToLoad ?? null,\n                  skipRevalidation === true\n                );\n                if (isResponse(result2)) {\n                  return result2;\n                }\n                renderedStaticContext = { location, basename, ...result2 };\n                return renderedStaticContext;\n              }\n            );\n            return res;\n          },\n          async (error, routeId) => {\n            if (isRedirectResponse(error)) {\n              return error;\n            }\n            if (isResponse(error)) {\n              try {\n                error = new ErrorResponseImpl(\n                  error.status,\n                  error.statusText,\n                  await parseResponseBody(error)\n                );\n              } catch (e) {\n                error = e;\n              }\n            }\n            if (isDataWithResponseInit(error)) {\n              error = dataWithResponseInitToErrorResponse(error);\n            }\n            if (renderedStaticContext) {\n              if (routeId in renderedStaticContext.loaderData) {\n                renderedStaticContext.loaderData[routeId] = void 0;\n              }\n              let staticContext = getStaticContextFromError(\n                dataRoutes,\n                renderedStaticContext,\n                error,\n                skipLoaderErrorBubbling ? routeId : findNearestBoundary(matches, routeId).route.id\n              );\n              return generateMiddlewareResponse(\n                () => Promise.resolve(staticContext)\n              );\n            } else {\n              let boundaryRouteId = skipLoaderErrorBubbling ? routeId : findNearestBoundary(\n                matches,\n                matches.find(\n                  (m) => m.route.id === routeId || m.route.loader\n                )?.route.id || routeId\n              ).route.id;\n              let staticContext = {\n                matches,\n                location,\n                basename,\n                loaderData: {},\n                actionData: null,\n                errors: {\n                  [boundaryRouteId]: error\n                },\n                statusCode: isRouteErrorResponse(error) ? error.status : 500,\n                actionHeaders: {},\n                loaderHeaders: {}\n              };\n              return generateMiddlewareResponse(\n                () => Promise.resolve(staticContext)\n              );\n            }\n          }\n        );\n        invariant(isResponse(response), \"Expected a response in query()\");\n        return response;\n      } catch (e) {\n        if (isResponse(e)) {\n          return e;\n        }\n        throw e;\n      }\n    }\n    let result = await queryImpl(\n      request,\n      location,\n      matches,\n      requestContext,\n      dataStrategy || null,\n      skipLoaderErrorBubbling === true,\n      null,\n      filterMatchesToLoad || null,\n      skipRevalidation === true\n    );\n    if (isResponse(result)) {\n      return result;\n    }\n    return { location, basename, ...result };\n  }\n  async function queryRoute(request, {\n    routeId,\n    requestContext,\n    dataStrategy,\n    generateMiddlewareResponse,\n    normalizePath\n  } = {}) {\n    let normalizePathImpl = normalizePath || defaultNormalizePath;\n    let method = request.method;\n    let location = createLocation(\n      \"\",\n      normalizePathImpl(request),\n      null,\n      \"default\"\n    );\n    let matches = matchRoutesImpl(\n      dataRoutes,\n      location,\n      basename,\n      false,\n      routeBranches\n    );\n    requestContext = requestContext != null ? requestContext : new RouterContextProvider();\n    if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n      throw getInternalRouterError(405, { method });\n    } else if (!matches) {\n      throw getInternalRouterError(404, { pathname: location.pathname });\n    }\n    let match = routeId ? matches.find((m) => m.route.id === routeId) : getTargetMatch(matches, location);\n    if (routeId && !match) {\n      throw getInternalRouterError(403, {\n        pathname: location.pathname,\n        routeId\n      });\n    } else if (!match) {\n      throw getInternalRouterError(404, { pathname: location.pathname });\n    }\n    if (generateMiddlewareResponse) {\n      invariant(\n        requestContext instanceof RouterContextProvider,\n        \"When using middleware in `staticHandler.queryRoute()`, any provided `requestContext` must be an instance of `RouterContextProvider`\"\n      );\n      await loadLazyMiddlewareForMatches(matches, manifest, mapRouteProperties2);\n      let response = await runServerMiddlewarePipeline(\n        {\n          request,\n          url: createDataFunctionUrl(request, location),\n          pattern: getRoutePattern(matches),\n          matches,\n          params: matches[0].params,\n          // If we're calling middleware then it must be enabled so we can cast\n          // this to the proper type knowing it's not an `AppLoadContext`\n          context: requestContext\n        },\n        async () => {\n          let res = await generateMiddlewareResponse(\n            async (innerRequest) => {\n              let result2 = await queryImpl(\n                innerRequest,\n                location,\n                matches,\n                requestContext,\n                dataStrategy || null,\n                false,\n                match,\n                null,\n                false\n              );\n              let processed = handleQueryResult(result2);\n              return isResponse(processed) ? processed : typeof processed === \"string\" ? new Response(processed) : Response.json(processed);\n            }\n          );\n          return res;\n        },\n        (error) => {\n          if (isDataWithResponseInit(error)) {\n            return Promise.resolve(dataWithResponseInitToResponse(error));\n          }\n          if (isResponse(error)) {\n            return Promise.resolve(error);\n          }\n          throw error;\n        }\n      );\n      return response;\n    }\n    let result = await queryImpl(\n      request,\n      location,\n      matches,\n      requestContext,\n      dataStrategy || null,\n      false,\n      match,\n      null,\n      false\n    );\n    return handleQueryResult(result);\n    function handleQueryResult(result2) {\n      if (isResponse(result2)) {\n        return result2;\n      }\n      let error = result2.errors ? Object.values(result2.errors)[0] : void 0;\n      if (error !== void 0) {\n        throw error;\n      }\n      if (result2.actionData) {\n        return Object.values(result2.actionData)[0];\n      }\n      if (result2.loaderData) {\n        return Object.values(result2.loaderData)[0];\n      }\n      return void 0;\n    }\n  }\n  async function queryImpl(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, filterMatchesToLoad, skipRevalidation) {\n    invariant(\n      request.signal,\n      \"query()/queryRoute() requests must contain an AbortController signal\"\n    );\n    try {\n      if (isMutationMethod(request.method)) {\n        let result2 = await submit(\n          request,\n          location,\n          matches,\n          routeMatch || getTargetMatch(matches, location),\n          requestContext,\n          dataStrategy,\n          skipLoaderErrorBubbling,\n          routeMatch != null,\n          filterMatchesToLoad,\n          skipRevalidation\n        );\n        return result2;\n      }\n      let result = await loadRouteData(\n        request,\n        location,\n        matches,\n        requestContext,\n        dataStrategy,\n        skipLoaderErrorBubbling,\n        routeMatch,\n        filterMatchesToLoad\n      );\n      return isResponse(result) ? result : {\n        ...result,\n        actionData: null,\n        actionHeaders: {}\n      };\n    } catch (e) {\n      if (isDataStrategyResult(e) && isResponse(e.result)) {\n        if (e.type === \"error\" /* error */) {\n          throw e.result;\n        }\n        return e.result;\n      }\n      if (isRedirectResponse(e)) {\n        return e;\n      }\n      throw e;\n    }\n  }\n  async function submit(request, location, matches, actionMatch, requestContext, dataStrategy, skipLoaderErrorBubbling, isRouteRequest, filterMatchesToLoad, skipRevalidation) {\n    let result;\n    if (!actionMatch.route.action && !actionMatch.route.lazy) {\n      let error = getInternalRouterError(405, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: actionMatch.route.id\n      });\n      if (isRouteRequest) {\n        throw error;\n      }\n      result = {\n        type: \"error\" /* error */,\n        error\n      };\n    } else {\n      let dsMatches = getTargetedDataStrategyMatches(\n        mapRouteProperties2,\n        manifest,\n        request,\n        location,\n        matches,\n        actionMatch,\n        [],\n        requestContext\n      );\n      let results = await callDataStrategy(\n        request,\n        location,\n        dsMatches,\n        isRouteRequest,\n        requestContext,\n        dataStrategy\n      );\n      result = results[actionMatch.route.id];\n      if (request.signal.aborted) {\n        throwStaticHandlerAbortedError(request, isRouteRequest);\n      }\n    }\n    if (isRedirectResult(result)) {\n      throw new Response(null, {\n        status: result.response.status,\n        headers: {\n          Location: result.response.headers.get(\"Location\")\n        }\n      });\n    }\n    if (isRouteRequest) {\n      if (isErrorResult(result)) {\n        throw result.error;\n      }\n      return {\n        matches: [actionMatch],\n        loaderData: {},\n        actionData: { [actionMatch.route.id]: result.data },\n        errors: null,\n        // Note: statusCode + headers are unused here since queryRoute will\n        // return the raw Response or value\n        statusCode: 200,\n        loaderHeaders: {},\n        actionHeaders: {}\n      };\n    }\n    if (skipRevalidation) {\n      if (isErrorResult(result)) {\n        let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n        return {\n          statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n          actionData: null,\n          actionHeaders: {\n            ...result.headers ? { [actionMatch.route.id]: result.headers } : {}\n          },\n          matches,\n          loaderData: {},\n          errors: {\n            [boundaryMatch.route.id]: result.error\n          },\n          loaderHeaders: {}\n        };\n      } else {\n        return {\n          actionData: {\n            [actionMatch.route.id]: result.data\n          },\n          actionHeaders: result.headers ? { [actionMatch.route.id]: result.headers } : {},\n          matches,\n          loaderData: {},\n          errors: null,\n          statusCode: result.statusCode || 200,\n          loaderHeaders: {}\n        };\n      }\n    }\n    let loaderRequest = new Request(request.url, {\n      headers: request.headers,\n      redirect: request.redirect,\n      signal: request.signal\n    });\n    if (isErrorResult(result)) {\n      let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n      let handlerContext2 = await loadRouteData(\n        loaderRequest,\n        location,\n        matches,\n        requestContext,\n        dataStrategy,\n        skipLoaderErrorBubbling,\n        null,\n        filterMatchesToLoad,\n        [boundaryMatch.route.id, result]\n      );\n      return {\n        ...handlerContext2,\n        statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n        actionData: null,\n        actionHeaders: {\n          ...result.headers ? { [actionMatch.route.id]: result.headers } : {}\n        }\n      };\n    }\n    let handlerContext = await loadRouteData(\n      loaderRequest,\n      location,\n      matches,\n      requestContext,\n      dataStrategy,\n      skipLoaderErrorBubbling,\n      null,\n      filterMatchesToLoad\n    );\n    return {\n      ...handlerContext,\n      actionData: {\n        [actionMatch.route.id]: result.data\n      },\n      // action status codes take precedence over loader status codes\n      ...result.statusCode ? { statusCode: result.statusCode } : {},\n      actionHeaders: result.headers ? { [actionMatch.route.id]: result.headers } : {}\n    };\n  }\n  async function loadRouteData(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, filterMatchesToLoad, pendingActionResult) {\n    let isRouteRequest = routeMatch != null;\n    if (isRouteRequest && !routeMatch?.route.loader && !routeMatch?.route.lazy) {\n      throw getInternalRouterError(400, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: routeMatch?.route.id\n      });\n    }\n    let dsMatches;\n    if (routeMatch) {\n      dsMatches = getTargetedDataStrategyMatches(\n        mapRouteProperties2,\n        manifest,\n        request,\n        location,\n        matches,\n        routeMatch,\n        [],\n        requestContext\n      );\n    } else {\n      let maxIdx = pendingActionResult && isErrorResult(pendingActionResult[1]) ? (\n        // Up to but not including the boundary\n        matches.findIndex((m) => m.route.id === pendingActionResult[0]) - 1\n      ) : void 0;\n      let pattern = getRoutePattern(matches);\n      dsMatches = matches.map((match, index) => {\n        if (maxIdx != null && index > maxIdx) {\n          return getDataStrategyMatch(\n            mapRouteProperties2,\n            manifest,\n            request,\n            location,\n            pattern,\n            match,\n            [],\n            requestContext,\n            false\n          );\n        }\n        return getDataStrategyMatch(\n          mapRouteProperties2,\n          manifest,\n          request,\n          location,\n          pattern,\n          match,\n          [],\n          requestContext,\n          (match.route.loader || match.route.lazy) != null && (!filterMatchesToLoad || filterMatchesToLoad(match))\n        );\n      });\n    }\n    if (!dataStrategy && !dsMatches.some((m) => m.shouldLoad)) {\n      return {\n        matches,\n        loaderData: {},\n        errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n          [pendingActionResult[0]]: pendingActionResult[1].error\n        } : null,\n        statusCode: 200,\n        loaderHeaders: {}\n      };\n    }\n    let results = await callDataStrategy(\n      request,\n      location,\n      dsMatches,\n      isRouteRequest,\n      requestContext,\n      dataStrategy\n    );\n    if (request.signal.aborted) {\n      throwStaticHandlerAbortedError(request, isRouteRequest);\n    }\n    let handlerContext = processRouteLoaderData(\n      matches,\n      results,\n      pendingActionResult,\n      true,\n      skipLoaderErrorBubbling\n    );\n    return {\n      ...handlerContext,\n      matches\n    };\n  }\n  async function callDataStrategy(request, location, matches, isRouteRequest, requestContext, dataStrategy) {\n    let results = await callDataStrategyImpl(\n      dataStrategy || defaultDataStrategy,\n      request,\n      location,\n      matches,\n      null,\n      requestContext,\n      true\n    );\n    let dataResults = {};\n    await Promise.all(\n      matches.map(async (match) => {\n        if (!(match.route.id in results)) {\n          return;\n        }\n        let result = results[match.route.id];\n        if (isRedirectDataStrategyResult(result)) {\n          let response = result.result;\n          throw normalizeRelativeRoutingRedirectResponse(\n            response,\n            request,\n            match.route.id,\n            matches,\n            basename\n          );\n        }\n        if (isRouteRequest) {\n          if (isResponse(result.result)) {\n            throw result;\n          } else if (isDataWithResponseInit(result.result)) {\n            throw dataWithResponseInitToResponse(result.result);\n          }\n        }\n        dataResults[match.route.id] = await convertDataStrategyResultToDataResult(result);\n      })\n    );\n    return dataResults;\n  }\n  return {\n    dataRoutes,\n    _internalRouteBranches: routeBranches,\n    query,\n    queryRoute\n  };\n}\nfunction getStaticContextFromError(routes, handlerContext, error, boundaryId) {\n  let errorBoundaryId = boundaryId || handlerContext._deepestRenderedBoundaryId || routes[0].id;\n  return {\n    ...handlerContext,\n    statusCode: isRouteErrorResponse(error) ? error.status : 500,\n    errors: {\n      [errorBoundaryId]: error\n    }\n  };\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest) {\n  if (request.signal.reason !== void 0) {\n    throw request.signal.reason;\n  }\n  let method = isRouteRequest ? \"queryRoute\" : \"query\";\n  throw new Error(\n    `${method}() call aborted without an \\`AbortSignal.reason\\`: ${request.method} ${request.url}`\n  );\n}\nfunction isSubmissionNavigation(opts) {\n  return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== void 0);\n}\nfunction defaultNormalizePath(request) {\n  let url = new URL(request.url);\n  return {\n    pathname: url.pathname,\n    search: url.search,\n    hash: url.hash\n  };\n}\nfunction normalizeTo(location, matches, basename, to, fromRouteId, relative) {\n  let contextualMatches;\n  let activeRouteMatch;\n  if (fromRouteId) {\n    contextualMatches = [];\n    for (let match of matches) {\n      contextualMatches.push(match);\n      if (match.route.id === fromRouteId) {\n        activeRouteMatch = match;\n        break;\n      }\n    }\n  } else {\n    contextualMatches = matches;\n    activeRouteMatch = matches[matches.length - 1];\n  }\n  let path = resolveTo(\n    to ? to : \".\",\n    getResolveToMatches(contextualMatches),\n    stripBasename(location.pathname, basename) || location.pathname,\n    relative === \"path\"\n  );\n  if (to == null) {\n    path.search = location.search;\n    path.hash = location.hash;\n  }\n  if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n    let nakedIndex = hasNakedIndexQuery(path.search);\n    if (activeRouteMatch.route.index && !nakedIndex) {\n      path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n    } else if (!activeRouteMatch.route.index && nakedIndex) {\n      let params = new URLSearchParams(path.search);\n      let indexValues = params.getAll(\"index\");\n      params.delete(\"index\");\n      indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n      let qs = params.toString();\n      path.search = qs ? `?${qs}` : \"\";\n    }\n  }\n  if (basename !== \"/\") {\n    path.pathname = prependBasename({ basename, pathname: path.pathname });\n  }\n  return createPath(path);\n}\nfunction normalizeNavigateOptions(isFetcher, path, opts) {\n  if (!opts || !isSubmissionNavigation(opts)) {\n    return { path };\n  }\n  if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n    return {\n      path,\n      error: getInternalRouterError(405, { method: opts.formMethod })\n    };\n  }\n  let getInvalidBodyError = () => ({\n    path,\n    error: getInternalRouterError(400, { type: \"invalid-body\" })\n  });\n  let rawFormMethod = opts.formMethod || \"get\";\n  let formMethod = rawFormMethod.toUpperCase();\n  let formAction = stripHashFromPath(path);\n  if (opts.body !== void 0) {\n    if (opts.formEncType === \"text/plain\") {\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n      let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ? (\n        // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n        Array.from(opts.body.entries()).reduce(\n          (acc, [name, value]) => `${acc}${name}=${value}\n`,\n          \"\"\n        )\n      ) : String(opts.body);\n      return {\n        path,\n        submission: {\n          formMethod,\n          formAction,\n          formEncType: opts.formEncType,\n          formData: void 0,\n          json: void 0,\n          text\n        }\n      };\n    } else if (opts.formEncType === \"application/json\") {\n      if (!isMutationMethod(formMethod)) {\n        return getInvalidBodyError();\n      }\n      try {\n        let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n        return {\n          path,\n          submission: {\n            formMethod,\n            formAction,\n            formEncType: opts.formEncType,\n            formData: void 0,\n            json,\n            text: void 0\n          }\n        };\n      } catch (e) {\n        return getInvalidBodyError();\n      }\n    }\n  }\n  invariant(\n    typeof FormData === \"function\",\n    \"FormData is not available in this environment\"\n  );\n  let searchParams;\n  let formData;\n  if (opts.formData) {\n    searchParams = convertFormDataToSearchParams(opts.formData);\n    formData = opts.formData;\n  } else if (opts.body instanceof FormData) {\n    searchParams = convertFormDataToSearchParams(opts.body);\n    formData = opts.body;\n  } else if (opts.body instanceof URLSearchParams) {\n    searchParams = opts.body;\n    formData = convertSearchParamsToFormData(searchParams);\n  } else if (opts.body == null) {\n    searchParams = new URLSearchParams();\n    formData = new FormData();\n  } else {\n    try {\n      searchParams = new URLSearchParams(opts.body);\n      formData = convertSearchParamsToFormData(searchParams);\n    } catch (e) {\n      return getInvalidBodyError();\n    }\n  }\n  let submission = {\n    formMethod,\n    formAction,\n    formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n    formData,\n    json: void 0,\n    text: void 0\n  };\n  if (isMutationMethod(submission.formMethod)) {\n    return { path, submission };\n  }\n  let parsedPath = parsePath(path);\n  if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n    searchParams.append(\"index\", \"\");\n  }\n  parsedPath.search = `?${searchParams}`;\n  return { path: createPath(parsedPath), submission };\n}\nfunction getMatchesToLoad(request, scopedContext, mapRouteProperties2, manifest, history, state, matches, submission, location, lazyRoutePropertiesToSkip, initialHydration, isRevalidationRequired, cancelledFetcherLoads, fetchersQueuedForDeletion, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, hasPatchRoutesOnNavigation, branches, pendingActionResult, callSiteDefaultShouldRevalidate) {\n  let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : void 0;\n  let currentUrl = history.createURL(state.location);\n  let nextUrl = history.createURL(location);\n  let maxIdx;\n  if (initialHydration && state.errors) {\n    let boundaryId = Object.keys(state.errors)[0];\n    maxIdx = matches.findIndex((m) => m.route.id === boundaryId);\n  } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n    let boundaryId = pendingActionResult[0];\n    maxIdx = matches.findIndex((m) => m.route.id === boundaryId) - 1;\n  }\n  let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : void 0;\n  let shouldSkipRevalidation = actionStatus && actionStatus >= 400;\n  let baseShouldRevalidateArgs = {\n    currentUrl,\n    currentParams: state.matches[0]?.params || {},\n    nextUrl,\n    nextParams: matches[0].params,\n    ...submission,\n    actionResult,\n    actionStatus\n  };\n  let pattern = getRoutePattern(matches);\n  let dsMatches = matches.map((match, index) => {\n    let { route } = match;\n    let forceShouldLoad = null;\n    if (maxIdx != null && index > maxIdx) {\n      forceShouldLoad = false;\n    } else if (route.lazy) {\n      forceShouldLoad = true;\n    } else if (!routeHasLoaderOrMiddleware(route)) {\n      forceShouldLoad = false;\n    } else if (initialHydration) {\n      let { shouldLoad: shouldLoad2 } = getRouteHydrationStatus(\n        route,\n        state.loaderData,\n        state.errors\n      );\n      forceShouldLoad = shouldLoad2;\n    } else if (isNewLoader(state.loaderData, state.matches[index], match)) {\n      forceShouldLoad = true;\n    }\n    if (forceShouldLoad !== null) {\n      return getDataStrategyMatch(\n        mapRouteProperties2,\n        manifest,\n        request,\n        location,\n        pattern,\n        match,\n        lazyRoutePropertiesToSkip,\n        scopedContext,\n        forceShouldLoad\n      );\n    }\n    let defaultShouldRevalidate = false;\n    if (typeof callSiteDefaultShouldRevalidate === \"boolean\") {\n      defaultShouldRevalidate = callSiteDefaultShouldRevalidate;\n    } else if (shouldSkipRevalidation) {\n      defaultShouldRevalidate = false;\n    } else if (isRevalidationRequired) {\n      defaultShouldRevalidate = true;\n    } else if (currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search) {\n      defaultShouldRevalidate = true;\n    } else if (currentUrl.search !== nextUrl.search) {\n      defaultShouldRevalidate = true;\n    } else if (isNewRouteInstance(state.matches[index], match)) {\n      defaultShouldRevalidate = true;\n    }\n    let shouldRevalidateArgs = {\n      ...baseShouldRevalidateArgs,\n      defaultShouldRevalidate\n    };\n    let shouldLoad = shouldRevalidateLoader(match, shouldRevalidateArgs);\n    return getDataStrategyMatch(\n      mapRouteProperties2,\n      manifest,\n      request,\n      location,\n      pattern,\n      match,\n      lazyRoutePropertiesToSkip,\n      scopedContext,\n      shouldLoad,\n      shouldRevalidateArgs,\n      callSiteDefaultShouldRevalidate\n    );\n  });\n  let revalidatingFetchers = [];\n  fetchLoadMatches.forEach((f, key) => {\n    if (initialHydration || !matches.some((m) => m.route.id === f.routeId) || fetchersQueuedForDeletion.has(key)) {\n      return;\n    }\n    let fetcher = state.fetchers.get(key);\n    let isMidInitialLoad = fetcher && fetcher.state !== \"idle\" && fetcher.data === void 0;\n    let fetcherMatches = matchRoutesImpl(\n      routesToUse,\n      f.path,\n      basename ?? \"/\",\n      false,\n      branches\n    );\n    if (!fetcherMatches) {\n      if (hasPatchRoutesOnNavigation && isMidInitialLoad) {\n        return;\n      }\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: null,\n        match: null,\n        request: null,\n        controller: null\n      });\n      return;\n    }\n    if (fetchRedirectIds.has(key)) {\n      return;\n    }\n    let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n    let fetchController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      history,\n      f.path,\n      fetchController.signal\n    );\n    let fetcherDsMatches = null;\n    if (cancelledFetcherLoads.has(key)) {\n      cancelledFetcherLoads.delete(key);\n      fetcherDsMatches = getTargetedDataStrategyMatches(\n        mapRouteProperties2,\n        manifest,\n        fetchRequest,\n        f.path,\n        fetcherMatches,\n        fetcherMatch,\n        lazyRoutePropertiesToSkip,\n        scopedContext\n      );\n    } else if (isMidInitialLoad) {\n      if (isRevalidationRequired) {\n        fetcherDsMatches = getTargetedDataStrategyMatches(\n          mapRouteProperties2,\n          manifest,\n          fetchRequest,\n          f.path,\n          fetcherMatches,\n          fetcherMatch,\n          lazyRoutePropertiesToSkip,\n          scopedContext\n        );\n      }\n    } else {\n      let defaultShouldRevalidate;\n      if (typeof callSiteDefaultShouldRevalidate === \"boolean\") {\n        defaultShouldRevalidate = callSiteDefaultShouldRevalidate;\n      } else if (shouldSkipRevalidation) {\n        defaultShouldRevalidate = false;\n      } else {\n        defaultShouldRevalidate = isRevalidationRequired;\n      }\n      let shouldRevalidateArgs = {\n        ...baseShouldRevalidateArgs,\n        defaultShouldRevalidate\n      };\n      if (shouldRevalidateLoader(fetcherMatch, shouldRevalidateArgs)) {\n        fetcherDsMatches = getTargetedDataStrategyMatches(\n          mapRouteProperties2,\n          manifest,\n          fetchRequest,\n          f.path,\n          fetcherMatches,\n          fetcherMatch,\n          lazyRoutePropertiesToSkip,\n          scopedContext,\n          shouldRevalidateArgs\n        );\n      }\n    }\n    if (fetcherDsMatches) {\n      revalidatingFetchers.push({\n        key,\n        routeId: f.routeId,\n        path: f.path,\n        matches: fetcherDsMatches,\n        match: fetcherMatch,\n        request: fetchRequest,\n        controller: fetchController\n      });\n    }\n  });\n  return { dsMatches, revalidatingFetchers };\n}\nfunction routeHasLoaderOrMiddleware(route) {\n  return route.loader != null || route.middleware != null && route.middleware.length > 0;\n}\nfunction getRouteHydrationStatus(route, loaderData, errors) {\n  if (route.lazy) {\n    return { shouldLoad: true, renderFallback: true };\n  }\n  if (!routeHasLoaderOrMiddleware(route)) {\n    return { shouldLoad: false, renderFallback: false };\n  }\n  let hasData = loaderData != null && route.id in loaderData;\n  let hasError = errors != null && errors[route.id] !== void 0;\n  if (!hasData && hasError) {\n    return { shouldLoad: false, renderFallback: false };\n  }\n  if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n    return { shouldLoad: true, renderFallback: !hasData };\n  }\n  let shouldLoad = !hasData && !hasError;\n  return { shouldLoad, renderFallback: shouldLoad };\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n  let isNew = (\n    // [a] -> [a, b]\n    !currentMatch || // [a, b] -> [a, c]\n    match.route.id !== currentMatch.route.id\n  );\n  let isMissingData = !currentLoaderData.hasOwnProperty(match.route.id);\n  return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n  let currentPath = currentMatch.route.path;\n  return (\n    // param change for this match, /users/123 -> /users/456\n    currentMatch.pathname !== match.pathname || // splat param changed, which is not present in match.path\n    // e.g. /files/images/avatar.jpg -> files/finances.xls\n    currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n  );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n  if (loaderMatch.route.shouldRevalidate) {\n    let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n    if (typeof routeChoice === \"boolean\") {\n      return routeChoice;\n    }\n  }\n  return arg.defaultShouldRevalidate;\n}\nfunction patchRoutesImpl(routeId, children, dataRoutes, manifest, mapRouteProperties2, allowElementMutations) {\n  let childrenToPatch;\n  if (routeId) {\n    let route = manifest[routeId];\n    invariant(\n      route,\n      `No route found to patch children into: routeId = ${routeId}`\n    );\n    if (!route.children) {\n      route.children = [];\n    }\n    childrenToPatch = route.children;\n  } else {\n    childrenToPatch = dataRoutes.activeRoutes;\n  }\n  let uniqueChildren = [];\n  let existingChildren = [];\n  children.forEach((newRoute) => {\n    let existingRoute = childrenToPatch.find(\n      (existingRoute2) => isSameRoute(newRoute, existingRoute2)\n    );\n    if (existingRoute) {\n      existingChildren.push({ existingRoute, newRoute });\n    } else {\n      uniqueChildren.push(newRoute);\n    }\n  });\n  if (uniqueChildren.length > 0) {\n    let newRoutes = convertRoutesToDataRoutes(\n      uniqueChildren,\n      mapRouteProperties2,\n      [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n      manifest\n    );\n    childrenToPatch.push(...newRoutes);\n  }\n  if (allowElementMutations && existingChildren.length > 0) {\n    for (let i = 0; i < existingChildren.length; i++) {\n      let { existingRoute, newRoute } = existingChildren[i];\n      let existingRouteTyped = existingRoute;\n      let [newRouteTyped] = convertRoutesToDataRoutes(\n        [newRoute],\n        mapRouteProperties2,\n        [],\n        // Doesn't matter for mutated routes since they already have an id\n        {},\n        // Don't touch the manifest here since we're updating in place\n        true\n      );\n      Object.assign(existingRouteTyped, {\n        element: newRouteTyped.element ? newRouteTyped.element : existingRouteTyped.element,\n        errorElement: newRouteTyped.errorElement ? newRouteTyped.errorElement : existingRouteTyped.errorElement,\n        hydrateFallbackElement: newRouteTyped.hydrateFallbackElement ? newRouteTyped.hydrateFallbackElement : existingRouteTyped.hydrateFallbackElement\n      });\n    }\n  }\n  if (!dataRoutes.hasHMRRoutes) {\n    dataRoutes.setRoutes([...dataRoutes.activeRoutes]);\n  }\n}\nfunction isSameRoute(newRoute, existingRoute) {\n  if (\"id\" in newRoute && \"id\" in existingRoute && newRoute.id === existingRoute.id) {\n    return true;\n  }\n  if (!(newRoute.index === existingRoute.index && newRoute.path === existingRoute.path && newRoute.caseSensitive === existingRoute.caseSensitive)) {\n    return false;\n  }\n  if ((!newRoute.children || newRoute.children.length === 0) && (!existingRoute.children || existingRoute.children.length === 0)) {\n    return true;\n  }\n  return newRoute.children?.every(\n    (aChild, i) => existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n  ) ?? false;\n}\nvar lazyRoutePropertyCache = /* @__PURE__ */ new WeakMap();\nvar loadLazyRouteProperty = ({\n  key,\n  route,\n  manifest,\n  mapRouteProperties: mapRouteProperties2\n}) => {\n  let routeToUpdate = manifest[route.id];\n  invariant(routeToUpdate, \"No route found in manifest\");\n  if (!routeToUpdate.lazy || typeof routeToUpdate.lazy !== \"object\") {\n    return;\n  }\n  let lazyFn = routeToUpdate.lazy[key];\n  if (!lazyFn) {\n    return;\n  }\n  let cache = lazyRoutePropertyCache.get(routeToUpdate);\n  if (!cache) {\n    cache = {};\n    lazyRoutePropertyCache.set(routeToUpdate, cache);\n  }\n  let cachedPromise = cache[key];\n  if (cachedPromise) {\n    return cachedPromise;\n  }\n  let propertyPromise = (async () => {\n    let isUnsupported = isUnsupportedLazyRouteObjectKey(key);\n    let staticRouteValue = routeToUpdate[key];\n    let isStaticallyDefined = staticRouteValue !== void 0 && key !== \"hasErrorBoundary\";\n    if (isUnsupported) {\n      warning(\n        !isUnsupported,\n        \"Route property \" + key + \" is not a supported lazy route property. This property will be ignored.\"\n      );\n      cache[key] = Promise.resolve();\n    } else if (isStaticallyDefined) {\n      warning(\n        false,\n        `Route \"${routeToUpdate.id}\" has a static property \"${key}\" defined. The lazy property will be ignored.`\n      );\n    } else {\n      let value = await lazyFn();\n      if (value != null) {\n        Object.assign(routeToUpdate, { [key]: value });\n        Object.assign(routeToUpdate, mapRouteProperties2(routeToUpdate));\n      }\n    }\n    if (typeof routeToUpdate.lazy === \"object\") {\n      routeToUpdate.lazy[key] = void 0;\n      if (Object.values(routeToUpdate.lazy).every((value) => value === void 0)) {\n        routeToUpdate.lazy = void 0;\n      }\n    }\n  })();\n  cache[key] = propertyPromise;\n  return propertyPromise;\n};\nvar lazyRouteFunctionCache = /* @__PURE__ */ new WeakMap();\nfunction loadLazyRoute(route, type, manifest, mapRouteProperties2, lazyRoutePropertiesToSkip) {\n  let routeToUpdate = manifest[route.id];\n  invariant(routeToUpdate, \"No route found in manifest\");\n  if (!route.lazy) {\n    return {\n      lazyRoutePromise: void 0,\n      lazyHandlerPromise: void 0\n    };\n  }\n  if (typeof route.lazy === \"function\") {\n    let cachedPromise = lazyRouteFunctionCache.get(routeToUpdate);\n    if (cachedPromise) {\n      return {\n        lazyRoutePromise: cachedPromise,\n        lazyHandlerPromise: cachedPromise\n      };\n    }\n    let lazyRoutePromise2 = (async () => {\n      invariant(\n        typeof route.lazy === \"function\",\n        \"No lazy route function found\"\n      );\n      let lazyRoute = await route.lazy();\n      let routeUpdates = {};\n      for (let lazyRouteProperty in lazyRoute) {\n        let lazyValue = lazyRoute[lazyRouteProperty];\n        if (lazyValue === void 0) {\n          continue;\n        }\n        let isUnsupported = isUnsupportedLazyRouteFunctionKey(lazyRouteProperty);\n        let staticRouteValue = routeToUpdate[lazyRouteProperty];\n        let isStaticallyDefined = staticRouteValue !== void 0 && // This property isn't static since it should always be updated based\n        // on the route updates\n        lazyRouteProperty !== \"hasErrorBoundary\";\n        if (isUnsupported) {\n          warning(\n            !isUnsupported,\n            \"Route property \" + lazyRouteProperty + \" is not a supported property to be returned from a lazy route function. This property will be ignored.\"\n          );\n        } else if (isStaticallyDefined) {\n          warning(\n            !isStaticallyDefined,\n            `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" defined but its lazy function is also returning a value for this property. The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n          );\n        } else {\n          routeUpdates[lazyRouteProperty] = lazyValue;\n        }\n      }\n      Object.assign(routeToUpdate, routeUpdates);\n      Object.assign(routeToUpdate, {\n        // To keep things framework agnostic, we use the provided `mapRouteProperties`\n        // function to set the framework-aware properties (`element`/`hasErrorBoundary`)\n        // since the logic will differ between frameworks.\n        ...mapRouteProperties2(routeToUpdate),\n        lazy: void 0\n      });\n    })();\n    lazyRouteFunctionCache.set(routeToUpdate, lazyRoutePromise2);\n    lazyRoutePromise2.catch(() => {\n    });\n    return {\n      lazyRoutePromise: lazyRoutePromise2,\n      lazyHandlerPromise: lazyRoutePromise2\n    };\n  }\n  let lazyKeys = Object.keys(route.lazy);\n  let lazyPropertyPromises = [];\n  let lazyHandlerPromise = void 0;\n  for (let key of lazyKeys) {\n    if (lazyRoutePropertiesToSkip && lazyRoutePropertiesToSkip.includes(key)) {\n      continue;\n    }\n    let promise = loadLazyRouteProperty({\n      key,\n      route,\n      manifest,\n      mapRouteProperties: mapRouteProperties2\n    });\n    if (promise) {\n      lazyPropertyPromises.push(promise);\n      if (key === type) {\n        lazyHandlerPromise = promise;\n      }\n    }\n  }\n  let lazyRoutePromise = lazyPropertyPromises.length > 0 ? Promise.all(lazyPropertyPromises).then(() => {\n  }) : void 0;\n  lazyRoutePromise?.catch(() => {\n  });\n  lazyHandlerPromise?.catch(() => {\n  });\n  return {\n    lazyRoutePromise,\n    lazyHandlerPromise\n  };\n}\nfunction isNonNullable(value) {\n  return value !== void 0;\n}\nfunction loadLazyMiddlewareForMatches(matches, manifest, mapRouteProperties2) {\n  let promises = matches.map(({ route }) => {\n    if (typeof route.lazy !== \"object\" || !route.lazy.middleware) {\n      return void 0;\n    }\n    return loadLazyRouteProperty({\n      key: \"middleware\",\n      route,\n      manifest,\n      mapRouteProperties: mapRouteProperties2\n    });\n  }).filter(isNonNullable);\n  return promises.length > 0 ? Promise.all(promises) : void 0;\n}\nasync function defaultDataStrategy(args) {\n  let matchesToLoad = args.matches.filter((m) => m.shouldLoad);\n  let keyedResults = {};\n  let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n  results.forEach((result, i) => {\n    keyedResults[matchesToLoad[i].route.id] = result;\n  });\n  return keyedResults;\n}\nasync function defaultDataStrategyWithMiddleware(args) {\n  if (!args.matches.some((m) => m.route.middleware)) {\n    return defaultDataStrategy(args);\n  }\n  return runClientMiddlewarePipeline(args, () => defaultDataStrategy(args));\n}\nfunction runServerMiddlewarePipeline(args, handler, errorHandler) {\n  return runMiddlewarePipeline(\n    args,\n    handler,\n    processResult,\n    isResponse,\n    errorHandler\n  );\n  function processResult(result) {\n    return isDataWithResponseInit(result) ? dataWithResponseInitToResponse(result) : result;\n  }\n}\nfunction runClientMiddlewarePipeline(args, handler) {\n  return runMiddlewarePipeline(\n    args,\n    handler,\n    (r) => {\n      if (isRedirectResponse(r)) {\n        throw r;\n      }\n      return r;\n    },\n    isDataStrategyResults,\n    errorHandler\n  );\n  function errorHandler(error, routeId, nextResult) {\n    if (nextResult) {\n      return Promise.resolve(\n        Object.assign(nextResult.value, {\n          [routeId]: { type: \"error\", result: error }\n        })\n      );\n    } else {\n      let { matches } = args;\n      let maxBoundaryIdx = Math.min(\n        // Throwing route\n        Math.max(\n          matches.findIndex((m) => m.route.id === routeId),\n          0\n        ),\n        // or the shallowest route that needs to load data\n        Math.max(\n          matches.findIndex((m) => m.shouldCallHandler()),\n          0\n        )\n      );\n      let boundaryRouteId = findNearestBoundary(\n        matches,\n        matches[maxBoundaryIdx].route.id\n      ).route.id;\n      return Promise.resolve({\n        [boundaryRouteId]: { type: \"error\", result: error }\n      });\n    }\n  }\n}\nasync function runMiddlewarePipeline(args, handler, processResult, isResult, errorHandler) {\n  let { matches, ...dataFnArgs } = args;\n  let tuples = matches.flatMap(\n    (m) => m.route.middleware ? m.route.middleware.map((fn) => [m.route.id, fn]) : []\n  );\n  let result = await callRouteMiddleware(\n    dataFnArgs,\n    tuples,\n    handler,\n    processResult,\n    isResult,\n    errorHandler\n  );\n  return result;\n}\nasync function callRouteMiddleware(args, middlewares, handler, processResult, isResult, errorHandler, idx = 0) {\n  let { request } = args;\n  if (request.signal.aborted) {\n    throw request.signal.reason ?? new Error(`Request aborted: ${request.method} ${request.url}`);\n  }\n  let tuple = middlewares[idx];\n  if (!tuple) {\n    let result = await handler();\n    return result;\n  }\n  let [routeId, middleware] = tuple;\n  let nextResult;\n  let next = async () => {\n    if (nextResult) {\n      throw new Error(\"You may only call `next()` once per middleware\");\n    }\n    try {\n      let result = await callRouteMiddleware(\n        args,\n        middlewares,\n        handler,\n        processResult,\n        isResult,\n        errorHandler,\n        idx + 1\n      );\n      nextResult = { value: result };\n      return nextResult.value;\n    } catch (error) {\n      nextResult = { value: await errorHandler(error, routeId, nextResult) };\n      return nextResult.value;\n    }\n  };\n  try {\n    let value = await middleware(args, next);\n    let result = value != null ? processResult(value) : void 0;\n    if (isResult(result)) {\n      return result;\n    } else if (nextResult) {\n      return result ?? nextResult.value;\n    } else {\n      nextResult = { value: await next() };\n      return nextResult.value;\n    }\n  } catch (error) {\n    let response = await errorHandler(error, routeId, nextResult);\n    return response;\n  }\n}\nfunction getDataStrategyMatchLazyPromises(mapRouteProperties2, manifest, request, match, lazyRoutePropertiesToSkip) {\n  let lazyMiddlewarePromise = loadLazyRouteProperty({\n    key: \"middleware\",\n    route: match.route,\n    manifest,\n    mapRouteProperties: mapRouteProperties2\n  });\n  let lazyRoutePromises = loadLazyRoute(\n    match.route,\n    isMutationMethod(request.method) ? \"action\" : \"loader\",\n    manifest,\n    mapRouteProperties2,\n    lazyRoutePropertiesToSkip\n  );\n  return {\n    middleware: lazyMiddlewarePromise,\n    route: lazyRoutePromises.lazyRoutePromise,\n    handler: lazyRoutePromises.lazyHandlerPromise\n  };\n}\nfunction getDataStrategyMatch(mapRouteProperties2, manifest, request, path, pattern, match, lazyRoutePropertiesToSkip, scopedContext, shouldLoad, shouldRevalidateArgs = null, callSiteDefaultShouldRevalidate) {\n  let isUsingNewApi = false;\n  let _lazyPromises = getDataStrategyMatchLazyPromises(\n    mapRouteProperties2,\n    manifest,\n    request,\n    match,\n    lazyRoutePropertiesToSkip\n  );\n  return {\n    ...match,\n    _lazyPromises,\n    shouldLoad,\n    shouldRevalidateArgs,\n    shouldCallHandler(defaultShouldRevalidate) {\n      isUsingNewApi = true;\n      if (!shouldRevalidateArgs) {\n        return shouldLoad;\n      }\n      if (typeof callSiteDefaultShouldRevalidate === \"boolean\") {\n        return shouldRevalidateLoader(match, {\n          ...shouldRevalidateArgs,\n          defaultShouldRevalidate: callSiteDefaultShouldRevalidate\n        });\n      }\n      if (typeof defaultShouldRevalidate === \"boolean\") {\n        return shouldRevalidateLoader(match, {\n          ...shouldRevalidateArgs,\n          defaultShouldRevalidate\n        });\n      }\n      return shouldRevalidateLoader(match, shouldRevalidateArgs);\n    },\n    resolve(handlerOverride) {\n      let { lazy, loader, middleware } = match.route;\n      let callHandler = isUsingNewApi || shouldLoad || handlerOverride && !isMutationMethod(request.method) && (lazy || loader);\n      let isMiddlewareOnlyRoute = middleware && middleware.length > 0 && !loader && !lazy;\n      if (callHandler && (isMutationMethod(request.method) || !isMiddlewareOnlyRoute)) {\n        return callLoaderOrAction({\n          request,\n          path,\n          pattern,\n          match,\n          lazyHandlerPromise: _lazyPromises?.handler,\n          lazyRoutePromise: _lazyPromises?.route,\n          handlerOverride,\n          scopedContext\n        });\n      }\n      return Promise.resolve({ type: \"data\" /* data */, result: void 0 });\n    }\n  };\n}\nfunction getTargetedDataStrategyMatches(mapRouteProperties2, manifest, request, path, matches, targetMatch, lazyRoutePropertiesToSkip, scopedContext, shouldRevalidateArgs = null) {\n  return matches.map((match) => {\n    if (match.route.id !== targetMatch.route.id) {\n      return {\n        ...match,\n        shouldLoad: false,\n        shouldRevalidateArgs,\n        shouldCallHandler: () => false,\n        _lazyPromises: getDataStrategyMatchLazyPromises(\n          mapRouteProperties2,\n          manifest,\n          request,\n          match,\n          lazyRoutePropertiesToSkip\n        ),\n        resolve: () => Promise.resolve({ type: \"data\", result: void 0 })\n      };\n    }\n    return getDataStrategyMatch(\n      mapRouteProperties2,\n      manifest,\n      request,\n      path,\n      getRoutePattern(matches),\n      match,\n      lazyRoutePropertiesToSkip,\n      scopedContext,\n      true,\n      shouldRevalidateArgs\n    );\n  });\n}\nasync function callDataStrategyImpl(dataStrategyImpl, request, path, matches, fetcherKey, scopedContext, isStaticHandler) {\n  if (matches.some((m) => m._lazyPromises?.middleware)) {\n    await Promise.all(matches.map((m) => m._lazyPromises?.middleware));\n  }\n  let dataStrategyArgs = {\n    request,\n    url: createDataFunctionUrl(request, path),\n    pattern: getRoutePattern(matches),\n    params: matches[0].params,\n    context: scopedContext,\n    matches\n  };\n  let runClientMiddleware = isStaticHandler ? () => {\n    throw new Error(\n      \"You cannot call `runClientMiddleware()` from a static handler `dataStrategy`. Middleware is run outside of `dataStrategy` during SSR in order to bubble up the Response.  You can enable middleware via the `respond` API in `query`/`queryRoute`\"\n    );\n  } : (cb) => {\n    let typedDataStrategyArgs = dataStrategyArgs;\n    return runClientMiddlewarePipeline(typedDataStrategyArgs, () => {\n      return cb({\n        ...typedDataStrategyArgs,\n        fetcherKey,\n        runClientMiddleware: () => {\n          throw new Error(\n            \"Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler\"\n          );\n        }\n      });\n    });\n  };\n  let results = await dataStrategyImpl({\n    ...dataStrategyArgs,\n    fetcherKey,\n    runClientMiddleware\n  });\n  try {\n    await Promise.all(\n      matches.flatMap((m) => [\n        m._lazyPromises?.handler,\n        m._lazyPromises?.route\n      ])\n    );\n  } catch (e) {\n  }\n  return results;\n}\nasync function callLoaderOrAction({\n  request,\n  path,\n  pattern,\n  match,\n  lazyHandlerPromise,\n  lazyRoutePromise,\n  handlerOverride,\n  scopedContext\n}) {\n  let result;\n  let onReject;\n  let isAction = isMutationMethod(request.method);\n  let type = isAction ? \"action\" : \"loader\";\n  let runHandler = (handler) => {\n    let reject;\n    let abortPromise = new Promise((_, r) => reject = r);\n    onReject = () => reject();\n    request.signal.addEventListener(\"abort\", onReject);\n    let actualHandler = (ctx) => {\n      if (typeof handler !== \"function\") {\n        return Promise.reject(\n          new Error(\n            `You cannot call the handler for a route which defines a boolean \"${type}\" [routeId: ${match.route.id}]`\n          )\n        );\n      }\n      return handler(\n        {\n          request,\n          url: createDataFunctionUrl(request, path),\n          pattern,\n          params: match.params,\n          context: scopedContext\n        },\n        ...ctx !== void 0 ? [ctx] : []\n      );\n    };\n    let handlerPromise = (async () => {\n      try {\n        let val = await (handlerOverride ? handlerOverride((ctx) => actualHandler(ctx)) : actualHandler());\n        return { type: \"data\", result: val };\n      } catch (e) {\n        return { type: \"error\", result: e };\n      }\n    })();\n    return Promise.race([handlerPromise, abortPromise]);\n  };\n  try {\n    let handler = isAction ? match.route.action : match.route.loader;\n    if (lazyHandlerPromise || lazyRoutePromise) {\n      if (handler) {\n        let handlerError;\n        let [value] = await Promise.all([\n          // If the handler throws, don't let it immediately bubble out,\n          // since we need to let the lazy() execution finish so we know if this\n          // route has a boundary that can handle the error\n          runHandler(handler).catch((e) => {\n            handlerError = e;\n          }),\n          // Ensure all lazy route promises are resolved before continuing\n          lazyHandlerPromise,\n          lazyRoutePromise\n        ]);\n        if (handlerError !== void 0) {\n          throw handlerError;\n        }\n        result = value;\n      } else {\n        await lazyHandlerPromise;\n        let handler2 = isAction ? match.route.action : match.route.loader;\n        if (handler2) {\n          [result] = await Promise.all([runHandler(handler2), lazyRoutePromise]);\n        } else if (type === \"action\") {\n          let url = new URL(request.url);\n          let pathname = url.pathname + url.search;\n          throw getInternalRouterError(405, {\n            method: request.method,\n            pathname,\n            routeId: match.route.id\n          });\n        } else {\n          return { type: \"data\" /* data */, result: void 0 };\n        }\n      }\n    } else if (!handler) {\n      let url = new URL(request.url);\n      let pathname = url.pathname + url.search;\n      throw getInternalRouterError(404, {\n        pathname\n      });\n    } else {\n      result = await runHandler(handler);\n    }\n  } catch (e) {\n    return { type: \"error\" /* error */, result: e };\n  } finally {\n    if (onReject) {\n      request.signal.removeEventListener(\"abort\", onReject);\n    }\n  }\n  return result;\n}\nasync function parseResponseBody(response) {\n  let contentType = response.headers.get(\"Content-Type\");\n  if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n    return response.body == null ? null : response.json();\n  }\n  return response.text();\n}\nasync function convertDataStrategyResultToDataResult(dataStrategyResult) {\n  let { result, type } = dataStrategyResult;\n  if (isResponse(result)) {\n    let data2;\n    try {\n      data2 = await parseResponseBody(result);\n    } catch (e) {\n      return { type: \"error\" /* error */, error: e };\n    }\n    if (type === \"error\" /* error */) {\n      return {\n        type: \"error\" /* error */,\n        error: new ErrorResponseImpl(result.status, result.statusText, data2),\n        statusCode: result.status,\n        headers: result.headers\n      };\n    }\n    return {\n      type: \"data\" /* data */,\n      data: data2,\n      statusCode: result.status,\n      headers: result.headers\n    };\n  }\n  if (type === \"error\" /* error */) {\n    if (isDataWithResponseInit(result)) {\n      if (result.data instanceof Error) {\n        return {\n          type: \"error\" /* error */,\n          error: result.data,\n          statusCode: result.init?.status,\n          headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n        };\n      }\n      return {\n        type: \"error\" /* error */,\n        error: dataWithResponseInitToErrorResponse(result),\n        statusCode: isRouteErrorResponse(result) ? result.status : void 0,\n        headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n      };\n    }\n    return {\n      type: \"error\" /* error */,\n      error: result,\n      statusCode: isRouteErrorResponse(result) ? result.status : void 0\n    };\n  }\n  if (isDataWithResponseInit(result)) {\n    return {\n      type: \"data\" /* data */,\n      data: result.data,\n      statusCode: result.init?.status,\n      headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n    };\n  }\n  return { type: \"data\" /* data */, data: result };\n}\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename) {\n  let location = response.headers.get(\"Location\");\n  invariant(\n    location,\n    \"Redirects returned/thrown from loaders/actions must have a Location header\"\n  );\n  if (!isAbsoluteUrl(location)) {\n    let trimmedMatches = matches.slice(\n      0,\n      matches.findIndex((m) => m.route.id === routeId) + 1\n    );\n    location = normalizeTo(\n      new URL(request.url),\n      trimmedMatches,\n      basename,\n      location\n    );\n    response.headers.set(\"Location\", location);\n  }\n  return response;\n}\nvar invalidProtocols = [\n  \"about:\",\n  \"blob:\",\n  \"chrome:\",\n  \"chrome-untrusted:\",\n  \"content:\",\n  \"data:\",\n  \"devtools:\",\n  \"file:\",\n  \"filesystem:\",\n  // eslint-disable-next-line no-script-url\n  \"javascript:\"\n];\nfunction normalizeRedirectLocation(location, currentUrl, basename, historyInstance) {\n  if (isAbsoluteUrl(location)) {\n    let normalizedLocation = location;\n    let url = normalizedLocation.startsWith(\"//\") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);\n    if (invalidProtocols.includes(url.protocol)) {\n      throw new Error(\"Invalid redirect location\");\n    }\n    let isSameBasename = stripBasename(url.pathname, basename) != null;\n    if (url.origin === currentUrl.origin && isSameBasename) {\n      return removeDoubleSlashes(url.pathname) + url.search + url.hash;\n    }\n  }\n  try {\n    let url = historyInstance.createURL(location);\n    if (invalidProtocols.includes(url.protocol)) {\n      throw new Error(\"Invalid redirect location\");\n    }\n  } catch (e) {\n  }\n  return location;\n}\nfunction createClientSideRequest(history, location, signal, submission) {\n  let url = history.createURL(stripHashFromPath(location)).toString();\n  let init = { signal };\n  if (submission && isMutationMethod(submission.formMethod)) {\n    let { formMethod, formEncType } = submission;\n    init.method = formMethod.toUpperCase();\n    if (formEncType === \"application/json\") {\n      init.headers = new Headers({ \"Content-Type\": formEncType });\n      init.body = JSON.stringify(submission.json);\n    } else if (formEncType === \"text/plain\") {\n      init.body = submission.text;\n    } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n      init.body = convertFormDataToSearchParams(submission.formData);\n    } else {\n      init.body = submission.formData;\n    }\n  }\n  return new Request(url, init);\n}\nfunction createDataFunctionUrl(request, path) {\n  let url = new URL(request.url);\n  let parsed = typeof path === \"string\" ? parsePath(path) : path;\n  url.pathname = parsed.pathname || \"/\";\n  if (parsed.search) {\n    let searchParams = new URLSearchParams(parsed.search);\n    let indexValues = searchParams.getAll(\"index\");\n    searchParams.delete(\"index\");\n    for (let value of indexValues.filter(Boolean)) {\n      searchParams.append(\"index\", value);\n    }\n    url.search = searchParams.size ? `?${searchParams.toString()}` : \"\";\n  } else {\n    url.search = \"\";\n  }\n  url.hash = parsed.hash || \"\";\n  return url;\n}\nfunction convertFormDataToSearchParams(formData) {\n  let searchParams = new URLSearchParams();\n  for (let [key, value] of formData.entries()) {\n    searchParams.append(key, typeof value === \"string\" ? value : value.name);\n  }\n  return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n  let formData = new FormData();\n  for (let [key, value] of searchParams.entries()) {\n    formData.append(key, value);\n  }\n  return formData;\n}\nfunction processRouteLoaderData(matches, results, pendingActionResult, isStaticHandler = false, skipLoaderErrorBubbling = false) {\n  let loaderData = {};\n  let errors = null;\n  let statusCode;\n  let foundError = false;\n  let loaderHeaders = {};\n  let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : void 0;\n  matches.forEach((match) => {\n    if (!(match.route.id in results)) {\n      return;\n    }\n    let id = match.route.id;\n    let result = results[id];\n    invariant(\n      !isRedirectResult(result),\n      \"Cannot handle redirect results in processLoaderData\"\n    );\n    if (isErrorResult(result)) {\n      let error = result.error;\n      if (pendingError !== void 0) {\n        error = pendingError;\n        pendingError = void 0;\n      }\n      errors = errors || {};\n      if (skipLoaderErrorBubbling) {\n        errors[id] = error;\n      } else {\n        let boundaryMatch = findNearestBoundary(matches, id);\n        if (errors[boundaryMatch.route.id] == null) {\n          errors[boundaryMatch.route.id] = error;\n        }\n      }\n      if (!isStaticHandler) {\n        loaderData[id] = ResetLoaderDataSymbol;\n      }\n      if (!foundError) {\n        foundError = true;\n        statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    } else {\n      loaderData[id] = result.data;\n      if (result.statusCode && result.statusCode !== 200 && !foundError) {\n        statusCode = result.statusCode;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    }\n  });\n  if (pendingError !== void 0 && pendingActionResult) {\n    errors = { [pendingActionResult[0]]: pendingError };\n    if (pendingActionResult[2]) {\n      loaderData[pendingActionResult[2]] = void 0;\n    }\n  }\n  return {\n    loaderData,\n    errors,\n    statusCode: statusCode || 200,\n    loaderHeaders\n  };\n}\nfunction processLoaderData(state, matches, results, pendingActionResult, revalidatingFetchers, fetcherResults, workingFetchers) {\n  let { loaderData, errors } = processRouteLoaderData(\n    matches,\n    results,\n    pendingActionResult\n  );\n  revalidatingFetchers.filter((f) => !f.matches || f.matches.some((m) => m.shouldLoad)).forEach((rf) => {\n    let { key, match, controller } = rf;\n    if (controller && controller.signal.aborted) {\n      return;\n    }\n    let result = fetcherResults[key];\n    invariant(result, \"Did not find corresponding fetcher result\");\n    if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n      if (!(errors && errors[boundaryMatch.route.id])) {\n        errors = {\n          ...errors,\n          [boundaryMatch.route.id]: result.error\n        };\n      }\n      workingFetchers.delete(key);\n    } else if (isRedirectResult(result)) {\n      invariant(false, \"Unhandled fetcher revalidation redirect\");\n    } else {\n      let doneFetcher = getDoneFetcher(result.data);\n      workingFetchers.set(key, doneFetcher);\n    }\n  });\n  return { loaderData, errors };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n  let mergedLoaderData = Object.entries(newLoaderData).filter(([, v]) => v !== ResetLoaderDataSymbol).reduce((merged, [k, v]) => {\n    merged[k] = v;\n    return merged;\n  }, {});\n  for (let match of matches) {\n    let id = match.route.id;\n    if (!newLoaderData.hasOwnProperty(id) && loaderData.hasOwnProperty(id) && match.route.loader) {\n      mergedLoaderData[id] = loaderData[id];\n    }\n    if (errors && errors.hasOwnProperty(id)) {\n      break;\n    }\n  }\n  return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n  if (!pendingActionResult) {\n    return {};\n  }\n  return isErrorResult(pendingActionResult[1]) ? {\n    // Clear out prior actionData on errors\n    actionData: {}\n  } : {\n    actionData: {\n      [pendingActionResult[0]]: pendingActionResult[1].data\n    }\n  };\n}\nfunction findNearestBoundary(matches, routeId) {\n  let eligibleMatches = routeId ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1) : [...matches];\n  return eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n  let route = routes.length === 1 ? routes[0] : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n    id: `__shim-error-route__`\n  };\n  return {\n    matches: [\n      {\n        params: {},\n        pathname: \"\",\n        pathnameBase: \"\",\n        route\n      }\n    ],\n    route\n  };\n}\nfunction getInternalRouterError(status, {\n  pathname,\n  routeId,\n  method,\n  type,\n  message\n} = {}) {\n  let statusText = \"Unknown Server Error\";\n  let errorMessage = \"Unknown @remix-run/router error\";\n  if (status === 400) {\n    statusText = \"Bad Request\";\n    if (method && pathname && routeId) {\n      errorMessage = `You made a ${method} request to \"${pathname}\" but did not provide a \\`loader\\` for route \"${routeId}\", so there is no way to handle the request.`;\n    } else if (type === \"invalid-body\") {\n      errorMessage = \"Unable to encode submission body\";\n    }\n  } else if (status === 403) {\n    statusText = \"Forbidden\";\n    errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n  } else if (status === 404) {\n    statusText = \"Not Found\";\n    errorMessage = `No route matches URL \"${pathname}\"`;\n  } else if (status === 405) {\n    statusText = \"Method Not Allowed\";\n    if (method && pathname && routeId) {\n      errorMessage = `You made a ${method.toUpperCase()} request to \"${pathname}\" but did not provide an \\`action\\` for route \"${routeId}\", so there is no way to handle the request.`;\n    } else if (method) {\n      errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n    }\n  }\n  return new ErrorResponseImpl(\n    status || 500,\n    statusText,\n    new Error(errorMessage),\n    true\n  );\n}\nfunction findRedirect(results) {\n  let entries = Object.entries(results);\n  for (let i = entries.length - 1; i >= 0; i--) {\n    let [key, result] = entries[i];\n    if (isRedirectResult(result)) {\n      return { key, result };\n    }\n  }\n}\nfunction stripHashFromPath(path) {\n  let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n  return createPath({ ...parsedPath, hash: \"\" });\n}\nfunction isHashChangeOnly(a, b) {\n  if (a.pathname !== b.pathname || a.search !== b.search) {\n    return false;\n  }\n  if (a.hash === \"\") {\n    return b.hash !== \"\";\n  } else if (a.hash === b.hash) {\n    return true;\n  } else if (b.hash !== \"\") {\n    return true;\n  }\n  return false;\n}\nfunction dataWithResponseInitToResponse(data2) {\n  return Response.json(data2.data, data2.init ?? void 0);\n}\nfunction dataWithResponseInitToErrorResponse(data2) {\n  return new ErrorResponseImpl(\n    data2.init?.status ?? 500,\n    data2.init?.statusText ?? \"Internal Server Error\",\n    data2.data\n  );\n}\nfunction isDataStrategyResults(result) {\n  return result != null && typeof result === \"object\" && Object.entries(result).every(\n    ([key, value]) => typeof key === \"string\" && isDataStrategyResult(value)\n  );\n}\nfunction isDataStrategyResult(result) {\n  return result != null && typeof result === \"object\" && \"type\" in result && \"result\" in result && (result.type === \"data\" /* data */ || result.type === \"error\" /* error */);\n}\nfunction isRedirectDataStrategyResult(result) {\n  return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isErrorResult(result) {\n  return result.type === \"error\" /* error */;\n}\nfunction isRedirectResult(result) {\n  return (result && result.type) === \"redirect\" /* redirect */;\n}\nfunction isDataWithResponseInit(value) {\n  return typeof value === \"object\" && value != null && \"type\" in value && \"data\" in value && \"init\" in value && value.type === \"DataWithResponseInit\";\n}\nfunction isResponse(value) {\n  return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectStatusCode(statusCode) {\n  return redirectStatusCodes.has(statusCode);\n}\nfunction isRedirectResponse(result) {\n  return isResponse(result) && isRedirectStatusCode(result.status) && result.headers.has(\"Location\");\n}\nfunction isValidMethod(method) {\n  return validRequestMethods.has(method.toUpperCase());\n}\nfunction isMutationMethod(method) {\n  return validMutationMethods.has(method.toUpperCase());\n}\nfunction hasNakedIndexQuery(search) {\n  return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n  let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n  if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n    return matches[matches.length - 1];\n  }\n  let pathMatches = getPathContributingMatches(matches);\n  return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n  let { formMethod, formAction, formEncType, text, formData, json } = navigation;\n  if (!formMethod || !formAction || !formEncType) {\n    return;\n  }\n  if (text != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: void 0,\n      json: void 0,\n      text\n    };\n  } else if (formData != null) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData,\n      json: void 0,\n      text: void 0\n    };\n  } else if (json !== void 0) {\n    return {\n      formMethod,\n      formAction,\n      formEncType,\n      formData: void 0,\n      json,\n      text: void 0\n    };\n  }\n}\nfunction getLoadingNavigation(location, matches, historyAction, submission) {\n  if (submission) {\n    let navigation = {\n      state: \"loading\",\n      location,\n      matches,\n      historyAction,\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text\n    };\n    return navigation;\n  } else {\n    let navigation = {\n      state: \"loading\",\n      location,\n      matches,\n      historyAction,\n      formMethod: void 0,\n      formAction: void 0,\n      formEncType: void 0,\n      formData: void 0,\n      json: void 0,\n      text: void 0\n    };\n    return navigation;\n  }\n}\nfunction getSubmittingNavigation(location, matches, historyAction, submission) {\n  let navigation = {\n    state: \"submitting\",\n    location,\n    matches,\n    historyAction,\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text\n  };\n  return navigation;\n}\nfunction getLoadingFetcher(submission, data2) {\n  if (submission) {\n    let fetcher = {\n      state: \"loading\",\n      formMethod: submission.formMethod,\n      formAction: submission.formAction,\n      formEncType: submission.formEncType,\n      formData: submission.formData,\n      json: submission.json,\n      text: submission.text,\n      data: data2\n    };\n    return fetcher;\n  } else {\n    let fetcher = {\n      state: \"loading\",\n      formMethod: void 0,\n      formAction: void 0,\n      formEncType: void 0,\n      formData: void 0,\n      json: void 0,\n      text: void 0,\n      data: data2\n    };\n    return fetcher;\n  }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n  let fetcher = {\n    state: \"submitting\",\n    formMethod: submission.formMethod,\n    formAction: submission.formAction,\n    formEncType: submission.formEncType,\n    formData: submission.formData,\n    json: submission.json,\n    text: submission.text,\n    data: existingFetcher ? existingFetcher.data : void 0\n  };\n  return fetcher;\n}\nfunction getDoneFetcher(data2) {\n  let fetcher = {\n    state: \"idle\",\n    formMethod: void 0,\n    formAction: void 0,\n    formEncType: void 0,\n    formData: void 0,\n    json: void 0,\n    text: void 0,\n    data: data2\n  };\n  return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n  try {\n    let sessionPositions = _window.sessionStorage.getItem(\n      TRANSITIONS_STORAGE_KEY\n    );\n    if (sessionPositions) {\n      let json = JSON.parse(sessionPositions);\n      for (let [k, v] of Object.entries(json || {})) {\n        if (v && Array.isArray(v)) {\n          transitions.set(k, new Set(v || []));\n        }\n      }\n    }\n  } catch (e) {\n  }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n  if (transitions.size > 0) {\n    let json = {};\n    for (let [k, v] of transitions) {\n      json[k] = [...v];\n    }\n    try {\n      _window.sessionStorage.setItem(\n        TRANSITIONS_STORAGE_KEY,\n        JSON.stringify(json)\n      );\n    } catch (error) {\n      warning(\n        false,\n        `Failed to save applied view transitions in sessionStorage (${error}).`\n      );\n    }\n  }\n}\nfunction createDeferred() {\n  let resolve;\n  let reject;\n  let promise = new Promise((res, rej) => {\n    resolve = async (val) => {\n      res(val);\n      try {\n        await promise;\n      } catch (e) {\n      }\n    };\n    reject = async (error) => {\n      rej(error);\n      try {\n        await promise;\n      } catch (e) {\n      }\n    };\n  });\n  return {\n    promise,\n    //@ts-ignore\n    resolve,\n    //@ts-ignore\n    reject\n  };\n}\n\n// lib/context.ts\nimport * as React from \"react\";\nvar DataRouterContext = React.createContext(null);\nDataRouterContext.displayName = \"DataRouter\";\nvar DataRouterStateContext = React.createContext(null);\nDataRouterStateContext.displayName = \"DataRouterState\";\nvar RSCRouterContext = React.createContext(false);\nfunction useIsRSCRouterContext() {\n  return React.useContext(RSCRouterContext);\n}\nvar ViewTransitionContext = React.createContext({\n  isTransitioning: false\n});\nViewTransitionContext.displayName = \"ViewTransition\";\nvar FetchersContext = React.createContext(\n  /* @__PURE__ */ new Map()\n);\nFetchersContext.displayName = \"Fetchers\";\nvar AwaitContext = React.createContext(null);\nAwaitContext.displayName = \"Await\";\nvar AwaitContextProvider = (props) => React.createElement(AwaitContext.Provider, props);\nvar NavigationContext = React.createContext(\n  null\n);\nNavigationContext.displayName = \"Navigation\";\nvar LocationContext = React.createContext(\n  null\n);\nLocationContext.displayName = \"Location\";\nvar RouteContext = React.createContext({\n  outlet: null,\n  matches: [],\n  isDataRoute: false\n});\nRouteContext.displayName = \"Route\";\nvar RouteErrorContext = React.createContext(null);\nRouteErrorContext.displayName = \"RouteError\";\nvar ENABLE_DEV_WARNINGS = true;\n\n// lib/hooks.tsx\nimport * as React2 from \"react\";\n\n// lib/errors.ts\nvar ERROR_DIGEST_BASE = \"REACT_ROUTER_ERROR\";\nvar ERROR_DIGEST_REDIRECT = \"REDIRECT\";\nvar ERROR_DIGEST_ROUTE_ERROR_RESPONSE = \"ROUTE_ERROR_RESPONSE\";\nfunction decodeRedirectErrorDigest(digest) {\n  if (digest.startsWith(`${ERROR_DIGEST_BASE}:${ERROR_DIGEST_REDIRECT}:{`)) {\n    try {\n      let parsed = JSON.parse(digest.slice(28));\n      if (typeof parsed === \"object\" && parsed && typeof parsed.status === \"number\" && typeof parsed.statusText === \"string\" && typeof parsed.location === \"string\" && typeof parsed.reloadDocument === \"boolean\" && typeof parsed.replace === \"boolean\") {\n        return parsed;\n      }\n    } catch {\n    }\n  }\n}\nfunction decodeRouteErrorResponseDigest(digest) {\n  if (digest.startsWith(\n    `${ERROR_DIGEST_BASE}:${ERROR_DIGEST_ROUTE_ERROR_RESPONSE}:{`\n  )) {\n    try {\n      let parsed = JSON.parse(digest.slice(40));\n      if (typeof parsed === \"object\" && parsed && typeof parsed.status === \"number\" && typeof parsed.statusText === \"string\") {\n        return new ErrorResponseImpl(\n          parsed.status,\n          parsed.statusText,\n          parsed.data\n        );\n      }\n    } catch {\n    }\n  }\n}\n\n// lib/hooks.tsx\nfunction useHref(to, { relative } = {}) {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n  let { basename, navigator } = React2.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n  let joinedPathname = pathname;\n  if (basename !== \"/\") {\n    joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\nfunction useInRouterContext() {\n  return React2.useContext(LocationContext) != null;\n}\nfunction useLocation() {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n  return React2.useContext(LocationContext).location;\n}\nfunction useNavigationType() {\n  return React2.useContext(LocationContext).navigationType;\n}\nfunction useMatch(pattern) {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n  let { pathname } = useLocation();\n  return React2.useMemo(\n    () => matchPath(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\nvar navigateEffectWarning = `You should call navigate() in a React.useEffect(), not when your component is first rendered.`;\nfunction useIsomorphicLayoutEffect(cb) {\n  let isStatic = React2.useContext(NavigationContext).static;\n  if (!isStatic) {\n    React2.useLayoutEffect(cb);\n  }\n}\nfunction useNavigate() {\n  let { isDataRoute } = React2.useContext(RouteContext);\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\nfunction useNavigateUnstable() {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n  let dataRouterContext = React2.useContext(DataRouterContext);\n  let { basename, navigator } = React2.useContext(NavigationContext);\n  let { matches } = React2.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(getResolveToMatches(matches));\n  let activeRef = React2.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n  let navigate = React2.useCallback(\n    (to, options = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n      if (!activeRef.current) return;\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n      }\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext\n    ]\n  );\n  return navigate;\n}\nvar OutletContext = React2.createContext(null);\nfunction useOutletContext() {\n  return React2.useContext(OutletContext);\n}\nfunction useOutlet(context) {\n  let outlet = React2.useContext(RouteContext).outlet;\n  return React2.useMemo(\n    () => outlet && /* @__PURE__ */ React2.createElement(OutletContext.Provider, { value: context }, outlet),\n    [outlet, context]\n  );\n}\nfunction useParams() {\n  let { matches } = React2.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch?.params ?? {};\n}\nfunction useResolvedPath(to, { relative } = {}) {\n  let { matches } = React2.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(getResolveToMatches(matches));\n  return React2.useMemo(\n    () => resolveTo(\n      to,\n      JSON.parse(routePathnamesJson),\n      locationPathname,\n      relative === \"path\"\n    ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\nfunction useRoutes(routes, locationArg) {\n  return useRoutesImpl(routes, locationArg);\n}\nfunction useRoutesImpl(routes, locationArg, dataRouterOpts) {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n  let { navigator } = React2.useContext(NavigationContext);\n  let { matches: parentMatches } = React2.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n  if (ENABLE_DEV_WARNINGS) {\n    let parentPath = parentRoute && parentRoute.path || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\") || parentPath.endsWith(\"*?\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at \"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the parent route path has no trailing \"*\". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.\n\nPlease change the parent <Route path=\"${parentPath}\"> to <Route path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n  let locationFromContext = useLocation();\n  let location;\n  if (locationArg) {\n    let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n    invariant(\n      parentPathnameBase === \"/\" || parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n  let pathname = location.pathname || \"/\";\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n  let matches = dataRouterOpts && dataRouterOpts.state.matches.length ? (\n    // If we're in a data router, use the matches we've already identified but ensure\n    // we have the latest route instances from the manifest in case elements have changed\n    dataRouterOpts.state.matches.map(\n      (m) => Object.assign(m, {\n        route: dataRouterOpts.manifest[m.route.id] || m.route\n      })\n    )\n  ) : matchRoutes(routes, { pathname: remainingPathname });\n  if (ENABLE_DEV_WARNINGS) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n    warning(\n      matches == null || matches[matches.length - 1].route.element !== void 0 || matches[matches.length - 1].route.Component !== void 0 || matches[matches.length - 1].route.lazy !== void 0,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n    );\n  }\n  let renderedMatches = _renderMatches(\n    matches && matches.map(\n      (match) => Object.assign({}, match, {\n        params: Object.assign({}, parentParams, match.params),\n        pathname: joinPaths([\n          parentPathnameBase,\n          // Re-encode pathnames that were decoded inside matchRoutes.\n          // Pre-encode `%`, `?` and `#` ahead of `encodeLocation` because it uses\n          // `new URL()` internally and we need to prevent it from treating\n          // them as separators\n          navigator.encodeLocation ? navigator.encodeLocation(\n            match.pathname.replace(/%/g, \"%25\").replace(/\\?/g, \"%3F\").replace(/#/g, \"%23\")\n          ).pathname : match.pathname\n        ]),\n        pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([\n          parentPathnameBase,\n          // Re-encode pathnames that were decoded inside matchRoutes\n          // Pre-encode `%`, `?` and `#` ahead of `encodeLocation` because it uses\n          // `new URL()` internally and we need to prevent it from treating\n          // them as separators\n          navigator.encodeLocation ? navigator.encodeLocation(\n            match.pathnameBase.replace(/%/g, \"%25\").replace(/\\?/g, \"%3F\").replace(/#/g, \"%23\")\n          ).pathname : match.pathnameBase\n        ])\n      })\n    ),\n    parentMatches,\n    dataRouterOpts\n  );\n  if (locationArg && renderedMatches) {\n    return /* @__PURE__ */ React2.createElement(\n      LocationContext.Provider,\n      {\n        value: {\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            mask: void 0,\n            ...location\n          },\n          navigationType: \"POP\" /* Pop */\n        }\n      },\n      renderedMatches\n    );\n  }\n  return renderedMatches;\n}\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error) ? `${error.status} ${error.statusText}` : error instanceof Error ? error.message : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n  let devInfo = null;\n  if (ENABLE_DEV_WARNINGS) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n    devInfo = /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\"p\", null, \"\\u{1F4BF} Hey developer \\u{1F44B}\"), /* @__PURE__ */ React2.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own \", /* @__PURE__ */ React2.createElement(\"code\", { style: codeStyles }, \"ErrorBoundary\"), \" or\", \" \", /* @__PURE__ */ React2.createElement(\"code\", { style: codeStyles }, \"errorElement\"), \" prop on your route.\"));\n  }\n  return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\"h2\", null, \"Unexpected Application Error!\"), /* @__PURE__ */ React2.createElement(\"h3\", { style: { fontStyle: \"italic\" } }, message), stack ? /* @__PURE__ */ React2.createElement(\"pre\", { style: preStyles }, stack) : null, devInfo);\n}\nvar defaultErrorElement = /* @__PURE__ */ React2.createElement(DefaultErrorComponent, null);\nvar RenderErrorBoundary = class extends React2.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error\n    };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  static getDerivedStateFromProps(props, state) {\n    if (state.location !== props.location || state.revalidation !== \"idle\" && props.revalidation === \"idle\") {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation\n      };\n    }\n    return {\n      error: props.error !== void 0 ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation\n    };\n  }\n  componentDidCatch(error, errorInfo) {\n    if (this.props.onError) {\n      this.props.onError(error, errorInfo);\n    } else {\n      console.error(\n        \"React Router caught the following error during render\",\n        error\n      );\n    }\n  }\n  render() {\n    let error = this.state.error;\n    if (this.context && typeof error === \"object\" && error && \"digest\" in error && typeof error.digest === \"string\") {\n      const decoded = decodeRouteErrorResponseDigest(error.digest);\n      if (decoded) error = decoded;\n    }\n    let result = error !== void 0 ? /* @__PURE__ */ React2.createElement(RouteContext.Provider, { value: this.props.routeContext }, /* @__PURE__ */ React2.createElement(\n      RouteErrorContext.Provider,\n      {\n        value: error,\n        children: this.props.component\n      }\n    )) : this.props.children;\n    if (this.context) {\n      return /* @__PURE__ */ React2.createElement(RSCErrorHandler, { error }, result);\n    }\n    return result;\n  }\n};\nRenderErrorBoundary.contextType = RSCRouterContext;\nvar errorRedirectHandledMap = /* @__PURE__ */ new WeakMap();\nfunction RSCErrorHandler({\n  children,\n  error\n}) {\n  let { basename } = React2.useContext(NavigationContext);\n  if (typeof error === \"object\" && error && \"digest\" in error && typeof error.digest === \"string\") {\n    let redirect2 = decodeRedirectErrorDigest(error.digest);\n    if (redirect2) {\n      let existingRedirect = errorRedirectHandledMap.get(error);\n      if (existingRedirect) throw existingRedirect;\n      let parsed = parseToInfo(redirect2.location, basename);\n      if (isBrowser && !errorRedirectHandledMap.get(error)) {\n        if (parsed.isExternal || redirect2.reloadDocument) {\n          window.location.href = parsed.absoluteURL || parsed.to;\n        } else {\n          const redirectPromise = Promise.resolve().then(\n            () => window.__reactRouterDataRouter.navigate(parsed.to, {\n              replace: redirect2.replace\n            })\n          );\n          errorRedirectHandledMap.set(error, redirectPromise);\n          throw redirectPromise;\n        }\n      }\n      return /* @__PURE__ */ React2.createElement(\n        \"meta\",\n        {\n          httpEquiv: \"refresh\",\n          content: `0;url=${parsed.absoluteURL || parsed.to}`\n        }\n      );\n    }\n  }\n  return children;\n}\nfunction RenderedRoute({ routeContext, match, children }) {\n  let dataRouterContext = React2.useContext(DataRouterContext);\n  if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n  return /* @__PURE__ */ React2.createElement(RouteContext.Provider, { value: routeContext }, children);\n}\nfunction _renderMatches(matches, parentMatches = [], dataRouterOpts) {\n  let dataRouterState = dataRouterOpts?.state;\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n    if (dataRouterState.errors) {\n      matches = dataRouterState.matches;\n    } else if (parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {\n      matches = dataRouterState.matches;\n    } else {\n      return null;\n    }\n  }\n  let renderedMatches = matches;\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== void 0\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterOpts && dataRouterState) {\n    renderFallback = dataRouterState.renderFallback;\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n      if (match.route.id) {\n        let { loaderData, errors: errors2 } = dataRouterState;\n        let needsToRunLoader = match.route.loader && !loaderData.hasOwnProperty(match.route.id) && (!errors2 || errors2[match.route.id] === void 0);\n        if (match.route.lazy || needsToRunLoader) {\n          if (dataRouterOpts.isStatic) {\n            renderFallback = true;\n          }\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n  let onErrorHandler = dataRouterOpts?.onError;\n  let onError = dataRouterState && onErrorHandler ? (error, errorInfo) => {\n    onErrorHandler(error, {\n      location: dataRouterState.location,\n      params: dataRouterState.matches?.[0]?.params ?? {},\n      pattern: getRoutePattern(dataRouterState.matches),\n      errorInfo\n    });\n  } : void 0;\n  return renderedMatches.reduceRight(\n    (outlet, match, index) => {\n      let error;\n      let shouldRenderHydrateFallback = false;\n      let errorElement = null;\n      let hydrateFallbackElement = null;\n      if (dataRouterState) {\n        error = errors && match.route.id ? errors[match.route.id] : void 0;\n        errorElement = match.route.errorElement || defaultErrorElement;\n        if (renderFallback) {\n          if (fallbackIndex < 0 && index === 0) {\n            warningOnce(\n              \"route-fallback\",\n              false,\n              \"No `HydrateFallback` element provided to render during initial hydration\"\n            );\n            shouldRenderHydrateFallback = true;\n            hydrateFallbackElement = null;\n          } else if (fallbackIndex === index) {\n            shouldRenderHydrateFallback = true;\n            hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n          }\n        }\n      }\n      let matches2 = parentMatches.concat(renderedMatches.slice(0, index + 1));\n      let getChildren = () => {\n        let children;\n        if (error) {\n          children = errorElement;\n        } else if (shouldRenderHydrateFallback) {\n          children = hydrateFallbackElement;\n        } else if (match.route.Component) {\n          children = /* @__PURE__ */ React2.createElement(match.route.Component, null);\n        } else if (match.route.element) {\n          children = match.route.element;\n        } else {\n          children = outlet;\n        }\n        return /* @__PURE__ */ React2.createElement(\n          RenderedRoute,\n          {\n            match,\n            routeContext: {\n              outlet,\n              matches: matches2,\n              isDataRoute: dataRouterState != null\n            },\n            children\n          }\n        );\n      };\n      return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /* @__PURE__ */ React2.createElement(\n        RenderErrorBoundary,\n        {\n          location: dataRouterState.location,\n          revalidation: dataRouterState.revalidation,\n          component: errorElement,\n          error,\n          children: getChildren(),\n          routeContext: { outlet: null, matches: matches2, isDataRoute: true },\n          onError\n        }\n      ) : getChildren();\n    },\n    null\n  );\n}\nfunction getDataRouterConsoleError(hookName) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\nfunction useDataRouterContext(hookName) {\n  let ctx = React2.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\nfunction useDataRouterState(hookName) {\n  let state = React2.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\nfunction useRouteContext(hookName) {\n  let route = React2.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\nfunction useCurrentRouteId(hookName) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\nfunction useRouteId() {\n  return useCurrentRouteId(\"useRouteId\" /* UseRouteId */);\n}\nfunction useNavigation() {\n  let state = useDataRouterState(\"useNavigation\" /* UseNavigation */);\n  return React2.useMemo(() => {\n    let { matches, historyAction, ...rest } = state.navigation;\n    return rest;\n  }, [state.navigation]);\n}\nfunction useRevalidator() {\n  let dataRouterContext = useDataRouterContext(\"useRevalidator\" /* UseRevalidator */);\n  let state = useDataRouterState(\"useRevalidator\" /* UseRevalidator */);\n  let revalidate = React2.useCallback(async () => {\n    await dataRouterContext.router.revalidate();\n  }, [dataRouterContext.router]);\n  return React2.useMemo(\n    () => ({ revalidate, state: state.revalidation }),\n    [revalidate, state.revalidation]\n  );\n}\nfunction useMatches() {\n  let { matches, loaderData } = useDataRouterState(\n    \"useMatches\" /* UseMatches */\n  );\n  return React2.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\nfunction useLoaderData() {\n  let state = useDataRouterState(\"useLoaderData\" /* UseLoaderData */);\n  let routeId = useCurrentRouteId(\"useLoaderData\" /* UseLoaderData */);\n  return state.loaderData[routeId];\n}\nfunction useRouteLoaderData(routeId) {\n  let state = useDataRouterState(\"useRouteLoaderData\" /* UseRouteLoaderData */);\n  return state.loaderData[routeId];\n}\nfunction useActionData() {\n  let state = useDataRouterState(\"useActionData\" /* UseActionData */);\n  let routeId = useCurrentRouteId(\"useLoaderData\" /* UseLoaderData */);\n  return state.actionData ? state.actionData[routeId] : void 0;\n}\nfunction useRouteError() {\n  let error = React2.useContext(RouteErrorContext);\n  let state = useDataRouterState(\"useRouteError\" /* UseRouteError */);\n  let routeId = useCurrentRouteId(\"useRouteError\" /* UseRouteError */);\n  if (error !== void 0) {\n    return error;\n  }\n  return state.errors?.[routeId];\n}\nfunction useAsyncValue() {\n  let value = React2.useContext(AwaitContext);\n  return value?._data;\n}\nfunction useAsyncError() {\n  let value = React2.useContext(AwaitContext);\n  return value?._error;\n}\nvar blockerId = 0;\nfunction useBlocker(shouldBlock) {\n  let { router, basename } = useDataRouterContext(\"useBlocker\" /* UseBlocker */);\n  let state = useDataRouterState(\"useBlocker\" /* UseBlocker */);\n  let [blockerKey, setBlockerKey] = React2.useState(\"\");\n  let blockerFunction = React2.useCallback(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname: stripBasename(currentLocation.pathname, basename) || currentLocation.pathname\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname: stripBasename(nextLocation.pathname, basename) || nextLocation.pathname\n        },\n        historyAction\n      });\n    },\n    [basename, shouldBlock]\n  );\n  React2.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n  React2.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n  return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : IDLE_BLOCKER;\n}\nfunction useNavigateStable() {\n  let { router } = useDataRouterContext(\"useNavigate\" /* UseNavigateStable */);\n  let id = useCurrentRouteId(\"useNavigate\" /* UseNavigateStable */);\n  let activeRef = React2.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n  let navigate = React2.useCallback(\n    async (to, options = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n      if (!activeRef.current) return;\n      if (typeof to === \"number\") {\n        await router.navigate(to);\n      } else {\n        await router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n  return navigate;\n}\nvar alreadyWarned = {};\nfunction warningOnce(key, cond, message) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\nfunction useRoute(...args) {\n  const currentRouteId = useCurrentRouteId(\n    \"useRoute\" /* UseRoute */\n  );\n  const id = args[0] ?? currentRouteId;\n  const state = useDataRouterState(\"useRoute\" /* UseRoute */);\n  const route = state.matches.find(({ route: route2 }) => route2.id === id);\n  if (route === void 0) return void 0;\n  return {\n    handle: route.route.handle,\n    loaderData: state.loaderData[id],\n    actionData: state.actionData?.[id]\n  };\n}\nfunction toRouterStateMatch(match) {\n  return {\n    id: match.route.id,\n    pathname: match.pathname,\n    params: match.params,\n    handle: match.route.handle\n  };\n}\nfunction useRouterState() {\n  let {\n    location,\n    historyAction: type,\n    matches,\n    navigation\n  } = useDataRouterState(\"unstable_useRouterState\" /* UseRouterState */);\n  let active = React2.useMemo(\n    () => ({\n      type,\n      location,\n      searchParams: new URLSearchParams(location.search),\n      params: matches[matches.length - 1]?.params ?? {},\n      matches: matches.map((m) => toRouterStateMatch(m))\n    }),\n    [location, matches, type]\n  );\n  let pending = React2.useMemo(() => {\n    if (navigation.state === \"idle\") return null;\n    let shared = {\n      type: navigation.historyAction,\n      location: navigation.location,\n      searchParams: new URLSearchParams(navigation.location.search),\n      params: navigation.matches[navigation.matches.length - 1]?.params ?? {},\n      matches: navigation.matches.map((m) => toRouterStateMatch(m))\n    };\n    return navigation.state === \"loading\" ? {\n      ...shared,\n      state: \"loading\",\n      formMethod: navigation.formMethod,\n      formAction: navigation.formAction,\n      formEncType: navigation.formEncType,\n      formData: navigation.formData,\n      json: navigation.json,\n      text: navigation.text\n    } : {\n      ...shared,\n      state: \"submitting\",\n      formMethod: navigation.formMethod,\n      formAction: navigation.formAction,\n      formEncType: navigation.formEncType,\n      formData: navigation.formData,\n      json: navigation.json,\n      text: navigation.text\n    };\n  }, [navigation]);\n  return React2.useMemo(\n    () => ({ active, pending }),\n    [active, pending]\n  );\n}\n\n// lib/components.tsx\nimport * as React3 from \"react\";\n\n// lib/server-runtime/warnings.ts\nvar alreadyWarned2 = {};\nfunction warnOnce(condition, message) {\n  if (!condition && !alreadyWarned2[message]) {\n    alreadyWarned2[message] = true;\n    console.warn(message);\n  }\n}\n\n// lib/components.tsx\nvar USE_OPTIMISTIC = \"useOptimistic\";\nvar useOptimisticImpl = React3[USE_OPTIMISTIC];\nvar stableUseOptimisticSetter = () => void 0;\nfunction useOptimisticSafe(val) {\n  if (useOptimisticImpl) {\n    return useOptimisticImpl(val);\n  } else {\n    return [val, stableUseOptimisticSetter];\n  }\n}\nfunction mapRouteProperties(route) {\n  let updates = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.hasErrorBoundary || route.ErrorBoundary != null || route.errorElement != null\n  };\n  if (route.Component) {\n    if (ENABLE_DEV_WARNINGS) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - `Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React3.createElement(route.Component),\n      Component: void 0\n    });\n  }\n  if (route.HydrateFallback) {\n    if (ENABLE_DEV_WARNINGS) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React3.createElement(route.HydrateFallback),\n      HydrateFallback: void 0\n    });\n  }\n  if (route.ErrorBoundary) {\n    if (ENABLE_DEV_WARNINGS) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React3.createElement(route.ErrorBoundary),\n      ErrorBoundary: void 0\n    });\n  }\n  return updates;\n}\nvar hydrationRouteProperties = [\n  \"HydrateFallback\",\n  \"hydrateFallbackElement\"\n];\nfunction createMemoryRouter(routes, opts) {\n  return createRouter({\n    basename: opts?.basename,\n    getContext: opts?.getContext,\n    future: opts?.future,\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    hydrationRouteProperties,\n    mapRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n    instrumentations: opts?.instrumentations\n  }).initialize();\n}\nvar Deferred = class {\n  constructor() {\n    this.status = \"pending\";\n    this.promise = new Promise((resolve, reject) => {\n      this.resolve = (value) => {\n        if (this.status === \"pending\") {\n          this.status = \"resolved\";\n          resolve(value);\n        }\n      };\n      this.reject = (reason) => {\n        if (this.status === \"pending\") {\n          this.status = \"rejected\";\n          reject(reason);\n        }\n      };\n    });\n  }\n};\nfunction RouterProvider({\n  router,\n  flushSync: reactDomFlushSyncImpl,\n  onError,\n  useTransitions\n}) {\n  let unstable_rsc = useIsRSCRouterContext();\n  useTransitions = unstable_rsc || useTransitions;\n  let [_state, setStateImpl] = React3.useState(router.state);\n  let [state, setOptimisticState] = useOptimisticSafe(_state);\n  let [pendingState, setPendingState] = React3.useState();\n  let [vtContext, setVtContext] = React3.useState({\n    isTransitioning: false\n  });\n  let [renderDfd, setRenderDfd] = React3.useState();\n  let [transition, setTransition] = React3.useState();\n  let [interruption, setInterruption] = React3.useState();\n  let fetcherData = React3.useRef(/* @__PURE__ */ new Map());\n  let setState = React3.useCallback(\n    (newState, { deletedFetchers, newErrors, flushSync, viewTransitionOpts }) => {\n      if (newErrors && onError) {\n        Object.values(newErrors).forEach(\n          (error) => onError(error, {\n            location: newState.location,\n            params: newState.matches[0]?.params ?? {},\n            pattern: getRoutePattern(newState.matches)\n          })\n        );\n      }\n      newState.fetchers.forEach((fetcher, key) => {\n        if (fetcher.data !== void 0) {\n          fetcherData.current.set(key, fetcher.data);\n        }\n      });\n      deletedFetchers.forEach((key) => fetcherData.current.delete(key));\n      warnOnce(\n        flushSync === false || reactDomFlushSyncImpl != null,\n        'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable.  Please update your app to `import { RouterProvider } from \"react-router/dom\"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.'\n      );\n      let isViewTransitionAvailable = router.window != null && router.window.document != null && typeof router.window.document.startViewTransition === \"function\";\n      warnOnce(\n        viewTransitionOpts == null || isViewTransitionAvailable,\n        \"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available.\"\n      );\n      if (!viewTransitionOpts || !isViewTransitionAvailable) {\n        if (reactDomFlushSyncImpl && flushSync) {\n          reactDomFlushSyncImpl(() => setStateImpl(newState));\n        } else if (useTransitions === false) {\n          setStateImpl(newState);\n        } else {\n          React3.startTransition(() => {\n            if (useTransitions === true) {\n              setOptimisticState((s) => getOptimisticRouterState(s, newState));\n            }\n            setStateImpl(newState);\n          });\n        }\n        return;\n      }\n      if (reactDomFlushSyncImpl && flushSync) {\n        reactDomFlushSyncImpl(() => {\n          if (transition) {\n            renderDfd?.resolve();\n            transition.skipTransition();\n          }\n          setVtContext({\n            isTransitioning: true,\n            flushSync: true,\n            currentLocation: viewTransitionOpts.currentLocation,\n            nextLocation: viewTransitionOpts.nextLocation\n          });\n        });\n        let t = router.window.document.startViewTransition(() => {\n          reactDomFlushSyncImpl(() => setStateImpl(newState));\n        });\n        t.finished.finally(() => {\n          reactDomFlushSyncImpl(() => {\n            setRenderDfd(void 0);\n            setTransition(void 0);\n            setPendingState(void 0);\n            setVtContext({ isTransitioning: false });\n          });\n        });\n        reactDomFlushSyncImpl(() => setTransition(t));\n        return;\n      }\n      if (transition) {\n        renderDfd?.resolve();\n        transition.skipTransition();\n        setInterruption({\n          state: newState,\n          currentLocation: viewTransitionOpts.currentLocation,\n          nextLocation: viewTransitionOpts.nextLocation\n        });\n      } else {\n        setPendingState(newState);\n        setVtContext({\n          isTransitioning: true,\n          flushSync: false,\n          currentLocation: viewTransitionOpts.currentLocation,\n          nextLocation: viewTransitionOpts.nextLocation\n        });\n      }\n    },\n    [\n      router.window,\n      reactDomFlushSyncImpl,\n      transition,\n      renderDfd,\n      useTransitions,\n      setOptimisticState,\n      onError\n    ]\n  );\n  React3.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n  React3.useEffect(() => {\n    if (vtContext.isTransitioning && !vtContext.flushSync) {\n      setRenderDfd(new Deferred());\n    }\n  }, [vtContext]);\n  React3.useEffect(() => {\n    if (renderDfd && pendingState && router.window) {\n      let newState = pendingState;\n      let renderPromise = renderDfd.promise;\n      let transition2 = router.window.document.startViewTransition(async () => {\n        if (useTransitions === false) {\n          setStateImpl(newState);\n        } else {\n          React3.startTransition(() => {\n            if (useTransitions === true) {\n              setOptimisticState((s) => getOptimisticRouterState(s, newState));\n            }\n            setStateImpl(newState);\n          });\n        }\n        await renderPromise;\n      });\n      transition2.finished.finally(() => {\n        setRenderDfd(void 0);\n        setTransition(void 0);\n        setPendingState(void 0);\n        setVtContext({ isTransitioning: false });\n      });\n      setTransition(transition2);\n    }\n  }, [\n    pendingState,\n    renderDfd,\n    router.window,\n    useTransitions,\n    setOptimisticState\n  ]);\n  React3.useEffect(() => {\n    if (renderDfd && pendingState && state.location.key === pendingState.location.key) {\n      renderDfd.resolve();\n    }\n  }, [renderDfd, transition, state.location, pendingState]);\n  React3.useEffect(() => {\n    if (!vtContext.isTransitioning && interruption) {\n      setPendingState(interruption.state);\n      setVtContext({\n        isTransitioning: true,\n        flushSync: false,\n        currentLocation: interruption.currentLocation,\n        nextLocation: interruption.nextLocation\n      });\n      setInterruption(void 0);\n    }\n  }, [vtContext.isTransitioning, interruption]);\n  let navigator = React3.useMemo(() => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state2, opts) => router.navigate(to, {\n        state: state2,\n        preventScrollReset: opts?.preventScrollReset\n      }),\n      replace: (to, state2, opts) => router.navigate(to, {\n        replace: true,\n        state: state2,\n        preventScrollReset: opts?.preventScrollReset\n      })\n    };\n  }, [router]);\n  let basename = router.basename || \"/\";\n  let dataRouterContext = React3.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n      onError\n    }),\n    [router, navigator, basename, onError]\n  );\n  return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React3.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React3.createElement(FetchersContext.Provider, { value: fetcherData.current }, /* @__PURE__ */ React3.createElement(ViewTransitionContext.Provider, { value: vtContext }, /* @__PURE__ */ React3.createElement(\n    Router,\n    {\n      basename,\n      location: state.location,\n      navigationType: state.historyAction,\n      navigator,\n      useTransitions\n    },\n    /* @__PURE__ */ React3.createElement(\n      MemoizedDataRoutes,\n      {\n        routes: router.routes,\n        manifest: router.manifest,\n        future: router.future,\n        state,\n        isStatic: false,\n        onError\n      }\n    )\n  ))))), null);\n}\nfunction getOptimisticRouterState(currentState, newState) {\n  return {\n    // Don't surface \"current location specific\" stuff mid-navigation\n    // (historyAction, location, matches, loaderData, errors, initialized,\n    // restoreScroll, preventScrollReset, blockers, etc.)\n    ...currentState,\n    // Only surface \"pending/in-flight stuff\"\n    // (navigation, revalidation, actionData, fetchers, )\n    navigation: newState.navigation.state !== \"idle\" ? newState.navigation : currentState.navigation,\n    revalidation: newState.revalidation !== \"idle\" ? newState.revalidation : currentState.revalidation,\n    actionData: newState.navigation.state !== \"submitting\" ? newState.actionData : currentState.actionData,\n    fetchers: newState.fetchers\n  };\n}\nvar MemoizedDataRoutes = React3.memo(DataRoutes2);\nfunction DataRoutes2({\n  routes,\n  manifest,\n  future,\n  state,\n  isStatic,\n  onError\n}) {\n  return useRoutesImpl(routes, void 0, {\n    manifest,\n    state,\n    isStatic,\n    onError,\n    future\n  });\n}\nfunction MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  useTransitions\n}) {\n  let historyRef = React3.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true\n    });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React3.useState({\n    action: history.action,\n    location: history.location\n  });\n  let setState = React3.useCallback(\n    (newState) => {\n      if (useTransitions === false) {\n        setStateImpl(newState);\n      } else {\n        React3.startTransition(() => setStateImpl(newState));\n      }\n    },\n    [useTransitions]\n  );\n  React3.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  return /* @__PURE__ */ React3.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location: state.location,\n      navigationType: state.action,\n      navigator: history,\n      useTransitions\n    }\n  );\n}\nfunction Navigate({\n  to,\n  replace: replace2,\n  state,\n  relative\n}) {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n  let { static: isStatic } = React3.useContext(NavigationContext);\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`\n  );\n  let { matches } = React3.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n  React3.useEffect(() => {\n    navigate(JSON.parse(jsonPath), { replace: replace2, state, relative });\n  }, [navigate, jsonPath, relative, replace2, state]);\n  return null;\n}\nfunction Outlet(props) {\n  return useOutlet(props.context);\n}\nfunction Route(props) {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\nfunction Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = \"POP\" /* Pop */,\n  navigator,\n  static: staticProp = false,\n  useTransitions\n}) {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`\n  );\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React3.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      useTransitions,\n      future: {}\n    }),\n    [basename, navigator, staticProp, useTransitions]\n  );\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n    mask\n  } = locationProp;\n  let locationContext = React3.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n    if (trailingPathname == null) {\n      return null;\n    }\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n        mask\n      },\n      navigationType\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType, mask]);\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL \"${pathname}${search}${hash}\" because it does not start with the basename, so the <Router> won't render anything.`\n  );\n  if (locationContext == null) {\n    return null;\n  }\n  return /* @__PURE__ */ React3.createElement(NavigationContext.Provider, { value: navigationContext }, /* @__PURE__ */ React3.createElement(LocationContext.Provider, { children, value: locationContext }));\n}\nfunction Routes({\n  children,\n  location\n}) {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\nfunction Await({\n  children,\n  errorElement,\n  resolve\n}) {\n  let dataRouterContext = React3.useContext(DataRouterContext);\n  let dataRouterStateContext = React3.useContext(DataRouterStateContext);\n  let onError = React3.useCallback(\n    (error, errorInfo) => {\n      if (dataRouterContext && dataRouterContext.onError && dataRouterStateContext) {\n        dataRouterContext.onError(error, {\n          location: dataRouterStateContext.location,\n          params: dataRouterStateContext.matches[0]?.params || {},\n          pattern: getRoutePattern(dataRouterStateContext.matches),\n          errorInfo\n        });\n      }\n    },\n    [dataRouterContext, dataRouterStateContext]\n  );\n  return /* @__PURE__ */ React3.createElement(\n    AwaitErrorBoundary,\n    {\n      resolve,\n      errorElement,\n      onError\n    },\n    /* @__PURE__ */ React3.createElement(ResolveAwait, null, children)\n  );\n}\nvar AwaitErrorBoundary = class extends React3.Component {\n  constructor(props) {\n    super(props);\n    this.state = { error: null };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  componentDidCatch(error, errorInfo) {\n    if (this.props.onError) {\n      this.props.onError(error, errorInfo);\n    } else {\n      console.error(\n        \"<Await> caught the following error during render\",\n        error,\n        errorInfo\n      );\n    }\n  }\n  render() {\n    let { children, errorElement, resolve } = this.props;\n    let promise = null;\n    let status = 0 /* pending */;\n    if (!(resolve instanceof Promise)) {\n      status = 1 /* success */;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      status = 2 /* error */;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {\n      });\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if (resolve._tracked) {\n      promise = resolve;\n      status = \"_error\" in promise ? 2 /* error */ : \"_data\" in promise ? 1 /* success */ : 0 /* pending */;\n    } else {\n      status = 0 /* pending */;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data2) => Object.defineProperty(resolve, \"_data\", { get: () => data2 }),\n        (error) => {\n          this.props.onError?.(error);\n          Object.defineProperty(resolve, \"_error\", { get: () => error });\n        }\n      );\n    }\n    if (status === 2 /* error */ && !errorElement) {\n      throw promise._error;\n    }\n    if (status === 2 /* error */) {\n      return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children: errorElement });\n    }\n    if (status === 1 /* success */) {\n      return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children });\n    }\n    throw promise;\n  }\n};\nfunction ResolveAwait({\n  children\n}) {\n  let data2 = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data2) : children;\n  return /* @__PURE__ */ React3.createElement(React3.Fragment, null, toRender);\n}\nfunction createRoutesFromChildren(children, parentPath = []) {\n  let routes = [];\n  React3.Children.forEach(children, (element, index) => {\n    if (!React3.isValidElement(element)) {\n      return;\n    }\n    let treePath = [...parentPath, index];\n    if (element.type === React3.Fragment) {\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n    invariant(\n      element.type === Route,\n      `[${typeof element.type === \"string\" ? element.type : element.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n    let route = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      middleware: element.props.middleware,\n      loader: element.props.loader,\n      action: element.props.action,\n      hydrateFallbackElement: element.props.hydrateFallbackElement,\n      HydrateFallback: element.props.HydrateFallback,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary: element.props.hasErrorBoundary === true || element.props.ErrorBoundary != null || element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy\n    };\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n    routes.push(route);\n  });\n  return routes;\n}\nvar createRoutesFromElements = createRoutesFromChildren;\nfunction renderMatches(matches) {\n  return _renderMatches(matches);\n}\nfunction useRouteComponentProps() {\n  return {\n    params: useParams(),\n    loaderData: useLoaderData(),\n    actionData: useActionData(),\n    matches: useMatches()\n  };\n}\nfunction WithComponentProps({\n  children\n}) {\n  const props = useRouteComponentProps();\n  return React3.cloneElement(children, props);\n}\nfunction withComponentProps(Component4) {\n  return function WithComponentProps2() {\n    const props = useRouteComponentProps();\n    return React3.createElement(Component4, props);\n  };\n}\nfunction useHydrateFallbackProps() {\n  return {\n    params: useParams(),\n    loaderData: useLoaderData(),\n    actionData: useActionData()\n  };\n}\nfunction WithHydrateFallbackProps({\n  children\n}) {\n  const props = useHydrateFallbackProps();\n  return React3.cloneElement(children, props);\n}\nfunction withHydrateFallbackProps(HydrateFallback) {\n  return function WithHydrateFallbackProps2() {\n    const props = useHydrateFallbackProps();\n    return React3.createElement(HydrateFallback, props);\n  };\n}\nfunction useErrorBoundaryProps() {\n  return {\n    params: useParams(),\n    loaderData: useLoaderData(),\n    actionData: useActionData(),\n    error: useRouteError()\n  };\n}\nfunction WithErrorBoundaryProps({\n  children\n}) {\n  const props = useErrorBoundaryProps();\n  return React3.cloneElement(children, props);\n}\nfunction withErrorBoundaryProps(ErrorBoundary) {\n  return function WithErrorBoundaryProps2() {\n    const props = useErrorBoundaryProps();\n    return React3.createElement(ErrorBoundary, props);\n  };\n}\n\n// lib/dom/dom.ts\nvar defaultMethod = \"get\";\nvar defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n  return typeof HTMLElement !== \"undefined\" && object instanceof HTMLElement;\n}\nfunction isButtonElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n  return event.button === 0 && // Ignore everything but left clicks\n  (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n  !isModifiedEvent(event);\n}\nfunction createSearchParams(init = \"\") {\n  return new URLSearchParams(\n    typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo2, key) => {\n      let value = init[key];\n      return memo2.concat(\n        Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n      );\n    }, [])\n  );\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n  let searchParams = createSearchParams(locationSearch);\n  if (defaultSearchParams) {\n    defaultSearchParams.forEach((_, key) => {\n      if (!searchParams.has(key)) {\n        defaultSearchParams.getAll(key).forEach((value) => {\n          searchParams.append(key, value);\n        });\n      }\n    });\n  }\n  return searchParams;\n}\nvar _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n  if (_formDataSupportsSubmitter === null) {\n    try {\n      new FormData(\n        document.createElement(\"form\"),\n        // @ts-expect-error if FormData supports the submitter parameter, this will throw\n        0\n      );\n      _formDataSupportsSubmitter = false;\n    } catch (e) {\n      _formDataSupportsSubmitter = true;\n    }\n  }\n  return _formDataSupportsSubmitter;\n}\nvar supportedFormEncTypes = /* @__PURE__ */ new Set([\n  \"application/x-www-form-urlencoded\",\n  \"multipart/form-data\",\n  \"text/plain\"\n]);\nfunction getFormEncType(encType) {\n  if (encType != null && !supportedFormEncTypes.has(encType)) {\n    warning(\n      false,\n      `\"${encType}\" is not a valid \\`encType\\` for \\`<Form>\\`/\\`<fetcher.Form>\\` and will default to \"${defaultEncType}\"`\n    );\n    return null;\n  }\n  return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n  let method;\n  let action;\n  let encType;\n  let formData;\n  let body;\n  if (isFormElement(target)) {\n    let attr = target.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n    method = target.getAttribute(\"method\") || defaultMethod;\n    encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n    formData = new FormData(target);\n  } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n    let form = target.form;\n    if (form == null) {\n      throw new Error(\n        `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n      );\n    }\n    let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n    action = attr ? stripBasename(attr, basename) : null;\n    method = target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n    encType = getFormEncType(target.getAttribute(\"formenctype\")) || getFormEncType(form.getAttribute(\"enctype\")) || defaultEncType;\n    formData = new FormData(form, target);\n    if (!isFormDataSubmitterSupported()) {\n      let { name, type, value } = target;\n      if (type === \"image\") {\n        let prefix = name ? `${name}.` : \"\";\n        formData.append(`${prefix}x`, \"0\");\n        formData.append(`${prefix}y`, \"0\");\n      } else if (name) {\n        formData.append(name, value);\n      }\n    }\n  } else if (isHtmlElement(target)) {\n    throw new Error(\n      `Cannot submit element that is not <form>, <button>, or <input type=\"submit|image\">`\n    );\n  } else {\n    method = defaultMethod;\n    action = null;\n    encType = defaultEncType;\n    body = target;\n  }\n  if (formData && encType === \"text/plain\") {\n    body = formData;\n    formData = void 0;\n  }\n  return { action, method: method.toLowerCase(), encType, formData, body };\n}\n\n// lib/dom/ssr/single-fetch.tsx\nimport * as React4 from \"react\";\n\n// vendor/turbo-stream-v2/utils.ts\nvar HOLE = -1;\nvar NAN = -2;\nvar NEGATIVE_INFINITY = -3;\nvar NEGATIVE_ZERO = -4;\nvar NULL = -5;\nvar POSITIVE_INFINITY = -6;\nvar UNDEFINED = -7;\nvar TYPE_BIGINT = \"B\";\nvar TYPE_DATE = \"D\";\nvar TYPE_ERROR = \"E\";\nvar TYPE_MAP = \"M\";\nvar TYPE_NULL_OBJECT = \"N\";\nvar TYPE_PROMISE = \"P\";\nvar TYPE_REGEXP = \"R\";\nvar TYPE_SET = \"S\";\nvar TYPE_SYMBOL = \"Y\";\nvar TYPE_URL = \"U\";\nvar TYPE_PREVIOUS_RESOLVED = \"Z\";\nvar SUPPORTED_ERROR_TYPES = [\n  \"EvalError\",\n  \"RangeError\",\n  \"ReferenceError\",\n  \"SyntaxError\",\n  \"TypeError\",\n  \"URIError\"\n];\nvar Deferred2 = class {\n  constructor() {\n    this.promise = new Promise((resolve, reject) => {\n      this.resolve = resolve;\n      this.reject = reject;\n    });\n  }\n};\nfunction createLineSplittingTransform() {\n  const decoder = new TextDecoder();\n  let leftover = \"\";\n  return new TransformStream({\n    transform(chunk, controller) {\n      const str = decoder.decode(chunk, { stream: true });\n      const parts = (leftover + str).split(\"\\n\");\n      leftover = parts.pop() || \"\";\n      for (const part of parts) {\n        controller.enqueue(part);\n      }\n    },\n    flush(controller) {\n      if (leftover) {\n        controller.enqueue(leftover);\n      }\n    }\n  });\n}\n\n// vendor/turbo-stream-v2/flatten.ts\nvar TIME_LIMIT_MS = 1;\nvar getNow = () => Date.now();\nvar yieldToMain = () => new Promise((resolve) => setTimeout(resolve, 0));\nasync function flatten(input) {\n  const { indices } = this;\n  const existing = indices.get(input);\n  if (existing) return [existing];\n  if (input === void 0) return UNDEFINED;\n  if (input === null) return NULL;\n  if (Number.isNaN(input)) return NAN;\n  if (input === Number.POSITIVE_INFINITY) return POSITIVE_INFINITY;\n  if (input === Number.NEGATIVE_INFINITY) return NEGATIVE_INFINITY;\n  if (input === 0 && 1 / input < 0) return NEGATIVE_ZERO;\n  const index = this.index++;\n  indices.set(input, index);\n  const stack = [[input, index]];\n  await stringify.call(this, stack);\n  return index;\n}\nasync function stringify(stack) {\n  const { deferred, indices, plugins, postPlugins } = this;\n  const str = this.stringified;\n  let lastYieldTime = getNow();\n  const flattenValue = (value) => {\n    const existing = indices.get(value);\n    if (existing) return [existing];\n    if (value === void 0) return UNDEFINED;\n    if (value === null) return NULL;\n    if (Number.isNaN(value)) return NAN;\n    if (value === Number.POSITIVE_INFINITY) return POSITIVE_INFINITY;\n    if (value === Number.NEGATIVE_INFINITY) return NEGATIVE_INFINITY;\n    if (value === 0 && 1 / value < 0) return NEGATIVE_ZERO;\n    const index = this.index++;\n    indices.set(value, index);\n    stack.push([value, index]);\n    return index;\n  };\n  let i = 0;\n  while (stack.length > 0) {\n    const now = getNow();\n    if (++i % 6e3 === 0 && now - lastYieldTime >= TIME_LIMIT_MS) {\n      await yieldToMain();\n      lastYieldTime = getNow();\n    }\n    const [input, index] = stack.pop();\n    const partsForObj = (obj) => Object.keys(obj).map((k) => `\"_${flattenValue(k)}\":${flattenValue(obj[k])}`).join(\",\");\n    let error = null;\n    switch (typeof input) {\n      case \"boolean\":\n      case \"number\":\n      case \"string\":\n        str[index] = JSON.stringify(input);\n        break;\n      case \"bigint\":\n        str[index] = `[\"${TYPE_BIGINT}\",\"${input}\"]`;\n        break;\n      case \"symbol\": {\n        const keyFor = Symbol.keyFor(input);\n        if (!keyFor) {\n          error = new Error(\n            \"Cannot encode symbol unless created with Symbol.for()\"\n          );\n        } else {\n          str[index] = `[\"${TYPE_SYMBOL}\",${JSON.stringify(keyFor)}]`;\n        }\n        break;\n      }\n      case \"object\": {\n        if (!input) {\n          str[index] = `${NULL}`;\n          break;\n        }\n        const isArray = Array.isArray(input);\n        let pluginHandled = false;\n        if (!isArray && plugins) {\n          for (const plugin of plugins) {\n            const pluginResult = plugin(input);\n            if (Array.isArray(pluginResult)) {\n              pluginHandled = true;\n              const [pluginIdentifier, ...rest] = pluginResult;\n              str[index] = `[${JSON.stringify(pluginIdentifier)}`;\n              if (rest.length > 0) {\n                str[index] += `,${rest.map((v) => flattenValue(v)).join(\",\")}`;\n              }\n              str[index] += \"]\";\n              break;\n            }\n          }\n        }\n        if (!pluginHandled) {\n          let result = isArray ? \"[\" : \"{\";\n          if (isArray) {\n            for (let i2 = 0; i2 < input.length; i2++)\n              result += (i2 ? \",\" : \"\") + (i2 in input ? flattenValue(input[i2]) : HOLE);\n            str[index] = `${result}]`;\n          } else if (input instanceof Date) {\n            const dateTime = input.getTime();\n            str[index] = `[\"${TYPE_DATE}\",${Number.isNaN(dateTime) ? JSON.stringify(\"invalid\") : dateTime}]`;\n          } else if (input instanceof URL) {\n            str[index] = `[\"${TYPE_URL}\",${JSON.stringify(input.href)}]`;\n          } else if (input instanceof RegExp) {\n            str[index] = `[\"${TYPE_REGEXP}\",${JSON.stringify(\n              input.source\n            )},${JSON.stringify(input.flags)}]`;\n          } else if (input instanceof Set) {\n            if (input.size > 0) {\n              str[index] = `[\"${TYPE_SET}\",${[...input].map((val) => flattenValue(val)).join(\",\")}]`;\n            } else {\n              str[index] = `[\"${TYPE_SET}\"]`;\n            }\n          } else if (input instanceof Map) {\n            if (input.size > 0) {\n              str[index] = `[\"${TYPE_MAP}\",${[...input].flatMap(([k, v]) => [flattenValue(k), flattenValue(v)]).join(\",\")}]`;\n            } else {\n              str[index] = `[\"${TYPE_MAP}\"]`;\n            }\n          } else if (input instanceof Promise) {\n            str[index] = `[\"${TYPE_PROMISE}\",${index}]`;\n            deferred[index] = input;\n          } else if (input instanceof Error) {\n            str[index] = `[\"${TYPE_ERROR}\",${JSON.stringify(input.message)}`;\n            if (input.name !== \"Error\") {\n              str[index] += `,${JSON.stringify(input.name)}`;\n            }\n            str[index] += \"]\";\n          } else if (Object.getPrototypeOf(input) === null) {\n            str[index] = `[\"${TYPE_NULL_OBJECT}\",{${partsForObj(input)}}]`;\n          } else if (isPlainObject2(input)) {\n            str[index] = `{${partsForObj(input)}}`;\n          } else {\n            error = new Error(\"Cannot encode object with prototype\");\n          }\n        }\n        break;\n      }\n      default: {\n        const isArray = Array.isArray(input);\n        let pluginHandled = false;\n        if (!isArray && plugins) {\n          for (const plugin of plugins) {\n            const pluginResult = plugin(input);\n            if (Array.isArray(pluginResult)) {\n              pluginHandled = true;\n              const [pluginIdentifier, ...rest] = pluginResult;\n              str[index] = `[${JSON.stringify(pluginIdentifier)}`;\n              if (rest.length > 0) {\n                str[index] += `,${rest.map((v) => flattenValue(v)).join(\",\")}`;\n              }\n              str[index] += \"]\";\n              break;\n            }\n          }\n        }\n        if (!pluginHandled) {\n          error = new Error(\"Cannot encode function or unexpected type\");\n        }\n      }\n    }\n    if (error) {\n      let pluginHandled = false;\n      if (postPlugins) {\n        for (const plugin of postPlugins) {\n          const pluginResult = plugin(input);\n          if (Array.isArray(pluginResult)) {\n            pluginHandled = true;\n            const [pluginIdentifier, ...rest] = pluginResult;\n            str[index] = `[${JSON.stringify(pluginIdentifier)}`;\n            if (rest.length > 0) {\n              str[index] += `,${rest.map((v) => flattenValue(v)).join(\",\")}`;\n            }\n            str[index] += \"]\";\n            break;\n          }\n        }\n      }\n      if (!pluginHandled) {\n        throw error;\n      }\n    }\n  }\n}\nvar objectProtoNames2 = Object.getOwnPropertyNames(Object.prototype).sort().join(\"\\0\");\nfunction isPlainObject2(thing) {\n  const proto = Object.getPrototypeOf(thing);\n  return proto === Object.prototype || proto === null || Object.getOwnPropertyNames(proto).sort().join(\"\\0\") === objectProtoNames2;\n}\n\n// vendor/turbo-stream-v2/unflatten.ts\nvar globalObj = typeof window !== \"undefined\" ? window : typeof globalThis !== \"undefined\" ? globalThis : void 0;\nfunction unflatten(parsed) {\n  const { hydrated, values } = this;\n  if (typeof parsed === \"number\") return hydrate.call(this, parsed);\n  if (!Array.isArray(parsed) || !parsed.length) throw new SyntaxError();\n  const startIndex = values.length;\n  for (const value of parsed) {\n    values.push(value);\n  }\n  hydrated.length = values.length;\n  return hydrate.call(this, startIndex);\n}\nfunction hydrate(index) {\n  const { hydrated, values, deferred, plugins } = this;\n  let result;\n  const stack = [\n    [\n      index,\n      (v) => {\n        result = v;\n      }\n    ]\n  ];\n  let postRun = [];\n  while (stack.length > 0) {\n    const [index2, set] = stack.pop();\n    switch (index2) {\n      case UNDEFINED:\n        set(void 0);\n        continue;\n      case NULL:\n        set(null);\n        continue;\n      case NAN:\n        set(NaN);\n        continue;\n      case POSITIVE_INFINITY:\n        set(Infinity);\n        continue;\n      case NEGATIVE_INFINITY:\n        set(-Infinity);\n        continue;\n      case NEGATIVE_ZERO:\n        set(-0);\n        continue;\n    }\n    if (hydrated[index2]) {\n      set(hydrated[index2]);\n      continue;\n    }\n    const value = values[index2];\n    if (!value || typeof value !== \"object\") {\n      hydrated[index2] = value;\n      set(value);\n      continue;\n    }\n    if (Array.isArray(value)) {\n      if (typeof value[0] === \"string\") {\n        const [type, b, c] = value;\n        switch (type) {\n          case TYPE_DATE:\n            set(hydrated[index2] = new Date(b));\n            continue;\n          case TYPE_URL:\n            set(hydrated[index2] = new URL(b));\n            continue;\n          case TYPE_BIGINT:\n            set(hydrated[index2] = BigInt(b));\n            continue;\n          case TYPE_REGEXP:\n            set(hydrated[index2] = new RegExp(b, c));\n            continue;\n          case TYPE_SYMBOL:\n            set(hydrated[index2] = Symbol.for(b));\n            continue;\n          case TYPE_SET:\n            const newSet = /* @__PURE__ */ new Set();\n            hydrated[index2] = newSet;\n            for (let i = value.length - 1; i > 0; i--)\n              stack.push([\n                value[i],\n                (v) => {\n                  newSet.add(v);\n                }\n              ]);\n            set(newSet);\n            continue;\n          case TYPE_MAP:\n            const map = /* @__PURE__ */ new Map();\n            hydrated[index2] = map;\n            for (let i = value.length - 2; i > 0; i -= 2) {\n              const r = [];\n              stack.push([\n                value[i + 1],\n                (v) => {\n                  r[1] = v;\n                }\n              ]);\n              stack.push([\n                value[i],\n                (k) => {\n                  r[0] = k;\n                }\n              ]);\n              postRun.push(() => {\n                map.set(r[0], r[1]);\n              });\n            }\n            set(map);\n            continue;\n          case TYPE_NULL_OBJECT:\n            const obj = /* @__PURE__ */ Object.create(null);\n            hydrated[index2] = obj;\n            for (const key of Object.keys(b).reverse()) {\n              const r = [];\n              stack.push([\n                b[key],\n                (v) => {\n                  r[1] = v;\n                }\n              ]);\n              stack.push([\n                Number(key.slice(1)),\n                (k) => {\n                  r[0] = k;\n                }\n              ]);\n              postRun.push(() => {\n                obj[r[0]] = r[1];\n              });\n            }\n            set(obj);\n            continue;\n          case TYPE_PROMISE:\n            if (hydrated[b]) {\n              set(hydrated[index2] = hydrated[b]);\n            } else {\n              const d = new Deferred2();\n              deferred[b] = d;\n              set(hydrated[index2] = d.promise);\n            }\n            continue;\n          case TYPE_ERROR:\n            const [, message, errorType] = value;\n            let error = errorType && globalObj && SUPPORTED_ERROR_TYPES.includes(errorType) && errorType in globalObj && typeof globalObj[errorType] === \"function\" ? new globalObj[errorType](message) : new Error(message);\n            hydrated[index2] = error;\n            set(error);\n            continue;\n          case TYPE_PREVIOUS_RESOLVED:\n            set(hydrated[index2] = hydrated[b]);\n            continue;\n          default:\n            if (Array.isArray(plugins)) {\n              const r = [];\n              const vals = value.slice(1);\n              for (let i = 0; i < vals.length; i++) {\n                const v = vals[i];\n                stack.push([\n                  v,\n                  (v2) => {\n                    r[i] = v2;\n                  }\n                ]);\n              }\n              postRun.push(() => {\n                for (const plugin of plugins) {\n                  const result2 = plugin(value[0], ...r);\n                  if (result2) {\n                    set(hydrated[index2] = result2.value);\n                    return;\n                  }\n                }\n                throw new SyntaxError();\n              });\n              continue;\n            }\n            throw new SyntaxError();\n        }\n      } else {\n        const array = [];\n        hydrated[index2] = array;\n        for (let i = 0; i < value.length; i++) {\n          const n = value[i];\n          if (n !== HOLE) {\n            stack.push([\n              n,\n              (v) => {\n                array[i] = v;\n              }\n            ]);\n          }\n        }\n        set(array);\n        continue;\n      }\n    } else {\n      const object = {};\n      hydrated[index2] = object;\n      for (const key of Object.keys(value).reverse()) {\n        const r = [];\n        stack.push([\n          value[key],\n          (v) => {\n            r[1] = v;\n          }\n        ]);\n        stack.push([\n          Number(key.slice(1)),\n          (k) => {\n            r[0] = k;\n          }\n        ]);\n        postRun.push(() => {\n          object[r[0]] = r[1];\n        });\n      }\n      set(object);\n      continue;\n    }\n  }\n  while (postRun.length > 0) {\n    postRun.pop()();\n  }\n  return result;\n}\n\n// vendor/turbo-stream-v2/turbo-stream.ts\nasync function decode(readable, options) {\n  const { plugins } = options ?? {};\n  const done = new Deferred2();\n  const reader = readable.pipeThrough(createLineSplittingTransform()).getReader();\n  const decoder = {\n    values: [],\n    hydrated: [],\n    deferred: {},\n    plugins\n  };\n  const decoded = await decodeInitial.call(decoder, reader);\n  let donePromise = done.promise;\n  if (decoded.done) {\n    done.resolve();\n  } else {\n    donePromise = decodeDeferred.call(decoder, reader).then(done.resolve).catch((reason) => {\n      for (const deferred of Object.values(decoder.deferred)) {\n        deferred.reject(reason);\n      }\n      done.reject(reason);\n    });\n  }\n  return {\n    done: donePromise.then(() => reader.closed),\n    value: decoded.value\n  };\n}\nasync function decodeInitial(reader) {\n  const read = await reader.read();\n  if (!read.value) {\n    throw new SyntaxError();\n  }\n  let line;\n  try {\n    line = JSON.parse(read.value);\n  } catch (reason) {\n    throw new SyntaxError();\n  }\n  return {\n    done: read.done,\n    value: unflatten.call(this, line)\n  };\n}\nasync function decodeDeferred(reader) {\n  let read = await reader.read();\n  while (!read.done) {\n    if (!read.value) continue;\n    const line = read.value;\n    switch (line[0]) {\n      case TYPE_PROMISE: {\n        const colonIndex = line.indexOf(\":\");\n        const deferredId = Number(line.slice(1, colonIndex));\n        const deferred = this.deferred[deferredId];\n        if (!deferred) {\n          throw new Error(`Deferred ID ${deferredId} not found in stream`);\n        }\n        const lineData = line.slice(colonIndex + 1);\n        let jsonLine;\n        try {\n          jsonLine = JSON.parse(lineData);\n        } catch (reason) {\n          throw new SyntaxError();\n        }\n        const value = unflatten.call(this, jsonLine);\n        deferred.resolve(value);\n        break;\n      }\n      case TYPE_ERROR: {\n        const colonIndex = line.indexOf(\":\");\n        const deferredId = Number(line.slice(1, colonIndex));\n        const deferred = this.deferred[deferredId];\n        if (!deferred) {\n          throw new Error(`Deferred ID ${deferredId} not found in stream`);\n        }\n        const lineData = line.slice(colonIndex + 1);\n        let jsonLine;\n        try {\n          jsonLine = JSON.parse(lineData);\n        } catch (reason) {\n          throw new SyntaxError();\n        }\n        const value = unflatten.call(this, jsonLine);\n        deferred.reject(value);\n        break;\n      }\n      default:\n        throw new SyntaxError();\n    }\n    read = await reader.read();\n  }\n}\nfunction encode(input, options) {\n  const { onComplete, plugins, postPlugins, signal } = options ?? {};\n  const encoder = {\n    deferred: {},\n    index: 0,\n    indices: /* @__PURE__ */ new Map(),\n    stringified: [],\n    plugins,\n    postPlugins,\n    signal\n  };\n  const textEncoder = new TextEncoder();\n  let lastSentIndex = 0;\n  const readable = new ReadableStream({\n    async start(controller) {\n      const id = await flatten.call(encoder, input);\n      if (Array.isArray(id)) {\n        throw new Error(\"This should never happen\");\n      }\n      if (id < 0) {\n        controller.enqueue(textEncoder.encode(`${id}\n`));\n      } else {\n        controller.enqueue(\n          textEncoder.encode(`[${encoder.stringified.join(\",\")}]\n`)\n        );\n        lastSentIndex = encoder.stringified.length - 1;\n      }\n      const seenPromises = /* @__PURE__ */ new WeakSet();\n      let processingChain = Promise.resolve();\n      if (Object.keys(encoder.deferred).length) {\n        let raceDone;\n        const racePromise = new Promise((resolve, reject) => {\n          raceDone = resolve;\n          if (signal) {\n            const rejectPromise = () => reject(signal.reason || new Error(\"Signal was aborted.\"));\n            if (signal.aborted) {\n              rejectPromise();\n            } else {\n              signal.addEventListener(\"abort\", (event) => {\n                rejectPromise();\n              });\n            }\n          }\n        });\n        while (Object.keys(encoder.deferred).length > 0) {\n          for (const [deferredId, deferred] of Object.entries(\n            encoder.deferred\n          )) {\n            if (seenPromises.has(deferred)) continue;\n            seenPromises.add(\n              // biome-ignore lint/suspicious/noAssignInExpressions: <explanation>\n              encoder.deferred[Number(deferredId)] = Promise.race([\n                racePromise,\n                deferred\n              ]).then(\n                (resolved) => {\n                  processingChain = processingChain.then(async () => {\n                    const id2 = await flatten.call(encoder, resolved);\n                    if (Array.isArray(id2)) {\n                      controller.enqueue(\n                        textEncoder.encode(\n                          `${TYPE_PROMISE}${deferredId}:[[\"${TYPE_PREVIOUS_RESOLVED}\",${id2[0]}]]\n`\n                        )\n                      );\n                      encoder.index++;\n                      lastSentIndex++;\n                    } else if (id2 < 0) {\n                      controller.enqueue(\n                        textEncoder.encode(\n                          `${TYPE_PROMISE}${deferredId}:${id2}\n`\n                        )\n                      );\n                    } else {\n                      const values = encoder.stringified.slice(lastSentIndex + 1).join(\",\");\n                      controller.enqueue(\n                        textEncoder.encode(\n                          `${TYPE_PROMISE}${deferredId}:[${values}]\n`\n                        )\n                      );\n                      lastSentIndex = encoder.stringified.length - 1;\n                    }\n                  });\n                  return processingChain;\n                },\n                (reason) => {\n                  processingChain = processingChain.then(async () => {\n                    if (!reason || typeof reason !== \"object\" || !(reason instanceof Error)) {\n                      reason = new Error(\"An unknown error occurred\");\n                    }\n                    const id2 = await flatten.call(encoder, reason);\n                    if (Array.isArray(id2)) {\n                      controller.enqueue(\n                        textEncoder.encode(\n                          `${TYPE_ERROR}${deferredId}:[[\"${TYPE_PREVIOUS_RESOLVED}\",${id2[0]}]]\n`\n                        )\n                      );\n                      encoder.index++;\n                      lastSentIndex++;\n                    } else if (id2 < 0) {\n                      controller.enqueue(\n                        textEncoder.encode(\n                          `${TYPE_ERROR}${deferredId}:${id2}\n`\n                        )\n                      );\n                    } else {\n                      const values = encoder.stringified.slice(lastSentIndex + 1).join(\",\");\n                      controller.enqueue(\n                        textEncoder.encode(\n                          `${TYPE_ERROR}${deferredId}:[${values}]\n`\n                        )\n                      );\n                      lastSentIndex = encoder.stringified.length - 1;\n                    }\n                  });\n                  return processingChain;\n                }\n              ).finally(() => {\n                delete encoder.deferred[Number(deferredId)];\n              })\n            );\n          }\n          await Promise.race(Object.values(encoder.deferred));\n        }\n        raceDone();\n      }\n      await Promise.all(Object.values(encoder.deferred));\n      await processingChain;\n      controller.close();\n      onComplete?.();\n    }\n  });\n  return readable;\n}\n\n// lib/dom/ssr/data.ts\nasync function createRequestInit(request) {\n  let init = { signal: request.signal };\n  if (request.method !== \"GET\") {\n    init.method = request.method;\n    let contentType = request.headers.get(\"Content-Type\");\n    if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n      init.headers = { \"Content-Type\": contentType };\n      init.body = JSON.stringify(await request.json());\n    } else if (contentType && /\\btext\\/plain\\b/.test(contentType)) {\n      init.headers = { \"Content-Type\": contentType };\n      init.body = await request.text();\n    } else if (contentType && /\\bapplication\\/x-www-form-urlencoded\\b/.test(contentType)) {\n      init.body = new URLSearchParams(await request.text());\n    } else {\n      init.body = await request.formData();\n    }\n  }\n  return init;\n}\n\n// lib/dom/ssr/markup.ts\nvar ESCAPE_LOOKUP = {\n  \"&\": \"\\\\u0026\",\n  \">\": \"\\\\u003e\",\n  \"<\": \"\\\\u003c\",\n  \"\\u2028\": \"\\\\u2028\",\n  \"\\u2029\": \"\\\\u2029\"\n};\nvar ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\nfunction escapeHtml(html) {\n  return html.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);\n}\n\n// lib/dom/ssr/invariant.ts\nfunction invariant2(value, message) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    throw new Error(message);\n  }\n}\n\n// lib/dom/ssr/single-fetch.tsx\nvar SingleFetchRedirectSymbol = Symbol(\"SingleFetchRedirect\");\nvar SingleFetchNoResultError = class extends Error {\n};\nvar SINGLE_FETCH_REDIRECT_STATUS = 202;\nvar NO_BODY_STATUS_CODES = /* @__PURE__ */ new Set([100, 101, 204, 205]);\nfunction StreamTransfer({\n  context,\n  identifier,\n  reader,\n  textDecoder,\n  nonce\n}) {\n  if (!context.renderMeta || !context.renderMeta.didRenderScripts) {\n    return null;\n  }\n  if (!context.renderMeta.streamCache) {\n    context.renderMeta.streamCache = {};\n  }\n  let { streamCache } = context.renderMeta;\n  let promise = streamCache[identifier];\n  if (!promise) {\n    promise = streamCache[identifier] = reader.read().then((result) => {\n      streamCache[identifier].result = {\n        done: result.done,\n        value: textDecoder.decode(result.value, { stream: true })\n      };\n    }).catch((e) => {\n      streamCache[identifier].error = e;\n    });\n  }\n  if (promise.error) {\n    throw promise.error;\n  }\n  if (promise.result === void 0) {\n    throw promise;\n  }\n  let { done, value } = promise.result;\n  let scriptTag = value ? /* @__PURE__ */ React4.createElement(\n    \"script\",\n    {\n      nonce,\n      dangerouslySetInnerHTML: {\n        __html: `window.__reactRouterContext.streamController.enqueue(${escapeHtml(\n          JSON.stringify(value)\n        )});`\n      }\n    }\n  ) : null;\n  if (done) {\n    return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(\n      \"script\",\n      {\n        nonce,\n        dangerouslySetInnerHTML: {\n          __html: `window.__reactRouterContext.streamController.close();`\n        }\n      }\n    ));\n  } else {\n    return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(React4.Suspense, null, /* @__PURE__ */ React4.createElement(\n      StreamTransfer,\n      {\n        context,\n        identifier: identifier + 1,\n        reader,\n        textDecoder,\n        nonce\n      }\n    )));\n  }\n}\nfunction getTurboStreamSingleFetchDataStrategy(getRouter, manifest, routeModules, ssr, basename, trailingSlashAware) {\n  let dataStrategy = getSingleFetchDataStrategyImpl(\n    getRouter,\n    (match) => {\n      let manifestRoute = manifest.routes[match.route.id];\n      invariant2(manifestRoute, \"Route not found in manifest\");\n      return {\n        hasLoader: manifestRoute.hasLoader,\n        hasClientLoader: manifestRoute.hasClientLoader\n      };\n    },\n    fetchAndDecodeViaTurboStream,\n    ssr,\n    basename,\n    trailingSlashAware\n  );\n  return async (args) => args.runClientMiddleware(dataStrategy);\n}\nfunction getSingleFetchDataStrategyImpl(getRouter, getRouteInfo, fetchAndDecode, ssr, basename, trailingSlashAware, shouldAllowOptOut = () => true) {\n  return async (args) => {\n    let { request, matches, fetcherKey } = args;\n    let router = getRouter();\n    if (request.method !== \"GET\") {\n      return singleFetchActionStrategy(\n        args,\n        fetchAndDecode,\n        basename,\n        trailingSlashAware\n      );\n    }\n    let foundRevalidatingServerLoader = matches.some((m) => {\n      let { hasLoader, hasClientLoader } = getRouteInfo(m);\n      return m.shouldCallHandler() && hasLoader && !hasClientLoader;\n    });\n    if (!ssr && !foundRevalidatingServerLoader) {\n      return nonSsrStrategy(\n        args,\n        getRouteInfo,\n        fetchAndDecode,\n        basename,\n        trailingSlashAware\n      );\n    }\n    if (fetcherKey) {\n      return singleFetchLoaderFetcherStrategy(\n        args,\n        fetchAndDecode,\n        basename,\n        trailingSlashAware\n      );\n    }\n    return singleFetchLoaderNavigationStrategy(\n      args,\n      router,\n      getRouteInfo,\n      fetchAndDecode,\n      ssr,\n      basename,\n      trailingSlashAware,\n      shouldAllowOptOut\n    );\n  };\n}\nasync function singleFetchActionStrategy(args, fetchAndDecode, basename, trailingSlashAware) {\n  let actionMatch = args.matches.find((m) => m.shouldCallHandler());\n  invariant2(actionMatch, \"No action match found\");\n  let actionStatus = void 0;\n  let result = await actionMatch.resolve(async (handler) => {\n    let result2 = await handler(async () => {\n      let { data: data2, status } = await fetchAndDecode(\n        args,\n        basename,\n        trailingSlashAware,\n        [actionMatch.route.id]\n      );\n      actionStatus = status;\n      return unwrapSingleFetchResult(data2, actionMatch.route.id);\n    });\n    return result2;\n  });\n  if (isResponse(result.result) || isRouteErrorResponse(result.result) || isDataWithResponseInit(result.result)) {\n    return { [actionMatch.route.id]: result };\n  }\n  return {\n    [actionMatch.route.id]: {\n      type: result.type,\n      result: data(result.result, actionStatus)\n    }\n  };\n}\nasync function nonSsrStrategy(args, getRouteInfo, fetchAndDecode, basename, trailingSlashAware) {\n  let matchesToLoad = args.matches.filter((m) => m.shouldCallHandler());\n  let results = {};\n  await Promise.all(\n    matchesToLoad.map(\n      (m) => m.resolve(async (handler) => {\n        try {\n          let { hasClientLoader } = getRouteInfo(m);\n          let routeId = m.route.id;\n          let result = hasClientLoader ? await handler(async () => {\n            let { data: data2 } = await fetchAndDecode(\n              args,\n              basename,\n              trailingSlashAware,\n              [routeId]\n            );\n            return unwrapSingleFetchResult(data2, routeId);\n          }) : await handler();\n          results[m.route.id] = { type: \"data\", result };\n        } catch (e) {\n          results[m.route.id] = { type: \"error\", result: e };\n        }\n      })\n    )\n  );\n  return results;\n}\nasync function singleFetchLoaderNavigationStrategy(args, router, getRouteInfo, fetchAndDecode, ssr, basename, trailingSlashAware, shouldAllowOptOut = () => true) {\n  let routesParams = /* @__PURE__ */ new Set();\n  let foundOptOutRoute = false;\n  let routeDfds = args.matches.map(() => createDeferred2());\n  let singleFetchDfd = createDeferred2();\n  let results = {};\n  let resolvePromise = Promise.all(\n    args.matches.map(\n      async (m, i) => m.resolve(async (handler) => {\n        routeDfds[i].resolve();\n        let routeId = m.route.id;\n        let { hasLoader, hasClientLoader } = getRouteInfo(m);\n        let defaultShouldRevalidate = !m.shouldRevalidateArgs || m.shouldRevalidateArgs.actionStatus == null || m.shouldRevalidateArgs.actionStatus < 400;\n        let shouldCall = m.shouldCallHandler(defaultShouldRevalidate);\n        if (!shouldCall) {\n          foundOptOutRoute || (foundOptOutRoute = m.shouldRevalidateArgs != null && // This is a revalidation,\n          hasLoader);\n          return;\n        }\n        if (shouldAllowOptOut(m) && hasClientLoader) {\n          if (hasLoader) {\n            foundOptOutRoute = true;\n          }\n          try {\n            let result = await handler(async () => {\n              let { data: data2 } = await fetchAndDecode(\n                args,\n                basename,\n                trailingSlashAware,\n                [routeId]\n              );\n              return unwrapSingleFetchResult(data2, routeId);\n            });\n            results[routeId] = { type: \"data\", result };\n          } catch (e) {\n            results[routeId] = { type: \"error\", result: e };\n          }\n          return;\n        }\n        if (hasLoader) {\n          routesParams.add(routeId);\n        }\n        try {\n          let result = await handler(async () => {\n            let data2 = await singleFetchDfd.promise;\n            return unwrapSingleFetchResult(data2, routeId);\n          });\n          results[routeId] = { type: \"data\", result };\n        } catch (e) {\n          results[routeId] = { type: \"error\", result: e };\n        }\n      })\n    )\n  );\n  await Promise.all(routeDfds.map((d) => d.promise));\n  let isInitialLoad = !router.state.initialized && router.state.navigation.state === \"idle\";\n  if ((isInitialLoad || routesParams.size === 0) && !window.__reactRouterHdrActive) {\n    singleFetchDfd.resolve({ routes: {} });\n  } else {\n    let targetRoutes = ssr && foundOptOutRoute && routesParams.size > 0 ? [...routesParams.keys()] : void 0;\n    try {\n      let data2 = await fetchAndDecode(\n        args,\n        basename,\n        trailingSlashAware,\n        targetRoutes\n      );\n      singleFetchDfd.resolve(data2.data);\n    } catch (e) {\n      singleFetchDfd.reject(e);\n    }\n  }\n  await resolvePromise;\n  await bubbleMiddlewareErrors(\n    singleFetchDfd.promise,\n    args.matches,\n    routesParams,\n    results\n  );\n  return results;\n}\nasync function bubbleMiddlewareErrors(singleFetchPromise, matches, routesParams, results) {\n  try {\n    let middlewareError;\n    let fetchedData = await singleFetchPromise;\n    if (\"routes\" in fetchedData) {\n      for (let match of matches) {\n        if (match.route.id in fetchedData.routes) {\n          let routeResult = fetchedData.routes[match.route.id];\n          if (\"error\" in routeResult) {\n            middlewareError = routeResult.error;\n            if (results[match.route.id]?.result == null) {\n              results[match.route.id] = {\n                type: \"error\",\n                result: middlewareError\n              };\n            }\n            break;\n          }\n        }\n      }\n    }\n    if (middlewareError !== void 0) {\n      Array.from(routesParams.values()).forEach((routeId) => {\n        if (results[routeId].result instanceof SingleFetchNoResultError) {\n          results[routeId].result = middlewareError;\n        }\n      });\n    }\n  } catch (e) {\n  }\n}\nasync function singleFetchLoaderFetcherStrategy(args, fetchAndDecode, basename, trailingSlashAware) {\n  let fetcherMatch = args.matches.find((m) => m.shouldCallHandler());\n  invariant2(fetcherMatch, \"No fetcher match found\");\n  let routeId = fetcherMatch.route.id;\n  let result = await fetcherMatch.resolve(\n    async (handler) => handler(async () => {\n      let { data: data2 } = await fetchAndDecode(args, basename, trailingSlashAware, [\n        routeId\n      ]);\n      return unwrapSingleFetchResult(data2, routeId);\n    })\n  );\n  return { [fetcherMatch.route.id]: result };\n}\nfunction stripIndexParam(url) {\n  let indexValues = url.searchParams.getAll(\"index\");\n  url.searchParams.delete(\"index\");\n  let indexValuesToKeep = [];\n  for (let indexValue of indexValues) {\n    if (indexValue) {\n      indexValuesToKeep.push(indexValue);\n    }\n  }\n  for (let toKeep of indexValuesToKeep) {\n    url.searchParams.append(\"index\", toKeep);\n  }\n  return url;\n}\nfunction singleFetchUrl(reqUrl, basename, trailingSlashAware, extension) {\n  let url = typeof reqUrl === \"string\" ? new URL(\n    reqUrl,\n    // This can be called during the SSR flow via PrefetchPageLinksImpl so\n    // don't assume window is available\n    typeof window === \"undefined\" ? \"server://singlefetch/\" : window.location.origin\n  ) : reqUrl;\n  if (trailingSlashAware) {\n    if (url.pathname.endsWith(\"/\")) {\n      url.pathname = `${url.pathname}_.${extension}`;\n    } else {\n      url.pathname = `${url.pathname}.${extension}`;\n    }\n  } else {\n    if (url.pathname === \"/\") {\n      url.pathname = `_root.${extension}`;\n    } else if (basename && stripBasename(url.pathname, basename) === \"/\") {\n      url.pathname = `${removeTrailingSlash(basename)}/_root.${extension}`;\n    } else {\n      url.pathname = `${removeTrailingSlash(url.pathname)}.${extension}`;\n    }\n  }\n  return url;\n}\nasync function fetchAndDecodeViaTurboStream(args, basename, trailingSlashAware, targetRoutes) {\n  let { request } = args;\n  let url = singleFetchUrl(request.url, basename, trailingSlashAware, \"data\");\n  if (request.method === \"GET\") {\n    url = stripIndexParam(url);\n    if (targetRoutes) {\n      url.searchParams.set(\"_routes\", targetRoutes.join(\",\"));\n    }\n  }\n  let res = await fetch(url, await createRequestInit(request));\n  if (res.status >= 400 && !res.headers.has(\"X-Remix-Response\")) {\n    throw new ErrorResponseImpl(res.status, res.statusText, await res.text());\n  }\n  if (res.status === 204 && res.headers.has(\"X-Remix-Redirect\")) {\n    return {\n      status: SINGLE_FETCH_REDIRECT_STATUS,\n      data: {\n        redirect: {\n          redirect: res.headers.get(\"X-Remix-Redirect\"),\n          status: Number(res.headers.get(\"X-Remix-Status\") || \"302\"),\n          revalidate: res.headers.get(\"X-Remix-Revalidate\") === \"true\",\n          reload: res.headers.get(\"X-Remix-Reload-Document\") === \"true\",\n          replace: res.headers.get(\"X-Remix-Replace\") === \"true\"\n        }\n      }\n    };\n  }\n  if (NO_BODY_STATUS_CODES.has(res.status)) {\n    let routes = {};\n    if (targetRoutes && request.method !== \"GET\") {\n      routes[targetRoutes[0]] = { data: void 0 };\n    }\n    return {\n      status: res.status,\n      data: { routes }\n    };\n  }\n  invariant2(res.body, \"No response body to decode\");\n  try {\n    let decoded = await decodeViaTurboStream(res.body, window);\n    let data2;\n    if (request.method === \"GET\") {\n      let typed = decoded.value;\n      if (SingleFetchRedirectSymbol in typed) {\n        data2 = { redirect: typed[SingleFetchRedirectSymbol] };\n      } else {\n        data2 = { routes: typed };\n      }\n    } else {\n      let typed = decoded.value;\n      let routeId = targetRoutes?.[0];\n      invariant2(routeId, \"No routeId found for single fetch call decoding\");\n      if (\"redirect\" in typed) {\n        data2 = { redirect: typed };\n      } else {\n        data2 = { routes: { [routeId]: typed } };\n      }\n    }\n    return { status: res.status, data: data2 };\n  } catch (e) {\n    throw new Error(\"Unable to decode turbo-stream response\");\n  }\n}\nfunction decodeViaTurboStream(body, global) {\n  return decode(body, {\n    plugins: [\n      (type, ...rest) => {\n        if (type === \"SanitizedError\") {\n          let [name, message, stack] = rest;\n          let Constructor = Error;\n          if (name && SUPPORTED_ERROR_TYPES.includes(name) && name in global && // @ts-expect-error\n          typeof global[name] === \"function\") {\n            Constructor = global[name];\n          }\n          let error = new Constructor(message);\n          error.stack = stack;\n          return { value: error };\n        }\n        if (type === \"ErrorResponse\") {\n          let [data2, status, statusText] = rest;\n          return {\n            value: new ErrorResponseImpl(status, statusText, data2)\n          };\n        }\n        if (type === \"SingleFetchRedirect\") {\n          return { value: { [SingleFetchRedirectSymbol]: rest[0] } };\n        }\n        if (type === \"SingleFetchClassInstance\") {\n          return { value: rest[0] };\n        }\n        if (type === \"SingleFetchFallback\") {\n          return { value: void 0 };\n        }\n      }\n    ]\n  });\n}\nfunction unwrapSingleFetchResult(result, routeId) {\n  if (\"redirect\" in result) {\n    let {\n      redirect: location,\n      revalidate,\n      reload,\n      replace: replace2,\n      status\n    } = result.redirect;\n    throw redirect(location, {\n      status,\n      headers: {\n        // Three R's of redirecting (lol Veep)\n        ...revalidate ? { \"X-Remix-Revalidate\": \"yes\" } : null,\n        ...reload ? { \"X-Remix-Reload-Document\": \"yes\" } : null,\n        ...replace2 ? { \"X-Remix-Replace\": \"yes\" } : null\n      }\n    });\n  }\n  let routeResult = result.routes[routeId];\n  if (routeResult == null) {\n    throw new SingleFetchNoResultError(\n      `No result found for routeId \"${routeId}\"`\n    );\n  } else if (\"error\" in routeResult) {\n    throw routeResult.error;\n  } else if (\"data\" in routeResult) {\n    return routeResult.data;\n  } else {\n    throw new Error(`Invalid response found for routeId \"${routeId}\"`);\n  }\n}\nfunction createDeferred2() {\n  let resolve;\n  let reject;\n  let promise = new Promise((res, rej) => {\n    resolve = async (val) => {\n      res(val);\n      try {\n        await promise;\n      } catch (e) {\n      }\n    };\n    reject = async (error) => {\n      rej(error);\n      try {\n        await promise;\n      } catch (e) {\n      }\n    };\n  });\n  return {\n    promise,\n    //@ts-ignore\n    resolve,\n    //@ts-ignore\n    reject\n  };\n}\n\n// lib/dom/ssr/errorBoundaries.tsx\nimport * as React9 from \"react\";\n\n// lib/dom/ssr/components.tsx\nimport * as React8 from \"react\";\n\n// lib/dom/ssr/routeModules.ts\nasync function loadRouteModule(route, routeModulesCache) {\n  if (route.id in routeModulesCache) {\n    return routeModulesCache[route.id];\n  }\n  try {\n    let routeModule = await import(\n      /* @vite-ignore */\n      /* webpackIgnore: true */\n      route.module\n    );\n    routeModulesCache[route.id] = routeModule;\n    return routeModule;\n  } catch (error) {\n    console.error(\n      `Error loading route module \\`${route.module}\\`, reloading page...`\n    );\n    console.error(error);\n    if (window.__reactRouterContext && window.__reactRouterContext.isSpaMode && // @ts-expect-error\n    import.meta.hot) {\n      throw error;\n    }\n    window.location.reload();\n    return new Promise(() => {\n    });\n  }\n}\n\n// lib/dom/ssr/links.ts\nfunction getKeyedLinksForMatches(matches, routeModules, manifest) {\n  let descriptors = matches.map((match) => {\n    let module = routeModules[match.route.id];\n    let route = manifest.routes[match.route.id];\n    return [\n      route && route.css ? route.css.map((href) => ({ rel: \"stylesheet\", href })) : [],\n      module?.links?.() || []\n    ];\n  }).flat(2);\n  let preloads = getModuleLinkHrefs(matches, manifest);\n  return dedupeLinkDescriptors(descriptors, preloads);\n}\nfunction getRouteCssDescriptors(route) {\n  if (!route.css) return [];\n  return route.css.map((href) => ({ rel: \"stylesheet\", href }));\n}\nasync function prefetchRouteCss(route) {\n  if (!route.css) return;\n  let descriptors = getRouteCssDescriptors(route);\n  await Promise.all(descriptors.map(prefetchStyleLink));\n}\nasync function prefetchStyleLinks(route, routeModule) {\n  if (!route.css && !routeModule.links || !isPreloadSupported()) return;\n  let descriptors = [];\n  if (route.css) {\n    descriptors.push(...getRouteCssDescriptors(route));\n  }\n  if (routeModule.links) {\n    descriptors.push(...routeModule.links());\n  }\n  if (descriptors.length === 0) return;\n  let styleLinks = [];\n  for (let descriptor of descriptors) {\n    if (!isPageLinkDescriptor(descriptor) && descriptor.rel === \"stylesheet\") {\n      styleLinks.push({\n        ...descriptor,\n        rel: \"preload\",\n        as: \"style\"\n      });\n    }\n  }\n  await Promise.all(styleLinks.map(prefetchStyleLink));\n}\nasync function prefetchStyleLink(descriptor) {\n  return new Promise((resolve) => {\n    if (descriptor.media && !window.matchMedia(descriptor.media).matches || document.querySelector(\n      `link[rel=\"stylesheet\"][href=\"${descriptor.href}\"]`\n    )) {\n      return resolve();\n    }\n    let link = document.createElement(\"link\");\n    Object.assign(link, descriptor);\n    function removeLink() {\n      if (document.head.contains(link)) {\n        document.head.removeChild(link);\n      }\n    }\n    link.onload = () => {\n      removeLink();\n      resolve();\n    };\n    link.onerror = () => {\n      removeLink();\n      resolve();\n    };\n    document.head.appendChild(link);\n  });\n}\nfunction isPageLinkDescriptor(object) {\n  return object != null && typeof object.page === \"string\";\n}\nfunction isHtmlLinkDescriptor(object) {\n  if (object == null) {\n    return false;\n  }\n  if (object.href == null) {\n    return object.rel === \"preload\" && typeof object.imageSrcSet === \"string\" && typeof object.imageSizes === \"string\";\n  }\n  return typeof object.rel === \"string\" && typeof object.href === \"string\";\n}\nasync function getKeyedPrefetchLinks(matches, manifest, routeModules) {\n  let links = await Promise.all(\n    matches.map(async (match) => {\n      let route = manifest.routes[match.route.id];\n      if (route) {\n        let mod = await loadRouteModule(route, routeModules);\n        return mod.links ? mod.links() : [];\n      }\n      return [];\n    })\n  );\n  return dedupeLinkDescriptors(\n    links.flat(1).filter(isHtmlLinkDescriptor).filter((link) => link.rel === \"stylesheet\" || link.rel === \"preload\").map(\n      (link) => link.rel === \"stylesheet\" ? { ...link, rel: \"prefetch\", as: \"style\" } : { ...link, rel: \"prefetch\" }\n    )\n  );\n}\nfunction getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, location, mode) {\n  let isNew = (match, index) => {\n    if (!currentMatches[index]) return true;\n    return match.route.id !== currentMatches[index].route.id;\n  };\n  let matchPathChanged = (match, index) => {\n    return (\n      // param change, /users/123 -> /users/456\n      currentMatches[index].pathname !== match.pathname || // splat param changed, which is not present in match.path\n      // e.g. /files/images/avatar.jpg -> files/finances.xls\n      currentMatches[index].route.path?.endsWith(\"*\") && currentMatches[index].params[\"*\"] !== match.params[\"*\"]\n    );\n  };\n  if (mode === \"assets\") {\n    return nextMatches.filter(\n      (match, index) => isNew(match, index) || matchPathChanged(match, index)\n    );\n  }\n  if (mode === \"data\") {\n    return nextMatches.filter((match, index) => {\n      let manifestRoute = manifest.routes[match.route.id];\n      if (!manifestRoute || !manifestRoute.hasLoader) {\n        return false;\n      }\n      if (isNew(match, index) || matchPathChanged(match, index)) {\n        return true;\n      }\n      if (match.route.shouldRevalidate) {\n        let routeChoice = match.route.shouldRevalidate({\n          currentUrl: new URL(\n            location.pathname + location.search + location.hash,\n            window.origin\n          ),\n          currentParams: currentMatches[0]?.params || {},\n          nextUrl: new URL(page, window.origin),\n          nextParams: match.params,\n          defaultShouldRevalidate: true\n        });\n        if (typeof routeChoice === \"boolean\") {\n          return routeChoice;\n        }\n      }\n      return true;\n    });\n  }\n  return [];\n}\nfunction getModuleLinkHrefs(matches, manifest, { includeHydrateFallback } = {}) {\n  return dedupeHrefs(\n    matches.map((match) => {\n      let route = manifest.routes[match.route.id];\n      if (!route) return [];\n      let hrefs = [route.module];\n      if (route.clientActionModule) {\n        hrefs = hrefs.concat(route.clientActionModule);\n      }\n      if (route.clientLoaderModule) {\n        hrefs = hrefs.concat(route.clientLoaderModule);\n      }\n      if (includeHydrateFallback && route.hydrateFallbackModule) {\n        hrefs = hrefs.concat(route.hydrateFallbackModule);\n      }\n      if (route.imports) {\n        hrefs = hrefs.concat(route.imports);\n      }\n      return hrefs;\n    }).flat(1)\n  );\n}\nfunction dedupeHrefs(hrefs) {\n  return [...new Set(hrefs)];\n}\nfunction sortKeys(obj) {\n  let sorted = {};\n  let keys = Object.keys(obj).sort();\n  for (let key of keys) {\n    sorted[key] = obj[key];\n  }\n  return sorted;\n}\nfunction dedupeLinkDescriptors(descriptors, preloads) {\n  let set = /* @__PURE__ */ new Set();\n  let preloadsSet = new Set(preloads);\n  return descriptors.reduce((deduped, descriptor) => {\n    let alreadyModulePreload = preloads && !isPageLinkDescriptor(descriptor) && descriptor.as === \"script\" && descriptor.href && preloadsSet.has(descriptor.href);\n    if (alreadyModulePreload) {\n      return deduped;\n    }\n    let key = JSON.stringify(sortKeys(descriptor));\n    if (!set.has(key)) {\n      set.add(key);\n      deduped.push({ key, link: descriptor });\n    }\n    return deduped;\n  }, []);\n}\nvar _isPreloadSupported;\nfunction isPreloadSupported() {\n  if (_isPreloadSupported !== void 0) {\n    return _isPreloadSupported;\n  }\n  let el = document.createElement(\"link\");\n  _isPreloadSupported = el.relList.supports(\"preload\");\n  el = null;\n  return _isPreloadSupported;\n}\n\n// lib/dom/ssr/fog-of-war.ts\nimport * as React7 from \"react\";\n\n// lib/dom/ssr/routes.tsx\nimport * as React6 from \"react\";\n\n// lib/dom/ssr/fallback.tsx\nimport * as React5 from \"react\";\nfunction RemixRootDefaultHydrateFallback() {\n  return /* @__PURE__ */ React5.createElement(BoundaryShell, { title: \"Loading...\", renderScripts: true }, ENABLE_DEV_WARNINGS ? /* @__PURE__ */ React5.createElement(\n    \"script\",\n    {\n      dangerouslySetInnerHTML: {\n        __html: `\n              console.log(\n                \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this \" +\n                \"when your app is loading JS modules and/or running \\`clientLoader\\` \" +\n                \"functions. Check out https://reactrouter.com/start/framework/route-module#hydratefallback \" +\n                \"for more information.\"\n              );\n            `\n      }\n    }\n  ) : null);\n}\n\n// lib/dom/ssr/routes.tsx\nfunction groupRoutesByParentId(manifest) {\n  let routes = {};\n  Object.values(manifest).forEach((route) => {\n    if (route) {\n      let parentId = route.parentId || \"\";\n      if (!routes[parentId]) {\n        routes[parentId] = [];\n      }\n      routes[parentId].push(route);\n    }\n  });\n  return routes;\n}\nfunction getRouteComponents(route, routeModule, isSpaMode) {\n  let Component4 = getRouteModuleComponent(routeModule);\n  let HydrateFallback = routeModule.HydrateFallback && (!isSpaMode || route.id === \"root\") ? routeModule.HydrateFallback : route.id === \"root\" ? RemixRootDefaultHydrateFallback : void 0;\n  let ErrorBoundary = routeModule.ErrorBoundary ? routeModule.ErrorBoundary : route.id === \"root\" ? () => /* @__PURE__ */ React6.createElement(RemixRootDefaultErrorBoundary, { error: useRouteError() }) : void 0;\n  if (route.id === \"root\" && routeModule.Layout) {\n    return {\n      ...Component4 ? {\n        element: /* @__PURE__ */ React6.createElement(routeModule.Layout, null, /* @__PURE__ */ React6.createElement(Component4, null))\n      } : { Component: Component4 },\n      ...ErrorBoundary ? {\n        errorElement: /* @__PURE__ */ React6.createElement(routeModule.Layout, null, /* @__PURE__ */ React6.createElement(ErrorBoundary, null))\n      } : { ErrorBoundary },\n      ...HydrateFallback ? {\n        hydrateFallbackElement: /* @__PURE__ */ React6.createElement(routeModule.Layout, null, /* @__PURE__ */ React6.createElement(HydrateFallback, null))\n      } : { HydrateFallback }\n    };\n  }\n  return { Component: Component4, ErrorBoundary, HydrateFallback };\n}\nfunction createServerRoutes(manifest, routeModules, future, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), spaModeLazyPromise = Promise.resolve({ Component: () => null })) {\n  return (routesByParentId[parentId] || []).map((route) => {\n    let routeModule = routeModules[route.id];\n    invariant2(\n      routeModule,\n      \"No `routeModule` available to create server routes\"\n    );\n    let dataRoute = {\n      ...getRouteComponents(route, routeModule, isSpaMode),\n      caseSensitive: route.caseSensitive,\n      id: route.id,\n      index: route.index,\n      path: route.path,\n      handle: routeModule.handle,\n      // For SPA Mode, all routes are lazy except root.  However we tell the\n      // router root is also lazy here too since we don't need a full\n      // implementation - we just need a `lazy` prop to tell the RR rendering\n      // where to stop which is always at the root route in SPA mode\n      lazy: isSpaMode ? () => spaModeLazyPromise : void 0,\n      // For partial hydration rendering, we need to indicate when the route\n      // has a loader/clientLoader, but it won't ever be called during the static\n      // render, so just give it a no-op function so we can render down to the\n      // proper fallback\n      loader: route.hasLoader || route.hasClientLoader ? () => null : void 0\n      // We don't need middleware/action/shouldRevalidate on these routes since\n      // they're for a static render\n    };\n    let children = createServerRoutes(\n      manifest,\n      routeModules,\n      future,\n      isSpaMode,\n      route.id,\n      routesByParentId,\n      spaModeLazyPromise\n    );\n    if (children.length > 0) dataRoute.children = children;\n    return dataRoute;\n  });\n}\nfunction createClientRoutesWithHMRRevalidationOptOut(needsRevalidation, manifest, routeModulesCache, initialState, ssr, isSpaMode) {\n  return createClientRoutes(\n    manifest,\n    routeModulesCache,\n    initialState,\n    ssr,\n    isSpaMode,\n    \"\",\n    groupRoutesByParentId(manifest),\n    needsRevalidation\n  );\n}\nfunction preventInvalidServerHandlerCall(type, route) {\n  if (type === \"loader\" && !route.hasLoader || type === \"action\" && !route.hasAction) {\n    let fn = type === \"action\" ? \"serverAction()\" : \"serverLoader()\";\n    let msg = `You are trying to call ${fn} on a route that does not have a server ${type} (routeId: \"${route.id}\")`;\n    console.error(msg);\n    throw new ErrorResponseImpl(400, \"Bad Request\", new Error(msg), true);\n  }\n}\nfunction noActionDefinedError(type, routeId) {\n  let article = type === \"clientAction\" ? \"a\" : \"an\";\n  let msg = `Route \"${routeId}\" does not have ${article} ${type}, but you are trying to submit to it. To fix this, please add ${article} \\`${type}\\` function to the route`;\n  console.error(msg);\n  throw new ErrorResponseImpl(405, \"Method Not Allowed\", new Error(msg), true);\n}\nfunction createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), needsRevalidation) {\n  return (routesByParentId[parentId] || []).map((route) => {\n    let routeModule = routeModulesCache[route.id];\n    function fetchServerHandler(singleFetch) {\n      invariant2(\n        typeof singleFetch === \"function\",\n        \"No single fetch function available for route handler\"\n      );\n      return singleFetch();\n    }\n    function fetchServerLoader(singleFetch) {\n      if (!route.hasLoader) return Promise.resolve(null);\n      return fetchServerHandler(singleFetch);\n    }\n    function fetchServerAction(singleFetch) {\n      if (!route.hasAction) {\n        throw noActionDefinedError(\"action\", route.id);\n      }\n      return fetchServerHandler(singleFetch);\n    }\n    function prefetchModule(modulePath) {\n      import(\n        /* @vite-ignore */\n        /* webpackIgnore: true */\n        modulePath\n      );\n    }\n    function prefetchRouteModuleChunks(route2) {\n      if (route2.clientActionModule) {\n        prefetchModule(route2.clientActionModule);\n      }\n      if (route2.clientLoaderModule) {\n        prefetchModule(route2.clientLoaderModule);\n      }\n    }\n    async function prefetchStylesAndCallHandler(handler) {\n      let cachedModule = routeModulesCache[route.id];\n      let linkPrefetchPromise = cachedModule ? prefetchStyleLinks(route, cachedModule) : Promise.resolve();\n      try {\n        return handler();\n      } finally {\n        await linkPrefetchPromise;\n      }\n    }\n    let dataRoute = {\n      id: route.id,\n      index: route.index,\n      path: route.path\n    };\n    if (routeModule) {\n      Object.assign(dataRoute, {\n        ...dataRoute,\n        ...getRouteComponents(route, routeModule, isSpaMode),\n        middleware: routeModule.clientMiddleware,\n        handle: routeModule.handle,\n        shouldRevalidate: getShouldRevalidateFunction(\n          dataRoute.path,\n          routeModule,\n          route,\n          ssr,\n          needsRevalidation\n        )\n      });\n      let hasInitialData = initialState && initialState.loaderData && route.id in initialState.loaderData;\n      let initialData = hasInitialData ? initialState?.loaderData?.[route.id] : void 0;\n      let hasInitialError = initialState && initialState.errors && route.id in initialState.errors;\n      let initialError = hasInitialError ? initialState?.errors?.[route.id] : void 0;\n      let isHydrationRequest = needsRevalidation == null && (routeModule.clientLoader?.hydrate === true || !route.hasLoader);\n      dataRoute.loader = async ({ request, params, context, pattern, url }, singleFetch) => {\n        let _isHydrationRequest = isHydrationRequest;\n        isHydrationRequest = false;\n        let result = await prefetchStylesAndCallHandler(async () => {\n          invariant2(\n            routeModule,\n            \"No `routeModule` available for critical-route loader\"\n          );\n          if (!routeModule.clientLoader) {\n            return fetchServerLoader(singleFetch);\n          }\n          return routeModule.clientLoader({\n            request,\n            params,\n            context,\n            pattern,\n            url,\n            async serverLoader() {\n              preventInvalidServerHandlerCall(\"loader\", route);\n              if (_isHydrationRequest) {\n                if (hasInitialData) {\n                  return initialData;\n                }\n                if (hasInitialError) {\n                  throw initialError;\n                }\n              }\n              return fetchServerLoader(singleFetch);\n            }\n          });\n        });\n        return result;\n      };\n      dataRoute.loader.hydrate = shouldHydrateRouteLoader(\n        route.id,\n        routeModule.clientLoader,\n        route.hasLoader,\n        isSpaMode\n      );\n      dataRoute.action = ({ request, params, context, pattern, url }, singleFetch) => {\n        return prefetchStylesAndCallHandler(async () => {\n          invariant2(\n            routeModule,\n            \"No `routeModule` available for critical-route action\"\n          );\n          if (!routeModule.clientAction) {\n            if (isSpaMode) {\n              throw noActionDefinedError(\"clientAction\", route.id);\n            }\n            return fetchServerAction(singleFetch);\n          }\n          return routeModule.clientAction({\n            request,\n            params,\n            context,\n            pattern,\n            url,\n            async serverAction() {\n              preventInvalidServerHandlerCall(\"action\", route);\n              return fetchServerAction(singleFetch);\n            }\n          });\n        });\n      };\n    } else {\n      if (!route.hasClientLoader) {\n        dataRoute.loader = (_, singleFetch) => prefetchStylesAndCallHandler(() => {\n          return fetchServerLoader(singleFetch);\n        });\n      }\n      if (!route.hasClientAction) {\n        dataRoute.action = (_, singleFetch) => prefetchStylesAndCallHandler(() => {\n          if (isSpaMode) {\n            throw noActionDefinedError(\"clientAction\", route.id);\n          }\n          return fetchServerAction(singleFetch);\n        });\n      }\n      let lazyRoutePromise;\n      async function getLazyRoute() {\n        if (lazyRoutePromise) {\n          return await lazyRoutePromise;\n        }\n        lazyRoutePromise = (async () => {\n          if (route.clientLoaderModule || route.clientActionModule) {\n            await new Promise((resolve) => setTimeout(resolve, 0));\n          }\n          let routeModulePromise = loadRouteModuleWithBlockingLinks(\n            route,\n            routeModulesCache\n          );\n          prefetchRouteModuleChunks(route);\n          return await routeModulePromise;\n        })();\n        return await lazyRoutePromise;\n      }\n      dataRoute.lazy = {\n        loader: route.hasClientLoader ? async () => {\n          let { clientLoader } = route.clientLoaderModule ? await import(\n            /* @vite-ignore */\n            /* webpackIgnore: true */\n            route.clientLoaderModule\n          ) : await getLazyRoute();\n          invariant2(clientLoader, \"No `clientLoader` export found\");\n          return (args, singleFetch) => clientLoader({\n            ...args,\n            async serverLoader() {\n              preventInvalidServerHandlerCall(\"loader\", route);\n              return fetchServerLoader(singleFetch);\n            }\n          });\n        } : void 0,\n        action: route.hasClientAction ? async () => {\n          let clientActionPromise = route.clientActionModule ? import(\n            /* @vite-ignore */\n            /* webpackIgnore: true */\n            route.clientActionModule\n          ) : getLazyRoute();\n          prefetchRouteModuleChunks(route);\n          let { clientAction } = await clientActionPromise;\n          invariant2(clientAction, \"No `clientAction` export found\");\n          return (args, singleFetch) => clientAction({\n            ...args,\n            async serverAction() {\n              preventInvalidServerHandlerCall(\"action\", route);\n              return fetchServerAction(singleFetch);\n            }\n          });\n        } : void 0,\n        middleware: route.hasClientMiddleware ? async () => {\n          let { clientMiddleware } = route.clientMiddlewareModule ? await import(\n            /* @vite-ignore */\n            /* webpackIgnore: true */\n            route.clientMiddlewareModule\n          ) : await getLazyRoute();\n          invariant2(clientMiddleware, \"No `clientMiddleware` export found\");\n          return clientMiddleware;\n        } : void 0,\n        shouldRevalidate: async () => {\n          let lazyRoute = await getLazyRoute();\n          return getShouldRevalidateFunction(\n            dataRoute.path,\n            lazyRoute,\n            route,\n            ssr,\n            needsRevalidation\n          );\n        },\n        handle: async () => (await getLazyRoute()).handle,\n        // No need to wrap these in layout since the root route is never\n        // loaded via route.lazy()\n        Component: async () => (await getLazyRoute()).Component,\n        ErrorBoundary: route.hasErrorBoundary ? async () => (await getLazyRoute()).ErrorBoundary : void 0\n      };\n    }\n    let children = createClientRoutes(\n      manifest,\n      routeModulesCache,\n      initialState,\n      ssr,\n      isSpaMode,\n      route.id,\n      routesByParentId,\n      needsRevalidation\n    );\n    if (children.length > 0) dataRoute.children = children;\n    return dataRoute;\n  });\n}\nfunction getShouldRevalidateFunction(path, route, manifestRoute, ssr, needsRevalidation) {\n  if (needsRevalidation) {\n    return wrapShouldRevalidateForHdr(\n      manifestRoute.id,\n      route.shouldRevalidate,\n      needsRevalidation\n    );\n  }\n  if (!ssr && manifestRoute.hasLoader && !manifestRoute.hasClientLoader) {\n    let myParams = path ? compilePath(path)[1].map((p) => p.paramName) : [];\n    const didParamsChange = (opts) => myParams.some((p) => opts.currentParams[p] !== opts.nextParams[p]);\n    if (route.shouldRevalidate) {\n      let fn = route.shouldRevalidate;\n      return (opts) => fn({\n        ...opts,\n        defaultShouldRevalidate: didParamsChange(opts)\n      });\n    } else {\n      return (opts) => didParamsChange(opts);\n    }\n  }\n  return route.shouldRevalidate;\n}\nfunction wrapShouldRevalidateForHdr(routeId, routeShouldRevalidate, needsRevalidation) {\n  let handledRevalidation = false;\n  return (arg) => {\n    if (!handledRevalidation) {\n      handledRevalidation = true;\n      return needsRevalidation.has(routeId);\n    }\n    return routeShouldRevalidate ? routeShouldRevalidate(arg) : arg.defaultShouldRevalidate;\n  };\n}\nasync function loadRouteModuleWithBlockingLinks(route, routeModules) {\n  let routeModulePromise = loadRouteModule(route, routeModules);\n  let prefetchRouteCssPromise = prefetchRouteCss(route);\n  let routeModule = await routeModulePromise;\n  await Promise.all([\n    prefetchRouteCssPromise,\n    prefetchStyleLinks(route, routeModule)\n  ]);\n  return {\n    Component: getRouteModuleComponent(routeModule),\n    ErrorBoundary: routeModule.ErrorBoundary,\n    clientMiddleware: routeModule.clientMiddleware,\n    clientAction: routeModule.clientAction,\n    clientLoader: routeModule.clientLoader,\n    handle: routeModule.handle,\n    links: routeModule.links,\n    meta: routeModule.meta,\n    shouldRevalidate: routeModule.shouldRevalidate\n  };\n}\nfunction getRouteModuleComponent(routeModule) {\n  if (routeModule.default == null) return void 0;\n  let isEmptyObject = typeof routeModule.default === \"object\" && Object.keys(routeModule.default).length === 0;\n  if (!isEmptyObject) {\n    return routeModule.default;\n  }\n}\nfunction shouldHydrateRouteLoader(routeId, clientLoader, hasLoader, isSpaMode) {\n  return isSpaMode && routeId !== \"root\" || clientLoader != null && (clientLoader.hydrate === true || hasLoader !== true);\n}\n\n// lib/dom/ssr/fog-of-war.ts\nvar nextPaths = /* @__PURE__ */ new Set();\nvar discoveredPathsMaxSize = 1e3;\nvar discoveredPaths = /* @__PURE__ */ new Set();\nvar URL_LIMIT = 7680;\nfunction isFogOfWarEnabled(routeDiscovery, ssr) {\n  return routeDiscovery.mode === \"lazy\" && ssr === true;\n}\nfunction getPartialManifest({ sri, ...manifest }, router) {\n  let routeIds = new Set(router.state.matches.map((m) => m.route.id));\n  let segments = router.state.location.pathname.split(\"/\").filter(Boolean);\n  let paths = [\"/\"];\n  segments.pop();\n  while (segments.length > 0) {\n    paths.push(`/${segments.join(\"/\")}`);\n    segments.pop();\n  }\n  paths.forEach((path) => {\n    let matches = matchRoutesImpl(\n      router.routes,\n      path,\n      router.basename || \"/\",\n      false,\n      router.branches\n    );\n    if (matches) {\n      matches.forEach((m) => routeIds.add(m.route.id));\n    }\n  });\n  let initialRoutes = [...routeIds].reduce(\n    (acc, id) => Object.assign(acc, { [id]: manifest.routes[id] }),\n    {}\n  );\n  return {\n    ...manifest,\n    routes: initialRoutes,\n    sri: sri ? true : void 0\n  };\n}\nfunction getPatchRoutesOnNavigationFunction(getRouter, manifest, routeModules, ssr, routeDiscovery, isSpaMode, basename) {\n  if (!isFogOfWarEnabled(routeDiscovery, ssr)) {\n    return void 0;\n  }\n  return async ({ path, patch, signal, fetcherKey }) => {\n    if (discoveredPaths.has(path)) {\n      return;\n    }\n    let { state } = getRouter();\n    await fetchAndApplyManifestPatches(\n      [path],\n      // If we're patching for a fetcher call, reload the current location\n      // Otherwise prefer any ongoing navigation location\n      fetcherKey ? window.location.href : createPath(state.navigation.location || state.location),\n      manifest,\n      routeModules,\n      ssr,\n      isSpaMode,\n      basename,\n      routeDiscovery.manifestPath,\n      patch,\n      signal\n    );\n  };\n}\nfunction useFogOFWarDiscovery(router, manifest, routeModules, ssr, routeDiscovery, isSpaMode) {\n  React7.useEffect(() => {\n    if (!isFogOfWarEnabled(routeDiscovery, ssr) || // @ts-expect-error - TS doesn't know about this yet\n    window.navigator?.connection?.saveData === true) {\n      return;\n    }\n    function registerElement(el) {\n      let path = el.tagName === \"FORM\" ? el.getAttribute(\"action\") : el.getAttribute(\"href\");\n      if (!path) {\n        return;\n      }\n      let pathname = el.tagName === \"A\" ? el.pathname : new URL(path, window.location.origin).pathname;\n      if (!discoveredPaths.has(pathname)) {\n        nextPaths.add(pathname);\n      }\n    }\n    async function fetchPatches() {\n      document.querySelectorAll(\"a[data-discover], form[data-discover]\").forEach(registerElement);\n      let lazyPaths = Array.from(nextPaths.keys()).filter((path) => {\n        if (discoveredPaths.has(path)) {\n          nextPaths.delete(path);\n          return false;\n        }\n        return true;\n      });\n      if (lazyPaths.length === 0) {\n        return;\n      }\n      try {\n        await fetchAndApplyManifestPatches(\n          lazyPaths,\n          null,\n          manifest,\n          routeModules,\n          ssr,\n          isSpaMode,\n          router.basename,\n          routeDiscovery.manifestPath,\n          router.patchRoutes\n        );\n      } catch (e) {\n        console.error(\"Failed to fetch manifest patches\", e);\n      }\n    }\n    let debouncedFetchPatches = debounce(fetchPatches, 100);\n    fetchPatches();\n    let observer = new MutationObserver(() => debouncedFetchPatches());\n    observer.observe(document.documentElement, {\n      subtree: true,\n      childList: true,\n      attributes: true,\n      attributeFilter: [\"data-discover\", \"href\", \"action\"]\n    });\n    return () => observer.disconnect();\n  }, [ssr, isSpaMode, manifest, routeModules, router, routeDiscovery]);\n}\nfunction getManifestPath(_manifestPath, basename) {\n  let manifestPath = _manifestPath || \"/__manifest\";\n  return basename == null ? manifestPath : joinPaths([basename, manifestPath]);\n}\nvar MANIFEST_VERSION_STORAGE_KEY = \"react-router-manifest-version\";\nasync function fetchAndApplyManifestPatches(paths, errorReloadPath, manifest, routeModules, ssr, isSpaMode, basename, manifestPath, patchRoutes, signal) {\n  const searchParams = new URLSearchParams();\n  searchParams.set(\"paths\", paths.sort().join(\",\"));\n  searchParams.set(\"version\", manifest.version);\n  let url = new URL(\n    getManifestPath(manifestPath, basename),\n    window.location.origin\n  );\n  url.search = searchParams.toString();\n  if (url.toString().length > URL_LIMIT) {\n    nextPaths.clear();\n    return;\n  }\n  let serverPatches;\n  try {\n    let res = await fetch(url, { signal });\n    if (!res.ok) {\n      throw new Error(`${res.status} ${res.statusText}`);\n    } else if (res.status === 204 && res.headers.has(\"X-Remix-Reload-Document\")) {\n      if (!errorReloadPath) {\n        console.warn(\n          \"Detected a manifest version mismatch during eager route discovery. The next navigation/fetch to an undiscovered route will result in a new document navigation to sync up with the latest manifest.\"\n        );\n        return;\n      }\n      try {\n        if (sessionStorage.getItem(MANIFEST_VERSION_STORAGE_KEY) === manifest.version) {\n          console.error(\n            \"Unable to discover routes due to manifest version mismatch.\"\n          );\n          return;\n        }\n        sessionStorage.setItem(MANIFEST_VERSION_STORAGE_KEY, manifest.version);\n      } catch {\n      }\n      window.location.href = errorReloadPath;\n      console.warn(\"Detected manifest version mismatch, reloading...\");\n      await new Promise(() => {\n      });\n    } else if (res.status >= 400) {\n      throw new Error(await res.text());\n    }\n    try {\n      sessionStorage.removeItem(MANIFEST_VERSION_STORAGE_KEY);\n    } catch {\n    }\n    serverPatches = await res.json();\n  } catch (e) {\n    if (signal?.aborted) return;\n    throw e;\n  }\n  let knownRoutes = new Set(Object.keys(manifest.routes));\n  let patches = Object.values(serverPatches).reduce((acc, route) => {\n    if (route && !knownRoutes.has(route.id)) {\n      acc[route.id] = route;\n    }\n    return acc;\n  }, {});\n  Object.assign(manifest.routes, patches);\n  paths.forEach((p) => addToFifoQueue(p, discoveredPaths));\n  let parentIds = /* @__PURE__ */ new Set();\n  Object.values(patches).forEach((patch) => {\n    if (patch && (!patch.parentId || !patches[patch.parentId])) {\n      parentIds.add(patch.parentId);\n    }\n  });\n  parentIds.forEach(\n    (parentId) => patchRoutes(\n      parentId || null,\n      createClientRoutes(patches, routeModules, null, ssr, isSpaMode, parentId)\n    )\n  );\n}\nfunction addToFifoQueue(path, queue) {\n  if (queue.size >= discoveredPathsMaxSize) {\n    let first = queue.values().next().value;\n    queue.delete(first);\n  }\n  queue.add(path);\n}\nfunction debounce(callback, wait) {\n  let timeoutId;\n  return (...args) => {\n    window.clearTimeout(timeoutId);\n    timeoutId = window.setTimeout(() => callback(...args), wait);\n  };\n}\n\n// lib/dom/ssr/components.tsx\nfunction useDataRouterContext2() {\n  let context = React8.useContext(DataRouterContext);\n  invariant2(\n    context,\n    \"You must render this element inside a <DataRouterContext.Provider> element\"\n  );\n  return context;\n}\nfunction useDataRouterStateContext() {\n  let context = React8.useContext(DataRouterStateContext);\n  invariant2(\n    context,\n    \"You must render this element inside a <DataRouterStateContext.Provider> element\"\n  );\n  return context;\n}\nvar FrameworkContext = React8.createContext(void 0);\nFrameworkContext.displayName = \"FrameworkContext\";\nfunction useFrameworkContext() {\n  let context = React8.useContext(FrameworkContext);\n  invariant2(\n    context,\n    \"You must render this element inside a <HydratedRouter> element\"\n  );\n  return context;\n}\nfunction usePrefetchBehavior(prefetch, theirElementProps) {\n  let frameworkContext = React8.useContext(FrameworkContext);\n  let [maybePrefetch, setMaybePrefetch] = React8.useState(false);\n  let [shouldPrefetch, setShouldPrefetch] = React8.useState(false);\n  let { onFocus, onBlur, onMouseEnter, onMouseLeave, onTouchStart } = theirElementProps;\n  let ref = React8.useRef(null);\n  React8.useEffect(() => {\n    if (prefetch === \"render\") {\n      setShouldPrefetch(true);\n    }\n    if (prefetch === \"viewport\") {\n      let callback = (entries) => {\n        entries.forEach((entry) => {\n          setShouldPrefetch(entry.isIntersecting);\n        });\n      };\n      let observer = new IntersectionObserver(callback, { threshold: 0.5 });\n      if (ref.current) observer.observe(ref.current);\n      return () => {\n        observer.disconnect();\n      };\n    }\n  }, [prefetch]);\n  React8.useEffect(() => {\n    if (maybePrefetch) {\n      let id = setTimeout(() => {\n        setShouldPrefetch(true);\n      }, 100);\n      return () => {\n        clearTimeout(id);\n      };\n    }\n  }, [maybePrefetch]);\n  let setIntent = () => {\n    setMaybePrefetch(true);\n  };\n  let cancelIntent = () => {\n    setMaybePrefetch(false);\n    setShouldPrefetch(false);\n  };\n  if (!frameworkContext) {\n    return [false, ref, {}];\n  }\n  if (prefetch !== \"intent\") {\n    return [shouldPrefetch, ref, {}];\n  }\n  return [\n    shouldPrefetch,\n    ref,\n    {\n      onFocus: composeEventHandlers(onFocus, setIntent),\n      onBlur: composeEventHandlers(onBlur, cancelIntent),\n      onMouseEnter: composeEventHandlers(onMouseEnter, setIntent),\n      onMouseLeave: composeEventHandlers(onMouseLeave, cancelIntent),\n      onTouchStart: composeEventHandlers(onTouchStart, setIntent)\n    }\n  ];\n}\nfunction composeEventHandlers(theirHandler, ourHandler) {\n  return (event) => {\n    theirHandler && theirHandler(event);\n    if (!event.defaultPrevented) {\n      ourHandler(event);\n    }\n  };\n}\nfunction getActiveMatches(matches, errors, isSpaMode) {\n  if (isSpaMode && !isHydrated) {\n    return [matches[0]];\n  }\n  if (errors) {\n    let errorIdx = matches.findIndex((m) => errors[m.route.id] !== void 0);\n    return matches.slice(0, errorIdx + 1);\n  }\n  return matches;\n}\nvar CRITICAL_CSS_DATA_ATTRIBUTE = \"data-react-router-critical-css\";\nfunction Links({ nonce, crossOrigin }) {\n  let { isSpaMode, manifest, routeModules, criticalCss } = useFrameworkContext();\n  let { errors, matches: routerMatches } = useDataRouterStateContext();\n  let matches = getActiveMatches(routerMatches, errors, isSpaMode);\n  let keyedLinks = React8.useMemo(\n    () => getKeyedLinksForMatches(matches, routeModules, manifest),\n    [matches, routeModules, manifest]\n  );\n  return /* @__PURE__ */ React8.createElement(React8.Fragment, null, typeof criticalCss === \"string\" ? /* @__PURE__ */ React8.createElement(\n    \"style\",\n    {\n      ...{ [CRITICAL_CSS_DATA_ATTRIBUTE]: \"\" },\n      nonce,\n      dangerouslySetInnerHTML: { __html: criticalCss }\n    }\n  ) : null, typeof criticalCss === \"object\" ? /* @__PURE__ */ React8.createElement(\n    \"link\",\n    {\n      ...{ [CRITICAL_CSS_DATA_ATTRIBUTE]: \"\" },\n      rel: \"stylesheet\",\n      href: criticalCss.href,\n      nonce,\n      crossOrigin\n    }\n  ) : null, keyedLinks.map(\n    ({ key, link }) => isPageLinkDescriptor(link) ? /* @__PURE__ */ React8.createElement(\n      PrefetchPageLinks,\n      {\n        key,\n        nonce,\n        ...link,\n        crossOrigin: link.crossOrigin ?? crossOrigin\n      }\n    ) : /* @__PURE__ */ React8.createElement(\n      \"link\",\n      {\n        key,\n        nonce,\n        ...link,\n        crossOrigin: link.crossOrigin ?? crossOrigin\n      }\n    )\n  ));\n}\nfunction PrefetchPageLinks({ page, ...linkProps }) {\n  let rsc = useIsRSCRouterContext();\n  let { router } = useDataRouterContext2();\n  let matches = React8.useMemo(\n    () => matchRoutes(router.routes, page, router.basename),\n    [router.routes, page, router.basename]\n  );\n  if (!matches) {\n    return null;\n  }\n  if (rsc) {\n    return /* @__PURE__ */ React8.createElement(RSCPrefetchPageLinksImpl, { page, matches, ...linkProps });\n  }\n  return /* @__PURE__ */ React8.createElement(PrefetchPageLinksImpl, { page, matches, ...linkProps });\n}\nfunction useKeyedPrefetchLinks(matches) {\n  let { manifest, routeModules } = useFrameworkContext();\n  let [keyedPrefetchLinks, setKeyedPrefetchLinks] = React8.useState([]);\n  React8.useEffect(() => {\n    let interrupted = false;\n    void getKeyedPrefetchLinks(matches, manifest, routeModules).then(\n      (links) => {\n        if (!interrupted) {\n          setKeyedPrefetchLinks(links);\n        }\n      }\n    );\n    return () => {\n      interrupted = true;\n    };\n  }, [matches, manifest, routeModules]);\n  return keyedPrefetchLinks;\n}\nfunction RSCPrefetchPageLinksImpl({\n  page,\n  matches: nextMatches,\n  ...linkProps\n}) {\n  let location = useLocation();\n  let { future } = useFrameworkContext();\n  let { basename } = useDataRouterContext2();\n  let dataHrefs = React8.useMemo(() => {\n    if (page === location.pathname + location.search + location.hash) {\n      return [];\n    }\n    let url = singleFetchUrl(\n      page,\n      basename,\n      future.unstable_trailingSlashAwareDataRequests,\n      \"rsc\"\n    );\n    let hasSomeRoutesWithShouldRevalidate = false;\n    let targetRoutes = [];\n    for (let match of nextMatches) {\n      if (typeof match.route.shouldRevalidate === \"function\") {\n        hasSomeRoutesWithShouldRevalidate = true;\n      } else {\n        targetRoutes.push(match.route.id);\n      }\n    }\n    if (hasSomeRoutesWithShouldRevalidate && targetRoutes.length > 0) {\n      url.searchParams.set(\"_routes\", targetRoutes.join(\",\"));\n    }\n    return [url.pathname + url.search];\n  }, [\n    basename,\n    future.unstable_trailingSlashAwareDataRequests,\n    page,\n    location,\n    nextMatches\n  ]);\n  return /* @__PURE__ */ React8.createElement(React8.Fragment, null, dataHrefs.map((href) => /* @__PURE__ */ React8.createElement(\"link\", { key: href, rel: \"prefetch\", as: \"fetch\", href, ...linkProps })));\n}\nfunction PrefetchPageLinksImpl({\n  page,\n  matches: nextMatches,\n  ...linkProps\n}) {\n  let location = useLocation();\n  let { future, manifest, routeModules } = useFrameworkContext();\n  let { basename } = useDataRouterContext2();\n  let { loaderData, matches } = useDataRouterStateContext();\n  let newMatchesForData = React8.useMemo(\n    () => getNewMatchesForLinks(\n      page,\n      nextMatches,\n      matches,\n      manifest,\n      location,\n      \"data\"\n    ),\n    [page, nextMatches, matches, manifest, location]\n  );\n  let newMatchesForAssets = React8.useMemo(\n    () => getNewMatchesForLinks(\n      page,\n      nextMatches,\n      matches,\n      manifest,\n      location,\n      \"assets\"\n    ),\n    [page, nextMatches, matches, manifest, location]\n  );\n  let dataHrefs = React8.useMemo(() => {\n    if (page === location.pathname + location.search + location.hash) {\n      return [];\n    }\n    let routesParams = /* @__PURE__ */ new Set();\n    let foundOptOutRoute = false;\n    nextMatches.forEach((m) => {\n      let manifestRoute = manifest.routes[m.route.id];\n      if (!manifestRoute || !manifestRoute.hasLoader) {\n        return;\n      }\n      if (!newMatchesForData.some((m2) => m2.route.id === m.route.id) && m.route.id in loaderData && routeModules[m.route.id]?.shouldRevalidate) {\n        foundOptOutRoute = true;\n      } else if (manifestRoute.hasClientLoader) {\n        foundOptOutRoute = true;\n      } else {\n        routesParams.add(m.route.id);\n      }\n    });\n    if (routesParams.size === 0) {\n      return [];\n    }\n    let url = singleFetchUrl(\n      page,\n      basename,\n      future.unstable_trailingSlashAwareDataRequests,\n      \"data\"\n    );\n    if (foundOptOutRoute && routesParams.size > 0) {\n      url.searchParams.set(\n        \"_routes\",\n        nextMatches.filter((m) => routesParams.has(m.route.id)).map((m) => m.route.id).join(\",\")\n      );\n    }\n    return [url.pathname + url.search];\n  }, [\n    basename,\n    future.unstable_trailingSlashAwareDataRequests,\n    loaderData,\n    location,\n    manifest,\n    newMatchesForData,\n    nextMatches,\n    page,\n    routeModules\n  ]);\n  let moduleHrefs = React8.useMemo(\n    () => getModuleLinkHrefs(newMatchesForAssets, manifest),\n    [newMatchesForAssets, manifest]\n  );\n  let keyedPrefetchLinks = useKeyedPrefetchLinks(newMatchesForAssets);\n  return /* @__PURE__ */ React8.createElement(React8.Fragment, null, dataHrefs.map((href) => /* @__PURE__ */ React8.createElement(\"link\", { key: href, rel: \"prefetch\", as: \"fetch\", href, ...linkProps })), moduleHrefs.map((href) => /* @__PURE__ */ React8.createElement(\"link\", { key: href, rel: \"modulepreload\", href, ...linkProps })), keyedPrefetchLinks.map(({ key, link }) => (\n    // these don't spread `linkProps` because they are full link descriptors\n    // already with their own props\n    /* @__PURE__ */ React8.createElement(\n      \"link\",\n      {\n        key,\n        nonce: linkProps.nonce,\n        ...link,\n        crossOrigin: link.crossOrigin ?? linkProps.crossOrigin\n      }\n    )\n  )));\n}\nfunction Meta() {\n  let { isSpaMode, routeModules } = useFrameworkContext();\n  let {\n    errors,\n    matches: routerMatches,\n    loaderData\n  } = useDataRouterStateContext();\n  let location = useLocation();\n  let _matches = getActiveMatches(routerMatches, errors, isSpaMode);\n  let error = null;\n  if (errors) {\n    error = errors[_matches[_matches.length - 1].route.id];\n  }\n  let meta = [];\n  let leafMeta = null;\n  let matches = [];\n  for (let i = 0; i < _matches.length; i++) {\n    let _match = _matches[i];\n    let routeId = _match.route.id;\n    let data2 = loaderData[routeId];\n    let params = _match.params;\n    let routeModule = routeModules[routeId];\n    let routeMeta = [];\n    let match = {\n      id: routeId,\n      data: data2,\n      loaderData: data2,\n      meta: [],\n      params: _match.params,\n      pathname: _match.pathname,\n      handle: _match.route.handle,\n      error\n    };\n    matches[i] = match;\n    if (routeModule?.meta) {\n      routeMeta = typeof routeModule.meta === \"function\" ? routeModule.meta({\n        data: data2,\n        loaderData: data2,\n        params,\n        location,\n        matches,\n        error\n      }) : Array.isArray(routeModule.meta) ? [...routeModule.meta] : routeModule.meta;\n    } else if (leafMeta) {\n      routeMeta = [...leafMeta];\n    }\n    routeMeta = routeMeta || [];\n    if (!Array.isArray(routeMeta)) {\n      throw new Error(\n        \"The route at \" + _match.route.path + \" returns an invalid value. All route meta functions must return an array of meta objects.\\n\\nTo reference the meta function API, see https://reactrouter.com/start/framework/route-module#meta\"\n      );\n    }\n    match.meta = routeMeta;\n    matches[i] = match;\n    meta = [...routeMeta];\n    leafMeta = meta;\n  }\n  return /* @__PURE__ */ React8.createElement(React8.Fragment, null, meta.flat().map((metaProps) => {\n    if (!metaProps) {\n      return null;\n    }\n    if (\"tagName\" in metaProps) {\n      let { tagName, ...rest } = metaProps;\n      if (!isValidMetaTag(tagName)) {\n        console.warn(\n          `A meta object uses an invalid tagName: ${tagName}. Expected either 'link' or 'meta'`\n        );\n        return null;\n      }\n      let Comp = tagName;\n      return /* @__PURE__ */ React8.createElement(Comp, { key: JSON.stringify(rest), ...rest });\n    }\n    if (\"title\" in metaProps) {\n      return /* @__PURE__ */ React8.createElement(\"title\", { key: \"title\" }, String(metaProps.title));\n    }\n    if (\"charset\" in metaProps) {\n      metaProps.charSet ?? (metaProps.charSet = metaProps.charset);\n      delete metaProps.charset;\n    }\n    if (\"charSet\" in metaProps && metaProps.charSet != null) {\n      return typeof metaProps.charSet === \"string\" ? /* @__PURE__ */ React8.createElement(\"meta\", { key: \"charSet\", charSet: metaProps.charSet }) : null;\n    }\n    if (\"script:ld+json\" in metaProps) {\n      try {\n        let json = JSON.stringify(metaProps[\"script:ld+json\"]);\n        return /* @__PURE__ */ React8.createElement(\n          \"script\",\n          {\n            key: `script:ld+json:${json}`,\n            type: \"application/ld+json\",\n            dangerouslySetInnerHTML: { __html: escapeHtml(json) }\n          }\n        );\n      } catch (e) {\n        return null;\n      }\n    }\n    return /* @__PURE__ */ React8.createElement(\"meta\", { key: JSON.stringify(metaProps), ...metaProps });\n  }));\n}\nfunction isValidMetaTag(tagName) {\n  return typeof tagName === \"string\" && /^(meta|link)$/.test(tagName);\n}\nvar isHydrated = false;\nfunction setIsHydrated() {\n  isHydrated = true;\n}\nfunction Scripts(scriptProps) {\n  let {\n    manifest,\n    serverHandoffString,\n    isSpaMode,\n    renderMeta,\n    routeDiscovery,\n    ssr\n  } = useFrameworkContext();\n  let { router, static: isStatic, staticContext } = useDataRouterContext2();\n  let { matches: routerMatches } = useDataRouterStateContext();\n  let isRSCRouterContext = useIsRSCRouterContext();\n  let enableFogOfWar = isFogOfWarEnabled(routeDiscovery, ssr);\n  if (renderMeta) {\n    renderMeta.didRenderScripts = true;\n  }\n  let matches = getActiveMatches(routerMatches, null, isSpaMode);\n  React8.useEffect(() => {\n    setIsHydrated();\n  }, []);\n  let initialScripts = React8.useMemo(() => {\n    if (isRSCRouterContext) {\n      return null;\n    }\n    let streamScript = \"window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());\";\n    let contextScript = staticContext ? `window.__reactRouterContext = ${serverHandoffString};${streamScript}` : \" \";\n    let routeModulesScript = !isStatic ? \" \" : `${manifest.hmr?.runtime ? `import ${JSON.stringify(manifest.hmr.runtime)};` : \"\"}${!enableFogOfWar ? `import ${JSON.stringify(manifest.url)}` : \"\"};\n${matches.map((match, routeIndex) => {\n      let routeVarName = `route${routeIndex}`;\n      let manifestEntry = manifest.routes[match.route.id];\n      invariant2(manifestEntry, `Route ${match.route.id} not found in manifest`);\n      let {\n        clientActionModule,\n        clientLoaderModule,\n        clientMiddlewareModule,\n        hydrateFallbackModule,\n        module\n      } = manifestEntry;\n      let chunks = [\n        ...clientActionModule ? [\n          {\n            module: clientActionModule,\n            varName: `${routeVarName}_clientAction`\n          }\n        ] : [],\n        ...clientLoaderModule ? [\n          {\n            module: clientLoaderModule,\n            varName: `${routeVarName}_clientLoader`\n          }\n        ] : [],\n        ...clientMiddlewareModule ? [\n          {\n            module: clientMiddlewareModule,\n            varName: `${routeVarName}_clientMiddleware`\n          }\n        ] : [],\n        ...hydrateFallbackModule ? [\n          {\n            module: hydrateFallbackModule,\n            varName: `${routeVarName}_HydrateFallback`\n          }\n        ] : [],\n        { module, varName: `${routeVarName}_main` }\n      ];\n      if (chunks.length === 1) {\n        return `import * as ${routeVarName} from ${JSON.stringify(module)};`;\n      }\n      let chunkImportsSnippet = chunks.map((chunk) => `import * as ${chunk.varName} from \"${chunk.module}\";`).join(\"\\n\");\n      let mergedChunksSnippet = `const ${routeVarName} = {${chunks.map((chunk) => `...${chunk.varName}`).join(\",\")}};`;\n      return [chunkImportsSnippet, mergedChunksSnippet].join(\"\\n\");\n    }).join(\"\\n\")}\n  ${enableFogOfWar ? (\n      // Inline a minimal manifest with the SSR matches\n      `window.__reactRouterManifest = ${JSON.stringify(\n        getPartialManifest(manifest, router),\n        null,\n        2\n      )};`\n    ) : \"\"}\n  window.__reactRouterRouteModules = {${matches.map((match, index) => `${JSON.stringify(match.route.id)}:route${index}`).join(\",\")}};\n\nimport(${JSON.stringify(manifest.entry.module)});`;\n    return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(\n      \"script\",\n      {\n        ...scriptProps,\n        suppressHydrationWarning: true,\n        dangerouslySetInnerHTML: { __html: contextScript },\n        type: void 0\n      }\n    ), /* @__PURE__ */ React8.createElement(\n      \"script\",\n      {\n        ...scriptProps,\n        suppressHydrationWarning: true,\n        dangerouslySetInnerHTML: { __html: routeModulesScript },\n        type: \"module\",\n        async: true\n      }\n    ));\n  }, []);\n  let preloads = isHydrated || isRSCRouterContext ? [] : [\n    // Dedupe through a Set\n    ...new Set(\n      manifest.entry.imports.concat(\n        getModuleLinkHrefs(matches, manifest, {\n          includeHydrateFallback: true\n        })\n      )\n    )\n  ];\n  let sri = typeof manifest.sri === \"object\" ? manifest.sri : {};\n  warnOnce(\n    !isRSCRouterContext,\n    \"The <Scripts /> element is a no-op when using RSC and can be safely removed.\"\n  );\n  return isHydrated || isRSCRouterContext ? null : /* @__PURE__ */ React8.createElement(React8.Fragment, null, typeof manifest.sri === \"object\" ? /* @__PURE__ */ React8.createElement(\n    \"script\",\n    {\n      ...scriptProps,\n      \"rr-importmap\": \"\",\n      type: \"importmap\",\n      suppressHydrationWarning: true,\n      dangerouslySetInnerHTML: {\n        __html: JSON.stringify({\n          integrity: sri\n        })\n      }\n    }\n  ) : null, !enableFogOfWar ? /* @__PURE__ */ React8.createElement(\n    \"link\",\n    {\n      rel: \"modulepreload\",\n      href: manifest.url,\n      crossOrigin: scriptProps.crossOrigin,\n      integrity: sri[manifest.url],\n      nonce: scriptProps.nonce,\n      suppressHydrationWarning: true\n    }\n  ) : null, /* @__PURE__ */ React8.createElement(\n    \"link\",\n    {\n      rel: \"modulepreload\",\n      href: manifest.entry.module,\n      crossOrigin: scriptProps.crossOrigin,\n      integrity: sri[manifest.entry.module],\n      nonce: scriptProps.nonce,\n      suppressHydrationWarning: true\n    }\n  ), preloads.map((path) => /* @__PURE__ */ React8.createElement(\n    \"link\",\n    {\n      key: path,\n      rel: \"modulepreload\",\n      href: path,\n      crossOrigin: scriptProps.crossOrigin,\n      integrity: sri[path],\n      nonce: scriptProps.nonce,\n      suppressHydrationWarning: true\n    }\n  )), initialScripts);\n}\nfunction mergeRefs(...refs) {\n  return (value) => {\n    refs.forEach((ref) => {\n      if (typeof ref === \"function\") {\n        ref(value);\n      } else if (ref != null) {\n        ref.current = value;\n      }\n    });\n  };\n}\n\n// lib/dom/ssr/errorBoundaries.tsx\nvar RemixErrorBoundary = class extends React9.Component {\n  constructor(props) {\n    super(props);\n    this.state = { error: props.error || null, location: props.location };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  static getDerivedStateFromProps(props, state) {\n    if (state.location !== props.location) {\n      return { error: props.error || null, location: props.location };\n    }\n    return { error: props.error || state.error, location: state.location };\n  }\n  render() {\n    if (this.state.error) {\n      return /* @__PURE__ */ React9.createElement(\n        RemixRootDefaultErrorBoundary,\n        {\n          error: this.state.error,\n          isOutsideRemixApp: true\n        }\n      );\n    } else {\n      return this.props.children;\n    }\n  }\n};\nfunction RemixRootDefaultErrorBoundary({\n  error,\n  isOutsideRemixApp\n}) {\n  console.error(error);\n  let heyDeveloper = /* @__PURE__ */ React9.createElement(\n    \"script\",\n    {\n      dangerouslySetInnerHTML: {\n        __html: `\n        console.log(\n          \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this when your app throws errors. Check out https://reactrouter.com/how-to/error-boundary for more information.\"\n        );\n      `\n      }\n    }\n  );\n  if (isRouteErrorResponse(error)) {\n    return /* @__PURE__ */ React9.createElement(BoundaryShell, { title: \"Unhandled Thrown Response!\" }, /* @__PURE__ */ React9.createElement(\"h1\", { style: { fontSize: \"24px\" } }, error.status, \" \", error.statusText), ENABLE_DEV_WARNINGS ? heyDeveloper : null);\n  }\n  let errorInstance;\n  if (error instanceof Error) {\n    errorInstance = error;\n  } else {\n    let errorString = error == null ? \"Unknown Error\" : typeof error === \"object\" && \"toString\" in error ? error.toString() : JSON.stringify(error);\n    errorInstance = new Error(errorString);\n  }\n  return /* @__PURE__ */ React9.createElement(\n    BoundaryShell,\n    {\n      title: \"Application Error!\",\n      isOutsideRemixApp\n    },\n    /* @__PURE__ */ React9.createElement(\"h1\", { style: { fontSize: \"24px\" } }, \"Application Error\"),\n    /* @__PURE__ */ React9.createElement(\n      \"pre\",\n      {\n        style: {\n          padding: \"2rem\",\n          background: \"hsla(10, 50%, 50%, 0.1)\",\n          color: \"red\",\n          overflow: \"auto\"\n        }\n      },\n      errorInstance.stack\n    ),\n    heyDeveloper\n  );\n}\nfunction BoundaryShell({\n  title,\n  renderScripts,\n  isOutsideRemixApp,\n  children\n}) {\n  let { routeModules } = useFrameworkContext();\n  if (routeModules.root?.Layout && !isOutsideRemixApp) {\n    return children;\n  }\n  return /* @__PURE__ */ React9.createElement(\"html\", { lang: \"en\" }, /* @__PURE__ */ React9.createElement(\"head\", null, /* @__PURE__ */ React9.createElement(\"meta\", { charSet: \"utf-8\" }), /* @__PURE__ */ React9.createElement(\n    \"meta\",\n    {\n      name: \"viewport\",\n      content: \"width=device-width,initial-scale=1,viewport-fit=cover\"\n    }\n  ), /* @__PURE__ */ React9.createElement(\"title\", null, title)), /* @__PURE__ */ React9.createElement(\"body\", null, /* @__PURE__ */ React9.createElement(\"main\", { style: { fontFamily: \"system-ui, sans-serif\", padding: \"2rem\" } }, children, renderScripts ? /* @__PURE__ */ React9.createElement(Scripts, null) : null)));\n}\n\n// lib/dom/lib.tsx\nimport * as React10 from \"react\";\nvar isBrowser2 = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\ntry {\n  if (isBrowser2) {\n    window.__reactRouterVersion = // @ts-expect-error\n    \"7.15.1\";\n  }\n} catch (e) {\n}\nfunction createBrowserRouter(routes, opts) {\n  return createRouter({\n    basename: opts?.basename,\n    getContext: opts?.getContext,\n    future: opts?.future,\n    history: createBrowserHistory({ window: opts?.window }),\n    hydrationData: opts?.hydrationData || parseHydrationData(),\n    routes,\n    mapRouteProperties,\n    hydrationRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n    window: opts?.window,\n    instrumentations: opts?.instrumentations\n  }).initialize();\n}\nfunction createHashRouter(routes, opts) {\n  return createRouter({\n    basename: opts?.basename,\n    getContext: opts?.getContext,\n    future: opts?.future,\n    history: createHashHistory({ window: opts?.window }),\n    hydrationData: opts?.hydrationData || parseHydrationData(),\n    routes,\n    mapRouteProperties,\n    hydrationRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n    window: opts?.window,\n    instrumentations: opts?.instrumentations\n  }).initialize();\n}\nfunction parseHydrationData() {\n  let state = window?.__staticRouterHydrationData;\n  if (state && state.errors) {\n    state = {\n      ...state,\n      errors: deserializeErrors(state.errors)\n    };\n  }\n  return state;\n}\nfunction deserializeErrors(errors) {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n  for (let [key, val] of entries) {\n    if (val && val.__type === \"RouteErrorResponse\") {\n      serialized[key] = new ErrorResponseImpl(\n        val.status,\n        val.statusText,\n        val.data,\n        val.internal === true\n      );\n    } else if (val && val.__type === \"Error\") {\n      if (val.__subType) {\n        let ErrorConstructor = window[val.__subType];\n        if (typeof ErrorConstructor === \"function\") {\n          try {\n            let error = new ErrorConstructor(val.message);\n            error.stack = \"\";\n            serialized[key] = error;\n          } catch (e) {\n          }\n        }\n      }\n      if (serialized[key] == null) {\n        let error = new Error(val.message);\n        error.stack = \"\";\n        serialized[key] = error;\n      }\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\nfunction BrowserRouter({\n  basename,\n  children,\n  useTransitions,\n  window: window2\n}) {\n  let historyRef = React10.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createBrowserHistory({ window: window2, v5Compat: true });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React10.useState({\n    action: history.action,\n    location: history.location\n  });\n  let setState = React10.useCallback(\n    (newState) => {\n      if (useTransitions === false) {\n        setStateImpl(newState);\n      } else {\n        React10.startTransition(() => setStateImpl(newState));\n      }\n    },\n    [useTransitions]\n  );\n  React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  return /* @__PURE__ */ React10.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location: state.location,\n      navigationType: state.action,\n      navigator: history,\n      useTransitions\n    }\n  );\n}\nfunction HashRouter({\n  basename,\n  children,\n  useTransitions,\n  window: window2\n}) {\n  let historyRef = React10.useRef();\n  if (historyRef.current == null) {\n    historyRef.current = createHashHistory({ window: window2, v5Compat: true });\n  }\n  let history = historyRef.current;\n  let [state, setStateImpl] = React10.useState({\n    action: history.action,\n    location: history.location\n  });\n  let setState = React10.useCallback(\n    (newState) => {\n      if (useTransitions === false) {\n        setStateImpl(newState);\n      } else {\n        React10.startTransition(() => setStateImpl(newState));\n      }\n    },\n    [useTransitions]\n  );\n  React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  return /* @__PURE__ */ React10.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location: state.location,\n      navigationType: state.action,\n      navigator: history,\n      useTransitions\n    }\n  );\n}\nfunction HistoryRouter({\n  basename,\n  children,\n  history,\n  useTransitions\n}) {\n  let [state, setStateImpl] = React10.useState({\n    action: history.action,\n    location: history.location\n  });\n  let setState = React10.useCallback(\n    (newState) => {\n      if (useTransitions === false) {\n        setStateImpl(newState);\n      } else {\n        React10.startTransition(() => setStateImpl(newState));\n      }\n    },\n    [useTransitions]\n  );\n  React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n  return /* @__PURE__ */ React10.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location: state.location,\n      navigationType: state.action,\n      navigator: history,\n      useTransitions\n    }\n  );\n}\nHistoryRouter.displayName = \"unstable_HistoryRouter\";\nvar ABSOLUTE_URL_REGEX2 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar Link = React10.forwardRef(\n  function LinkWithRef({\n    onClick,\n    discover = \"render\",\n    prefetch = \"none\",\n    relative,\n    reloadDocument,\n    replace: replace2,\n    mask,\n    state,\n    target,\n    to,\n    preventScrollReset,\n    viewTransition,\n    defaultShouldRevalidate,\n    ...rest\n  }, forwardedRef) {\n    let { basename, navigator, useTransitions } = React10.useContext(NavigationContext);\n    let isAbsolute = typeof to === \"string\" && ABSOLUTE_URL_REGEX2.test(to);\n    let parsed = parseToInfo(to, basename);\n    to = parsed.to;\n    let href = useHref(to, { relative });\n    let location = useLocation();\n    let maskedHref = null;\n    if (mask) {\n      let resolved = resolveTo(\n        mask,\n        [],\n        location.mask ? location.mask.pathname : \"/\",\n        true\n      );\n      if (basename !== \"/\") {\n        resolved.pathname = resolved.pathname === \"/\" ? basename : joinPaths([basename, resolved.pathname]);\n      }\n      maskedHref = navigator.createHref(resolved);\n    }\n    let [shouldPrefetch, prefetchRef, prefetchHandlers] = usePrefetchBehavior(\n      prefetch,\n      rest\n    );\n    let internalOnClick = useLinkClickHandler(to, {\n      replace: replace2,\n      mask,\n      state,\n      target,\n      preventScrollReset,\n      relative,\n      viewTransition,\n      defaultShouldRevalidate,\n      useTransitions\n    });\n    function handleClick(event) {\n      if (onClick) onClick(event);\n      if (!event.defaultPrevented) {\n        internalOnClick(event);\n      }\n    }\n    let isSpaLink = !(parsed.isExternal || reloadDocument);\n    let link = (\n      // eslint-disable-next-line jsx-a11y/anchor-has-content\n      /* @__PURE__ */ React10.createElement(\n        \"a\",\n        {\n          ...rest,\n          ...prefetchHandlers,\n          href: (isSpaLink ? maskedHref : void 0) || parsed.absoluteURL || href,\n          onClick: isSpaLink ? handleClick : onClick,\n          ref: mergeRefs(forwardedRef, prefetchRef),\n          target,\n          \"data-discover\": !isAbsolute && discover === \"render\" ? \"true\" : void 0\n        }\n      )\n    );\n    return shouldPrefetch && !isAbsolute ? /* @__PURE__ */ React10.createElement(React10.Fragment, null, link, /* @__PURE__ */ React10.createElement(PrefetchPageLinks, { page: href })) : link;\n  }\n);\nLink.displayName = \"Link\";\nvar NavLink = React10.forwardRef(\n  function NavLinkWithRef({\n    \"aria-current\": ariaCurrentProp = \"page\",\n    caseSensitive = false,\n    className: classNameProp = \"\",\n    end = false,\n    style: styleProp,\n    to,\n    viewTransition,\n    children,\n    ...rest\n  }, ref) {\n    let path = useResolvedPath(to, { relative: rest.relative });\n    let location = useLocation();\n    let routerState = React10.useContext(DataRouterStateContext);\n    let { navigator, basename } = React10.useContext(NavigationContext);\n    let isTransitioning = routerState != null && // Conditional usage is OK here because the usage of a data router is static\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useViewTransitionState(path) && viewTransition === true;\n    let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;\n    let locationPathname = location.pathname;\n    let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;\n    if (!caseSensitive) {\n      locationPathname = locationPathname.toLowerCase();\n      nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;\n      toPathname = toPathname.toLowerCase();\n    }\n    if (nextLocationPathname && basename) {\n      nextLocationPathname = stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n    }\n    const endSlashPosition = toPathname !== \"/\" && toPathname.endsWith(\"/\") ? toPathname.length - 1 : toPathname.length;\n    let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === \"/\";\n    let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === \"/\");\n    let renderProps = {\n      isActive,\n      isPending,\n      isTransitioning\n    };\n    let ariaCurrent = isActive ? ariaCurrentProp : void 0;\n    let className;\n    if (typeof classNameProp === \"function\") {\n      className = classNameProp(renderProps);\n    } else {\n      className = [\n        classNameProp,\n        isActive ? \"active\" : null,\n        isPending ? \"pending\" : null,\n        isTransitioning ? \"transitioning\" : null\n      ].filter(Boolean).join(\" \");\n    }\n    let style = typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n    return /* @__PURE__ */ React10.createElement(\n      Link,\n      {\n        ...rest,\n        \"aria-current\": ariaCurrent,\n        className,\n        ref,\n        style,\n        to,\n        viewTransition\n      },\n      typeof children === \"function\" ? children(renderProps) : children\n    );\n  }\n);\nNavLink.displayName = \"NavLink\";\nvar Form = React10.forwardRef(\n  ({\n    discover = \"render\",\n    fetcherKey,\n    navigate,\n    reloadDocument,\n    replace: replace2,\n    state,\n    method = defaultMethod,\n    action,\n    onSubmit,\n    relative,\n    preventScrollReset,\n    viewTransition,\n    defaultShouldRevalidate,\n    ...props\n  }, forwardedRef) => {\n    let { useTransitions } = React10.useContext(NavigationContext);\n    let submit = useSubmit();\n    let formAction = useFormAction(action, { relative });\n    let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n    let isAbsolute = typeof action === \"string\" && ABSOLUTE_URL_REGEX2.test(action);\n    let submitHandler = (event) => {\n      onSubmit && onSubmit(event);\n      if (event.defaultPrevented) return;\n      event.preventDefault();\n      let submitter = event.nativeEvent.submitter;\n      let submitMethod = submitter?.getAttribute(\"formmethod\") || method;\n      let doSubmit = () => submit(submitter || event.currentTarget, {\n        fetcherKey,\n        method: submitMethod,\n        navigate,\n        replace: replace2,\n        state,\n        relative,\n        preventScrollReset,\n        viewTransition,\n        defaultShouldRevalidate\n      });\n      if (useTransitions && navigate !== false) {\n        React10.startTransition(() => doSubmit());\n      } else {\n        doSubmit();\n      }\n    };\n    return /* @__PURE__ */ React10.createElement(\n      \"form\",\n      {\n        ref: forwardedRef,\n        method: formMethod,\n        action: formAction,\n        onSubmit: reloadDocument ? onSubmit : submitHandler,\n        ...props,\n        \"data-discover\": !isAbsolute && discover === \"render\" ? \"true\" : void 0\n      }\n    );\n  }\n);\nForm.displayName = \"Form\";\nfunction ScrollRestoration({\n  getKey,\n  storageKey,\n  ...props\n}) {\n  let remixContext = React10.useContext(FrameworkContext);\n  let { basename } = React10.useContext(NavigationContext);\n  let location = useLocation();\n  let matches = useMatches();\n  useScrollRestoration({ getKey, storageKey });\n  let ssrKey = React10.useMemo(\n    () => {\n      if (!remixContext || !getKey) return null;\n      let userKey = getScrollRestorationKey(\n        location,\n        matches,\n        basename,\n        getKey\n      );\n      return userKey !== location.key ? userKey : null;\n    },\n    // Nah, we only need this the first time for the SSR render\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    []\n  );\n  if (!remixContext || remixContext.isSpaMode) {\n    return null;\n  }\n  let restoreScroll = ((storageKey2, restoreKey) => {\n    if (!window.history.state || !window.history.state.key) {\n      let key = Math.random().toString(32).slice(2);\n      window.history.replaceState({ key }, \"\");\n    }\n    try {\n      let positions = JSON.parse(sessionStorage.getItem(storageKey2) || \"{}\");\n      let storedY = positions[restoreKey || window.history.state.key];\n      if (typeof storedY === \"number\") {\n        window.scrollTo(0, storedY);\n      }\n    } catch (error) {\n      console.error(error);\n      sessionStorage.removeItem(storageKey2);\n    }\n  }).toString();\n  return /* @__PURE__ */ React10.createElement(\n    \"script\",\n    {\n      ...props,\n      suppressHydrationWarning: true,\n      dangerouslySetInnerHTML: {\n        __html: `(${restoreScroll})(${escapeHtml(\n          JSON.stringify(storageKey || SCROLL_RESTORATION_STORAGE_KEY)\n        )}, ${escapeHtml(JSON.stringify(ssrKey))})`\n      }\n    }\n  );\n}\nScrollRestoration.displayName = \"ScrollRestoration\";\nfunction getDataRouterConsoleError2(hookName) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\nfunction useDataRouterContext3(hookName) {\n  let ctx = React10.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError2(hookName));\n  return ctx;\n}\nfunction useDataRouterState2(hookName) {\n  let state = React10.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError2(hookName));\n  return state;\n}\nfunction useLinkClickHandler(to, {\n  target,\n  replace: replaceProp,\n  mask,\n  state,\n  preventScrollReset,\n  relative,\n  viewTransition,\n  defaultShouldRevalidate,\n  useTransitions\n} = {}) {\n  let navigate = useNavigate();\n  let location = useLocation();\n  let path = useResolvedPath(to, { relative });\n  return React10.useCallback(\n    (event) => {\n      if (shouldProcessLinkClick(event, target)) {\n        event.preventDefault();\n        let replace2 = replaceProp !== void 0 ? replaceProp : createPath(location) === createPath(path);\n        let doNavigate = () => navigate(to, {\n          replace: replace2,\n          mask,\n          state,\n          preventScrollReset,\n          relative,\n          viewTransition,\n          defaultShouldRevalidate\n        });\n        if (useTransitions) {\n          React10.startTransition(() => doNavigate());\n        } else {\n          doNavigate();\n        }\n      }\n    },\n    [\n      location,\n      navigate,\n      path,\n      replaceProp,\n      mask,\n      state,\n      target,\n      to,\n      preventScrollReset,\n      relative,\n      viewTransition,\n      defaultShouldRevalidate,\n      useTransitions\n    ]\n  );\n}\nfunction useSearchParams(defaultInit) {\n  warning(\n    typeof URLSearchParams !== \"undefined\",\n    `You cannot use the \\`useSearchParams\\` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.`\n  );\n  let defaultSearchParamsRef = React10.useRef(createSearchParams(defaultInit));\n  let hasSetSearchParamsRef = React10.useRef(false);\n  let location = useLocation();\n  let searchParams = React10.useMemo(\n    () => (\n      // Only merge in the defaults if we haven't yet called setSearchParams.\n      // Once we call that we want those to take precedence, otherwise you can't\n      // remove a param with setSearchParams({}) if it has an initial value\n      getSearchParamsForLocation(\n        location.search,\n        hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current\n      )\n    ),\n    [location.search]\n  );\n  let navigate = useNavigate();\n  let setSearchParams = React10.useCallback(\n    (nextInit, navigateOptions) => {\n      const newSearchParams = createSearchParams(\n        typeof nextInit === \"function\" ? nextInit(new URLSearchParams(searchParams)) : nextInit\n      );\n      hasSetSearchParamsRef.current = true;\n      navigate(\"?\" + newSearchParams, navigateOptions);\n    },\n    [navigate, searchParams]\n  );\n  return [searchParams, setSearchParams];\n}\nvar fetcherId = 0;\nvar getUniqueFetcherId = () => `__${String(++fetcherId)}__`;\nfunction useSubmit() {\n  let { router } = useDataRouterContext3(\"useSubmit\" /* UseSubmit */);\n  let { basename } = React10.useContext(NavigationContext);\n  let currentRouteId = useRouteId();\n  let routerFetch = router.fetch;\n  let routerNavigate = router.navigate;\n  return React10.useCallback(\n    async (target, options = {}) => {\n      let { action, method, encType, formData, body } = getFormSubmissionInfo(\n        target,\n        basename\n      );\n      if (options.navigate === false) {\n        let key = options.fetcherKey || getUniqueFetcherId();\n        await routerFetch(key, currentRouteId, options.action || action, {\n          defaultShouldRevalidate: options.defaultShouldRevalidate,\n          preventScrollReset: options.preventScrollReset,\n          formData,\n          body,\n          formMethod: options.method || method,\n          formEncType: options.encType || encType,\n          flushSync: options.flushSync\n        });\n      } else {\n        await routerNavigate(options.action || action, {\n          defaultShouldRevalidate: options.defaultShouldRevalidate,\n          preventScrollReset: options.preventScrollReset,\n          formData,\n          body,\n          formMethod: options.method || method,\n          formEncType: options.encType || encType,\n          replace: options.replace,\n          state: options.state,\n          fromRouteId: currentRouteId,\n          flushSync: options.flushSync,\n          viewTransition: options.viewTransition\n        });\n      }\n    },\n    [routerFetch, routerNavigate, basename, currentRouteId]\n  );\n}\nfunction useFormAction(action, { relative } = {}) {\n  let { basename } = React10.useContext(NavigationContext);\n  let routeContext = React10.useContext(RouteContext);\n  invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n  let [match] = routeContext.matches.slice(-1);\n  let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n  let location = useLocation();\n  if (action == null) {\n    path.search = location.search;\n    let params = new URLSearchParams(path.search);\n    let indexValues = params.getAll(\"index\");\n    let hasNakedIndexParam = indexValues.some((v) => v === \"\");\n    if (hasNakedIndexParam) {\n      params.delete(\"index\");\n      indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n      let qs = params.toString();\n      path.search = qs ? `?${qs}` : \"\";\n    }\n  }\n  if ((!action || action === \".\") && match.route.index) {\n    path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n  }\n  if (basename !== \"/\") {\n    path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n  return createPath(path);\n}\nfunction useFetcher({\n  key\n} = {}) {\n  let { router } = useDataRouterContext3(\"useFetcher\" /* UseFetcher */);\n  let state = useDataRouterState2(\"useFetcher\" /* UseFetcher */);\n  let fetcherData = React10.useContext(FetchersContext);\n  let route = React10.useContext(RouteContext);\n  let routeId = route.matches[route.matches.length - 1]?.route.id;\n  invariant(fetcherData, `useFetcher must be used inside a FetchersContext`);\n  invariant(route, `useFetcher must be used inside a RouteContext`);\n  invariant(\n    routeId != null,\n    `useFetcher can only be used on routes that contain a unique \"id\"`\n  );\n  let defaultKey = React10.useId();\n  let [fetcherKey, setFetcherKey] = React10.useState(key || defaultKey);\n  if (key && key !== fetcherKey) {\n    setFetcherKey(key);\n  }\n  let { deleteFetcher, getFetcher, resetFetcher, fetch: routerFetch } = router;\n  React10.useEffect(() => {\n    getFetcher(fetcherKey);\n    return () => deleteFetcher(fetcherKey);\n  }, [deleteFetcher, getFetcher, fetcherKey]);\n  let load = React10.useCallback(\n    async (href, opts) => {\n      invariant(routeId, \"No routeId available for fetcher.load()\");\n      await routerFetch(fetcherKey, routeId, href, opts);\n    },\n    [fetcherKey, routeId, routerFetch]\n  );\n  let submitImpl = useSubmit();\n  let submit = React10.useCallback(\n    async (target, opts) => {\n      await submitImpl(target, {\n        ...opts,\n        navigate: false,\n        fetcherKey\n      });\n    },\n    [fetcherKey, submitImpl]\n  );\n  let reset = React10.useCallback(\n    (opts) => resetFetcher(fetcherKey, opts),\n    [resetFetcher, fetcherKey]\n  );\n  let FetcherForm = React10.useMemo(() => {\n    let FetcherForm2 = React10.forwardRef(\n      (props, ref) => {\n        return /* @__PURE__ */ React10.createElement(Form, { ...props, navigate: false, fetcherKey, ref });\n      }\n    );\n    FetcherForm2.displayName = \"fetcher.Form\";\n    return FetcherForm2;\n  }, [fetcherKey]);\n  let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n  let data2 = fetcherData.get(fetcherKey);\n  let fetcherWithComponents = React10.useMemo(\n    () => ({\n      Form: FetcherForm,\n      submit,\n      load,\n      reset,\n      ...fetcher,\n      data: data2\n    }),\n    [FetcherForm, submit, load, reset, fetcher, data2]\n  );\n  return fetcherWithComponents;\n}\nfunction useFetchers() {\n  let state = useDataRouterState2(\"useFetchers\" /* UseFetchers */);\n  return React10.useMemo(\n    () => Array.from(state.fetchers.entries()).map(([key, fetcher]) => ({\n      ...fetcher,\n      key\n    })),\n    [state.fetchers]\n  );\n}\nvar SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nvar savedScrollPositions = {};\nfunction getScrollRestorationKey(location, matches, basename, getKey) {\n  let key = null;\n  if (getKey) {\n    if (basename !== \"/\") {\n      key = getKey(\n        {\n          ...location,\n          pathname: stripBasename(location.pathname, basename) || location.pathname\n        },\n        matches\n      );\n    } else {\n      key = getKey(location, matches);\n    }\n  }\n  if (key == null) {\n    key = location.key;\n  }\n  return key;\n}\nfunction useScrollRestoration({\n  getKey,\n  storageKey\n} = {}) {\n  let { router } = useDataRouterContext3(\"useScrollRestoration\" /* UseScrollRestoration */);\n  let { restoreScrollPosition, preventScrollReset } = useDataRouterState2(\n    \"useScrollRestoration\" /* UseScrollRestoration */\n  );\n  let { basename } = React10.useContext(NavigationContext);\n  let location = useLocation();\n  let matches = useMatches();\n  let navigation = useNavigation();\n  React10.useEffect(() => {\n    window.history.scrollRestoration = \"manual\";\n    return () => {\n      window.history.scrollRestoration = \"auto\";\n    };\n  }, []);\n  usePageHide(\n    React10.useCallback(() => {\n      if (navigation.state === \"idle\") {\n        let key = getScrollRestorationKey(location, matches, basename, getKey);\n        savedScrollPositions[key] = window.scrollY;\n      }\n      try {\n        sessionStorage.setItem(\n          storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n          JSON.stringify(savedScrollPositions)\n        );\n      } catch (error) {\n        warning(\n          false,\n          `Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${error}).`\n        );\n      }\n      window.history.scrollRestoration = \"auto\";\n    }, [navigation.state, getKey, basename, location, matches, storageKey])\n  );\n  if (typeof document !== \"undefined\") {\n    React10.useLayoutEffect(() => {\n      try {\n        let sessionPositions = sessionStorage.getItem(\n          storageKey || SCROLL_RESTORATION_STORAGE_KEY\n        );\n        if (sessionPositions) {\n          savedScrollPositions = JSON.parse(sessionPositions);\n        }\n      } catch (e) {\n      }\n    }, [storageKey]);\n    React10.useLayoutEffect(() => {\n      let disableScrollRestoration = router?.enableScrollRestoration(\n        savedScrollPositions,\n        () => window.scrollY,\n        getKey ? (location2, matches2) => getScrollRestorationKey(location2, matches2, basename, getKey) : void 0\n      );\n      return () => disableScrollRestoration && disableScrollRestoration();\n    }, [router, basename, getKey]);\n    React10.useLayoutEffect(() => {\n      if (restoreScrollPosition === false) {\n        return;\n      }\n      if (typeof restoreScrollPosition === \"number\") {\n        window.scrollTo(0, restoreScrollPosition);\n        return;\n      }\n      try {\n        if (location.hash) {\n          let el = document.getElementById(\n            decodeURIComponent(location.hash.slice(1))\n          );\n          if (el) {\n            el.scrollIntoView();\n            return;\n          }\n        }\n      } catch {\n        warning(\n          false,\n          `\"${location.hash.slice(\n            1\n          )}\" is not a decodable element ID. The view will not scroll to it.`\n        );\n      }\n      if (preventScrollReset === true) {\n        return;\n      }\n      window.scrollTo(0, 0);\n    }, [location, restoreScrollPosition, preventScrollReset]);\n  }\n}\nfunction useBeforeUnload(callback, options) {\n  let { capture } = options || {};\n  React10.useEffect(() => {\n    let opts = capture != null ? { capture } : void 0;\n    window.addEventListener(\"beforeunload\", callback, opts);\n    return () => {\n      window.removeEventListener(\"beforeunload\", callback, opts);\n    };\n  }, [callback, capture]);\n}\nfunction usePageHide(callback, options) {\n  let { capture } = options || {};\n  React10.useEffect(() => {\n    let opts = capture != null ? { capture } : void 0;\n    window.addEventListener(\"pagehide\", callback, opts);\n    return () => {\n      window.removeEventListener(\"pagehide\", callback, opts);\n    };\n  }, [callback, capture]);\n}\nfunction usePrompt({\n  when,\n  message\n}) {\n  let blocker = useBlocker(when);\n  React10.useEffect(() => {\n    if (blocker.state === \"blocked\") {\n      let proceed = window.confirm(message);\n      if (proceed) {\n        setTimeout(blocker.proceed, 0);\n      } else {\n        blocker.reset();\n      }\n    }\n  }, [blocker, message]);\n  React10.useEffect(() => {\n    if (blocker.state === \"blocked\" && !when) {\n      blocker.reset();\n    }\n  }, [blocker, when]);\n}\nfunction useViewTransitionState(to, { relative } = {}) {\n  let vtContext = React10.useContext(ViewTransitionContext);\n  invariant(\n    vtContext != null,\n    \"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  Did you accidentally import `RouterProvider` from `react-router`?\"\n  );\n  let { basename } = useDataRouterContext3(\n    \"useViewTransitionState\" /* useViewTransitionState */\n  );\n  let path = useResolvedPath(to, { relative });\n  if (!vtContext.isTransitioning) {\n    return false;\n  }\n  let currentPath = stripBasename(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;\n  let nextPath = stripBasename(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;\n  return matchPath(path.pathname, nextPath) != null || matchPath(path.pathname, currentPath) != null;\n}\n\n// lib/dom/server.tsx\nimport * as React11 from \"react\";\nfunction StaticRouter({\n  basename,\n  children,\n  location: locationProp = \"/\"\n}) {\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n  let action = \"POP\" /* Pop */;\n  let location = {\n    pathname: locationProp.pathname || \"/\",\n    search: locationProp.search || \"\",\n    hash: locationProp.hash || \"\",\n    state: locationProp.state != null ? locationProp.state : null,\n    key: locationProp.key || \"default\",\n    mask: void 0\n  };\n  let staticNavigator = getStatelessNavigator();\n  return /* @__PURE__ */ React11.createElement(\n    Router,\n    {\n      basename,\n      children,\n      location,\n      navigationType: action,\n      navigator: staticNavigator,\n      static: true,\n      useTransitions: false\n    }\n  );\n}\nfunction StaticRouterProvider({\n  context,\n  router,\n  hydrate: hydrate2 = true,\n  nonce\n}) {\n  invariant(\n    router && context,\n    \"You must provide `router` and `context` to <StaticRouterProvider>\"\n  );\n  let dataRouterContext = {\n    router,\n    navigator: getStatelessNavigator(),\n    static: true,\n    staticContext: context,\n    basename: context.basename || \"/\"\n  };\n  let fetchersContext = /* @__PURE__ */ new Map();\n  let hydrateScript = \"\";\n  if (hydrate2 !== false) {\n    let data2 = {\n      loaderData: context.loaderData,\n      actionData: context.actionData,\n      errors: serializeErrors(context.errors)\n    };\n    let json = escapeHtml(JSON.stringify(JSON.stringify(data2)));\n    hydrateScript = `window.__staticRouterHydrationData = JSON.parse(${json});`;\n  }\n  let { state } = dataRouterContext.router;\n  return /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React11.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React11.createElement(FetchersContext.Provider, { value: fetchersContext }, /* @__PURE__ */ React11.createElement(ViewTransitionContext.Provider, { value: { isTransitioning: false } }, /* @__PURE__ */ React11.createElement(\n    Router,\n    {\n      basename: dataRouterContext.basename,\n      location: state.location,\n      navigationType: state.historyAction,\n      navigator: dataRouterContext.navigator,\n      static: dataRouterContext.static,\n      useTransitions: false\n    },\n    /* @__PURE__ */ React11.createElement(\n      DataRoutes2,\n      {\n        manifest: router.manifest,\n        routes: router.routes,\n        future: router.future,\n        state,\n        isStatic: true\n      }\n    )\n  ))))), hydrateScript ? /* @__PURE__ */ React11.createElement(\n    \"script\",\n    {\n      suppressHydrationWarning: true,\n      nonce,\n      dangerouslySetInnerHTML: { __html: hydrateScript }\n    }\n  ) : null);\n}\nfunction serializeErrors(errors) {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n  for (let [key, val] of entries) {\n    if (isRouteErrorResponse(val)) {\n      serialized[key] = { ...val, __type: \"RouteErrorResponse\" };\n    } else if (val instanceof Error) {\n      serialized[key] = {\n        message: val.message,\n        __type: \"Error\",\n        // If this is a subclass (i.e., ReferenceError), send up the type so we\n        // can re-create the same type during hydration.\n        ...val.name !== \"Error\" ? {\n          __subType: val.name\n        } : {}\n      };\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\nfunction getStatelessNavigator() {\n  return {\n    createHref,\n    encodeLocation,\n    push(to) {\n      throw new Error(\n        `You cannot use navigator.push() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${JSON.stringify(to)})\\` somewhere in your app.`\n      );\n    },\n    replace(to) {\n      throw new Error(\n        `You cannot use navigator.replace() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${JSON.stringify(to)}, { replace: true })\\` somewhere in your app.`\n      );\n    },\n    go(delta) {\n      throw new Error(\n        `You cannot use navigator.go() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${delta})\\` somewhere in your app.`\n      );\n    },\n    back() {\n      throw new Error(\n        `You cannot use navigator.back() on the server because it is a stateless environment.`\n      );\n    },\n    forward() {\n      throw new Error(\n        `You cannot use navigator.forward() on the server because it is a stateless environment.`\n      );\n    }\n  };\n}\nfunction createStaticHandler2(routes, opts) {\n  return createStaticHandler(routes, {\n    ...opts,\n    mapRouteProperties\n  });\n}\nfunction createStaticRouter(routes, context, opts = {}) {\n  let manifest = {};\n  let dataRoutes = convertRoutesToDataRoutes(\n    routes,\n    mapRouteProperties,\n    void 0,\n    manifest\n  );\n  let matches = context.matches.map((match) => {\n    let route = manifest[match.route.id] || match.route;\n    return {\n      ...match,\n      route\n    };\n  });\n  let msg = (method) => `You cannot use router.${method}() on the server because it is a stateless environment`;\n  return {\n    get basename() {\n      return context.basename;\n    },\n    get future() {\n      return {\n        v8_middleware: false,\n        v8_passThroughRequests: false,\n        ...opts?.future\n      };\n    },\n    get state() {\n      return {\n        historyAction: \"POP\" /* Pop */,\n        location: context.location,\n        matches,\n        loaderData: context.loaderData,\n        actionData: context.actionData,\n        errors: context.errors,\n        initialized: true,\n        renderFallback: false,\n        navigation: IDLE_NAVIGATION,\n        restoreScrollPosition: null,\n        preventScrollReset: false,\n        revalidation: \"idle\",\n        fetchers: /* @__PURE__ */ new Map(),\n        blockers: /* @__PURE__ */ new Map()\n      };\n    },\n    get routes() {\n      return dataRoutes;\n    },\n    get branches() {\n      return opts.branches;\n    },\n    get manifest() {\n      return manifest;\n    },\n    get window() {\n      return void 0;\n    },\n    initialize() {\n      throw msg(\"initialize\");\n    },\n    subscribe() {\n      throw msg(\"subscribe\");\n    },\n    enableScrollRestoration() {\n      throw msg(\"enableScrollRestoration\");\n    },\n    navigate() {\n      throw msg(\"navigate\");\n    },\n    fetch() {\n      throw msg(\"fetch\");\n    },\n    revalidate() {\n      throw msg(\"revalidate\");\n    },\n    createHref,\n    encodeLocation,\n    getFetcher() {\n      return IDLE_FETCHER;\n    },\n    deleteFetcher() {\n      throw msg(\"deleteFetcher\");\n    },\n    resetFetcher() {\n      throw msg(\"resetFetcher\");\n    },\n    dispose() {\n      throw msg(\"dispose\");\n    },\n    getBlocker() {\n      return IDLE_BLOCKER;\n    },\n    deleteBlocker() {\n      throw msg(\"deleteBlocker\");\n    },\n    patchRoutes() {\n      throw msg(\"patchRoutes\");\n    },\n    _internalFetchControllers: /* @__PURE__ */ new Map(),\n    _internalSetRoutes() {\n      throw msg(\"_internalSetRoutes\");\n    },\n    _internalSetStateDoNotUseOrYouWillBreakYourApp() {\n      throw msg(\"_internalSetStateDoNotUseOrYouWillBreakYourApp\");\n    }\n  };\n}\nfunction createHref(to) {\n  return typeof to === \"string\" ? to : createPath(to);\n}\nfunction encodeLocation(to) {\n  let href = typeof to === \"string\" ? to : createPath(to);\n  href = href.replace(/ $/, \"%20\");\n  let encoded = ABSOLUTE_URL_REGEX3.test(href) ? new URL(href) : new URL(href, \"http://localhost\");\n  return {\n    pathname: encoded.pathname,\n    search: encoded.search,\n    hash: encoded.hash\n  };\n}\nvar ABSOLUTE_URL_REGEX3 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nexport {\n  Action,\n  createMemoryHistory,\n  createBrowserHistory,\n  createHashHistory,\n  invariant,\n  createPath,\n  parsePath,\n  createContext,\n  RouterContextProvider,\n  convertRoutesToDataRoutes,\n  matchRoutes,\n  matchRoutesImpl,\n  generatePath,\n  matchPath,\n  stripBasename,\n  resolvePath,\n  data,\n  redirect,\n  redirectDocument,\n  replace,\n  ErrorResponseImpl,\n  isRouteErrorResponse,\n  instrumentHandler,\n  IDLE_NAVIGATION,\n  IDLE_FETCHER,\n  IDLE_BLOCKER,\n  createRouter,\n  createStaticHandler,\n  getStaticContextFromError,\n  invalidProtocols,\n  isDataWithResponseInit,\n  isResponse,\n  isRedirectStatusCode,\n  isRedirectResponse,\n  isMutationMethod,\n  DataRouterContext,\n  DataRouterStateContext,\n  RSCRouterContext,\n  ViewTransitionContext,\n  FetchersContext,\n  AwaitContextProvider,\n  NavigationContext,\n  LocationContext,\n  RouteContext,\n  ENABLE_DEV_WARNINGS,\n  decodeRedirectErrorDigest,\n  decodeRouteErrorResponseDigest,\n  useHref,\n  useInRouterContext,\n  useLocation,\n  useNavigationType,\n  useMatch,\n  useNavigate,\n  useOutletContext,\n  useOutlet,\n  useParams,\n  useResolvedPath,\n  useRoutes,\n  useNavigation,\n  useRevalidator,\n  useMatches,\n  useLoaderData,\n  useRouteLoaderData,\n  useActionData,\n  useRouteError,\n  useAsyncValue,\n  useAsyncError,\n  useBlocker,\n  useRoute,\n  useRouterState,\n  warnOnce,\n  mapRouteProperties,\n  hydrationRouteProperties,\n  createMemoryRouter,\n  RouterProvider,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  Routes,\n  Await,\n  createRoutesFromChildren,\n  createRoutesFromElements,\n  renderMatches,\n  WithComponentProps,\n  withComponentProps,\n  WithHydrateFallbackProps,\n  withHydrateFallbackProps,\n  WithErrorBoundaryProps,\n  withErrorBoundaryProps,\n  createSearchParams,\n  escapeHtml,\n  encode,\n  createRequestInit,\n  SingleFetchRedirectSymbol,\n  SINGLE_FETCH_REDIRECT_STATUS,\n  NO_BODY_STATUS_CODES,\n  StreamTransfer,\n  getTurboStreamSingleFetchDataStrategy,\n  getSingleFetchDataStrategyImpl,\n  stripIndexParam,\n  singleFetchUrl,\n  decodeViaTurboStream,\n  RemixErrorBoundary,\n  createServerRoutes,\n  createClientRoutesWithHMRRevalidationOptOut,\n  noActionDefinedError,\n  createClientRoutes,\n  shouldHydrateRouteLoader,\n  URL_LIMIT,\n  getPatchRoutesOnNavigationFunction,\n  useFogOFWarDiscovery,\n  getManifestPath,\n  FrameworkContext,\n  CRITICAL_CSS_DATA_ATTRIBUTE,\n  Links,\n  PrefetchPageLinks,\n  Meta,\n  setIsHydrated,\n  Scripts,\n  createBrowserRouter,\n  createHashRouter,\n  BrowserRouter,\n  HashRouter,\n  HistoryRouter,\n  Link,\n  NavLink,\n  Form,\n  ScrollRestoration,\n  useLinkClickHandler,\n  useSearchParams,\n  useSubmit,\n  useFormAction,\n  useFetcher,\n  useFetchers,\n  useScrollRestoration,\n  useBeforeUnload,\n  usePrompt,\n  useViewTransitionState,\n  StaticRouter,\n  StaticRouterProvider,\n  createStaticHandler2,\n  createStaticRouter\n};\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export function x(d) {\n  return d[0];\n}\n\nexport function y(d) {\n  return d[1];\n}\n","function RedBlackTree() {\n  this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n  node.U = // parent node\n  node.C = // color - true for red, false for black\n  node.L = // left node\n  node.R = // right node\n  node.P = // previous node\n  node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n  constructor: RedBlackTree,\n\n  insert: function(after, node) {\n    var parent, grandpa, uncle;\n\n    if (after) {\n      node.P = after;\n      node.N = after.N;\n      if (after.N) after.N.P = node;\n      after.N = node;\n      if (after.R) {\n        after = after.R;\n        while (after.L) after = after.L;\n        after.L = node;\n      } else {\n        after.R = node;\n      }\n      parent = after;\n    } else if (this._) {\n      after = RedBlackFirst(this._);\n      node.P = null;\n      node.N = after;\n      after.P = after.L = node;\n      parent = after;\n    } else {\n      node.P = node.N = null;\n      this._ = node;\n      parent = null;\n    }\n    node.L = node.R = null;\n    node.U = parent;\n    node.C = true;\n\n    after = node;\n    while (parent && parent.C) {\n      grandpa = parent.U;\n      if (parent === grandpa.L) {\n        uncle = grandpa.R;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.R) {\n            RedBlackRotateLeft(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateRight(this, grandpa);\n        }\n      } else {\n        uncle = grandpa.L;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.L) {\n            RedBlackRotateRight(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateLeft(this, grandpa);\n        }\n      }\n      parent = after.U;\n    }\n    this._.C = false;\n  },\n\n  remove: function(node) {\n    if (node.N) node.N.P = node.P;\n    if (node.P) node.P.N = node.N;\n    node.N = node.P = null;\n\n    var parent = node.U,\n        sibling,\n        left = node.L,\n        right = node.R,\n        next,\n        red;\n\n    if (!left) next = right;\n    else if (!right) next = left;\n    else next = RedBlackFirst(right);\n\n    if (parent) {\n      if (parent.L === node) parent.L = next;\n      else parent.R = next;\n    } else {\n      this._ = next;\n    }\n\n    if (left && right) {\n      red = next.C;\n      next.C = node.C;\n      next.L = left;\n      left.U = next;\n      if (next !== right) {\n        parent = next.U;\n        next.U = node.U;\n        node = next.R;\n        parent.L = node;\n        next.R = right;\n        right.U = next;\n      } else {\n        next.U = parent;\n        parent = next;\n        node = next.R;\n      }\n    } else {\n      red = node.C;\n      node = next;\n    }\n\n    if (node) node.U = parent;\n    if (red) return;\n    if (node && node.C) { node.C = false; return; }\n\n    do {\n      if (node === this._) break;\n      if (node === parent.L) {\n        sibling = parent.R;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateLeft(this, parent);\n          sibling = parent.R;\n        }\n        if ((sibling.L && sibling.L.C)\n            || (sibling.R && sibling.R.C)) {\n          if (!sibling.R || !sibling.R.C) {\n            sibling.L.C = false;\n            sibling.C = true;\n            RedBlackRotateRight(this, sibling);\n            sibling = parent.R;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.R.C = false;\n          RedBlackRotateLeft(this, parent);\n          node = this._;\n          break;\n        }\n      } else {\n        sibling = parent.L;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateRight(this, parent);\n          sibling = parent.L;\n        }\n        if ((sibling.L && sibling.L.C)\n          || (sibling.R && sibling.R.C)) {\n          if (!sibling.L || !sibling.L.C) {\n            sibling.R.C = false;\n            sibling.C = true;\n            RedBlackRotateLeft(this, sibling);\n            sibling = parent.L;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.L.C = false;\n          RedBlackRotateRight(this, parent);\n          node = this._;\n          break;\n        }\n      }\n      sibling.C = true;\n      node = parent;\n      parent = parent.U;\n    } while (!node.C);\n\n    if (node) node.C = false;\n  }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n  var p = node,\n      q = node.R,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.R = q.L;\n  if (p.R) p.R.U = p;\n  q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n  var p = node,\n      q = node.L,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.L = q.R;\n  if (p.L) p.L.U = p;\n  q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n  while (node.L) node = node.L;\n  return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n  var edge = [null, null],\n      index = edges.push(edge) - 1;\n  edge.left = left;\n  edge.right = right;\n  if (v0) setEdgeEnd(edge, left, right, v0);\n  if (v1) setEdgeEnd(edge, right, left, v1);\n  cells[left.index].halfedges.push(index);\n  cells[right.index].halfedges.push(index);\n  return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n  var edge = [v0, v1];\n  edge.left = left;\n  return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n  if (!edge[0] && !edge[1]) {\n    edge[0] = vertex;\n    edge.left = left;\n    edge.right = right;\n  } else if (edge.left === right) {\n    edge[1] = vertex;\n  } else {\n    edge[0] = vertex;\n  }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n  var a = edge[0],\n      b = edge[1],\n      ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n  if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n  if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n  return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n  var v1 = edge[1];\n  if (v1) return true;\n\n  var v0 = edge[0],\n      left = edge.left,\n      right = edge.right,\n      lx = left[0],\n      ly = left[1],\n      rx = right[0],\n      ry = right[1],\n      fx = (lx + rx) / 2,\n      fy = (ly + ry) / 2,\n      fm,\n      fb;\n\n  if (ry === ly) {\n    if (fx < x0 || fx >= x1) return;\n    if (lx > rx) {\n      if (!v0) v0 = [fx, y0];\n      else if (v0[1] >= y1) return;\n      v1 = [fx, y1];\n    } else {\n      if (!v0) v0 = [fx, y1];\n      else if (v0[1] < y0) return;\n      v1 = [fx, y0];\n    }\n  } else {\n    fm = (lx - rx) / (ry - ly);\n    fb = fy - fm * fx;\n    if (fm < -1 || fm > 1) {\n      if (lx > rx) {\n        if (!v0) v0 = [(y0 - fb) / fm, y0];\n        else if (v0[1] >= y1) return;\n        v1 = [(y1 - fb) / fm, y1];\n      } else {\n        if (!v0) v0 = [(y1 - fb) / fm, y1];\n        else if (v0[1] < y0) return;\n        v1 = [(y0 - fb) / fm, y0];\n      }\n    } else {\n      if (ly < ry) {\n        if (!v0) v0 = [x0, fm * x0 + fb];\n        else if (v0[0] >= x1) return;\n        v1 = [x1, fm * x1 + fb];\n      } else {\n        if (!v0) v0 = [x1, fm * x1 + fb];\n        else if (v0[0] < x0) return;\n        v1 = [x0, fm * x0 + fb];\n      }\n    }\n  }\n\n  edge[0] = v0;\n  edge[1] = v1;\n  return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n  var i = edges.length,\n      edge;\n\n  while (i--) {\n    if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n        || !clipEdge(edge, x0, y0, x1, y1)\n        || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n            || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n      delete edges[i];\n    }\n  }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n  return cells[site.index] = {\n    site: site,\n    halfedges: []\n  };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n  var site = cell.site,\n      va = edge.left,\n      vb = edge.right;\n  if (site === vb) vb = va, va = site;\n  if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n  if (site === va) va = edge[1], vb = edge[0];\n  else va = edge[0], vb = edge[1];\n  return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n  return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n  return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n  for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n    if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n      var index = new Array(m),\n          array = new Array(m);\n      for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n      index.sort(function(i, j) { return array[j] - array[i]; });\n      for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n      for (j = 0; j < m; ++j) halfedges[j] = array[j];\n    }\n  }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n  var nCells = cells.length,\n      iCell,\n      cell,\n      site,\n      iHalfedge,\n      halfedges,\n      nHalfedges,\n      start,\n      startX,\n      startY,\n      end,\n      endX,\n      endY,\n      cover = true;\n\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      site = cell.site;\n      halfedges = cell.halfedges;\n      iHalfedge = halfedges.length;\n\n      // Remove any dangling clipped edges.\n      while (iHalfedge--) {\n        if (!edges[halfedges[iHalfedge]]) {\n          halfedges.splice(iHalfedge, 1);\n        }\n      }\n\n      // Insert any border edges as necessary.\n      iHalfedge = 0, nHalfedges = halfedges.length;\n      while (iHalfedge < nHalfedges) {\n        end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n        start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n        if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n          halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n              Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n              : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n              : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n              : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n              : null)) - 1);\n          ++nHalfedges;\n        }\n      }\n\n      if (nHalfedges) cover = false;\n    }\n  }\n\n  // If there weren’t any edges, have the closest site cover the extent.\n  // It doesn’t matter which corner of the extent we measure!\n  if (cover) {\n    var dx, dy, d2, dc = Infinity;\n\n    for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n      if (cell = cells[iCell]) {\n        site = cell.site;\n        dx = site[0] - x0;\n        dy = site[1] - y0;\n        d2 = dx * dx + dy * dy;\n        if (d2 < dc) dc = d2, cover = cell;\n      }\n    }\n\n    if (cover) {\n      var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n      cover.halfedges.push(\n        edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n        edges.push(createBorderEdge(site, v01, v11)) - 1,\n        edges.push(createBorderEdge(site, v11, v10)) - 1,\n        edges.push(createBorderEdge(site, v10, v00)) - 1\n      );\n    }\n  }\n\n  // Lastly delete any cells with no edges; these were entirely clipped.\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      if (!cell.halfedges.length) {\n        delete cells[iCell];\n      }\n    }\n  }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n  RedBlackNode(this);\n  this.x =\n  this.y =\n  this.arc =\n  this.site =\n  this.cy = null;\n}\n\nexport function attachCircle(arc) {\n  var lArc = arc.P,\n      rArc = arc.N;\n\n  if (!lArc || !rArc) return;\n\n  var lSite = lArc.site,\n      cSite = arc.site,\n      rSite = rArc.site;\n\n  if (lSite === rSite) return;\n\n  var bx = cSite[0],\n      by = cSite[1],\n      ax = lSite[0] - bx,\n      ay = lSite[1] - by,\n      cx = rSite[0] - bx,\n      cy = rSite[1] - by;\n\n  var d = 2 * (ax * cy - ay * cx);\n  if (d >= -epsilon2) return;\n\n  var ha = ax * ax + ay * ay,\n      hc = cx * cx + cy * cy,\n      x = (cy * ha - ay * hc) / d,\n      y = (ax * hc - cx * ha) / d;\n\n  var circle = circlePool.pop() || new Circle;\n  circle.arc = arc;\n  circle.site = cSite;\n  circle.x = x + bx;\n  circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n  arc.circle = circle;\n\n  var before = null,\n      node = circles._;\n\n  while (node) {\n    if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n      if (node.L) node = node.L;\n      else { before = node.P; break; }\n    } else {\n      if (node.R) node = node.R;\n      else { before = node; break; }\n    }\n  }\n\n  circles.insert(before, circle);\n  if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n  var circle = arc.circle;\n  if (circle) {\n    if (!circle.P) firstCircle = circle.N;\n    circles.remove(circle);\n    circlePool.push(circle);\n    RedBlackNode(circle);\n    arc.circle = null;\n  }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n  RedBlackNode(this);\n  this.edge =\n  this.site =\n  this.circle = null;\n}\n\nfunction createBeach(site) {\n  var beach = beachPool.pop() || new Beach;\n  beach.site = site;\n  return beach;\n}\n\nfunction detachBeach(beach) {\n  detachCircle(beach);\n  beaches.remove(beach);\n  beachPool.push(beach);\n  RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n  var circle = beach.circle,\n      x = circle.x,\n      y = circle.cy,\n      vertex = [x, y],\n      previous = beach.P,\n      next = beach.N,\n      disappearing = [beach];\n\n  detachBeach(beach);\n\n  var lArc = previous;\n  while (lArc.circle\n      && Math.abs(x - lArc.circle.x) < epsilon\n      && Math.abs(y - lArc.circle.cy) < epsilon) {\n    previous = lArc.P;\n    disappearing.unshift(lArc);\n    detachBeach(lArc);\n    lArc = previous;\n  }\n\n  disappearing.unshift(lArc);\n  detachCircle(lArc);\n\n  var rArc = next;\n  while (rArc.circle\n      && Math.abs(x - rArc.circle.x) < epsilon\n      && Math.abs(y - rArc.circle.cy) < epsilon) {\n    next = rArc.N;\n    disappearing.push(rArc);\n    detachBeach(rArc);\n    rArc = next;\n  }\n\n  disappearing.push(rArc);\n  detachCircle(rArc);\n\n  var nArcs = disappearing.length,\n      iArc;\n  for (iArc = 1; iArc < nArcs; ++iArc) {\n    rArc = disappearing[iArc];\n    lArc = disappearing[iArc - 1];\n    setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n  }\n\n  lArc = disappearing[0];\n  rArc = disappearing[nArcs - 1];\n  rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n  var x = site[0],\n      directrix = site[1],\n      lArc,\n      rArc,\n      dxl,\n      dxr,\n      node = beaches._;\n\n  while (node) {\n    dxl = leftBreakPoint(node, directrix) - x;\n    if (dxl > epsilon) node = node.L; else {\n      dxr = x - rightBreakPoint(node, directrix);\n      if (dxr > epsilon) {\n        if (!node.R) {\n          lArc = node;\n          break;\n        }\n        node = node.R;\n      } else {\n        if (dxl > -epsilon) {\n          lArc = node.P;\n          rArc = node;\n        } else if (dxr > -epsilon) {\n          lArc = node;\n          rArc = node.N;\n        } else {\n          lArc = rArc = node;\n        }\n        break;\n      }\n    }\n  }\n\n  createCell(site);\n  var newArc = createBeach(site);\n  beaches.insert(lArc, newArc);\n\n  if (!lArc && !rArc) return;\n\n  if (lArc === rArc) {\n    detachCircle(lArc);\n    rArc = createBeach(lArc.site);\n    beaches.insert(newArc, rArc);\n    newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n    attachCircle(lArc);\n    attachCircle(rArc);\n    return;\n  }\n\n  if (!rArc) { // && lArc\n    newArc.edge = createEdge(lArc.site, newArc.site);\n    return;\n  }\n\n  // else lArc !== rArc\n  detachCircle(lArc);\n  detachCircle(rArc);\n\n  var lSite = lArc.site,\n      ax = lSite[0],\n      ay = lSite[1],\n      bx = site[0] - ax,\n      by = site[1] - ay,\n      rSite = rArc.site,\n      cx = rSite[0] - ax,\n      cy = rSite[1] - ay,\n      d = 2 * (bx * cy - by * cx),\n      hb = bx * bx + by * by,\n      hc = cx * cx + cy * cy,\n      vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n  setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n  newArc.edge = createEdge(lSite, site, null, vertex);\n  rArc.edge = createEdge(site, rSite, null, vertex);\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n  var site = arc.site,\n      rfocx = site[0],\n      rfocy = site[1],\n      pby2 = rfocy - directrix;\n\n  if (!pby2) return rfocx;\n\n  var lArc = arc.P;\n  if (!lArc) return -Infinity;\n\n  site = lArc.site;\n  var lfocx = site[0],\n      lfocy = site[1],\n      plby2 = lfocy - directrix;\n\n  if (!plby2) return lfocx;\n\n  var hl = lfocx - rfocx,\n      aby2 = 1 / pby2 - 1 / plby2,\n      b = hl / plby2;\n\n  if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n  return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n  var rArc = arc.N;\n  if (rArc) return leftBreakPoint(rArc, directrix);\n  var site = arc.site;\n  return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n  return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n  return b[1] - a[1]\n      || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n  var site = sites.sort(lexicographic).pop(),\n      x,\n      y,\n      circle;\n\n  edges = [];\n  cells = new Array(sites.length);\n  beaches = new RedBlackTree;\n  circles = new RedBlackTree;\n\n  while (true) {\n    circle = firstCircle;\n    if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n      if (site[0] !== x || site[1] !== y) {\n        addBeach(site);\n        x = site[0], y = site[1];\n      }\n      site = sites.pop();\n    } else if (circle) {\n      removeBeach(circle.arc);\n    } else {\n      break;\n    }\n  }\n\n  sortCellHalfedges();\n\n  if (extent) {\n    var x0 = +extent[0][0],\n        y0 = +extent[0][1],\n        x1 = +extent[1][0],\n        y1 = +extent[1][1];\n    clipEdges(x0, y0, x1, y1);\n    clipCells(x0, y0, x1, y1);\n  }\n\n  this.edges = edges;\n  this.cells = cells;\n\n  beaches =\n  circles =\n  edges =\n  cells = null;\n}\n\nDiagram.prototype = {\n  constructor: Diagram,\n\n  polygons: function() {\n    var edges = this.edges;\n\n    return this.cells.map(function(cell) {\n      var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n      polygon.data = cell.site.data;\n      return polygon;\n    });\n  },\n\n  triangles: function() {\n    var triangles = [],\n        edges = this.edges;\n\n    this.cells.forEach(function(cell, i) {\n      if (!(m = (halfedges = cell.halfedges).length)) return;\n      var site = cell.site,\n          halfedges,\n          j = -1,\n          m,\n          s0,\n          e1 = edges[halfedges[m - 1]],\n          s1 = e1.left === site ? e1.right : e1.left;\n\n      while (++j < m) {\n        s0 = s1;\n        e1 = edges[halfedges[j]];\n        s1 = e1.left === site ? e1.right : e1.left;\n        if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n          triangles.push([site.data, s0.data, s1.data]);\n        }\n      }\n    });\n\n    return triangles;\n  },\n\n  links: function() {\n    return this.edges.filter(function(edge) {\n      return edge.right;\n    }).map(function(edge) {\n      return {\n        source: edge.left.data,\n        target: edge.right.data\n      };\n    });\n  },\n\n  find: function(x, y, radius) {\n    var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n    // Use the previously-found cell, or start with an arbitrary one.\n    while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n    var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n    // Traverse the half-edges to find a closer cell, if any.\n    do {\n      cell = that.cells[i0 = i1], i1 = null;\n      cell.halfedges.forEach(function(e) {\n        var edge = that.edges[e], v = edge.left;\n        if ((v === cell.site || !v) && !(v = edge.right)) return;\n        var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n        if (v2 < d2) d2 = v2, i1 = v.index;\n      });\n    } while (i1 !== null);\n\n    that._found = i0;\n\n    return radius == null || d2 <= radius * radius ? cell.site : null;\n  }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n  var x = pointX,\n      y = pointY,\n      extent = null;\n\n  function voronoi(data) {\n    return new Diagram(data.map(function(d, i) {\n      var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n      s.index = i;\n      s.data = d;\n      return s;\n    }), extent);\n  }\n\n  voronoi.polygons = function(data) {\n    return voronoi(data).polygons();\n  };\n\n  voronoi.links = function(data) {\n    return voronoi(data).links();\n  };\n\n  voronoi.triangles = function(data) {\n    return voronoi(data).triangles();\n  };\n\n  voronoi.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n  };\n\n  voronoi.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n  };\n\n  voronoi.extent = function(_) {\n    return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n  };\n\n  voronoi.size = function(_) {\n    return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n  };\n\n  return voronoi;\n}\n","module.exports = function pointInPolygonFlat (point, vs, start, end) {\n    var x = point[0], y = point[1];\n    var inside = false;\n    if (start === undefined) start = 0;\n    if (end === undefined) end = vs.length;\n    var len = (end-start)/2;\n    for (var i = 0, j = len - 1; i < len; j = i++) {\n        var xi = vs[start+i*2+0], yi = vs[start+i*2+1];\n        var xj = vs[start+j*2+0], yj = vs[start+j*2+1];\n        var intersect = ((yi > y) !== (yj > y))\n            && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n        if (intersect) inside = !inside;\n    }\n    return inside;\n};\n","'use strict';\n\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\n\n/**\n * Flattens any {@link GeoJSON} to a {@link FeatureCollection} inspired by [geojson-flatten](https://github.com/tmcw/geojson-flatten).\n *\n * @name flatten\n * @param {GeoJSON} geojson any valid GeoJSON Object\n * @returns {FeatureCollection<any>} all Multi-Geometries are flattened into single Features\n * @example\n * var multiGeometry = turf.multiPolygon([\n *   [[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]]],\n *   [[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],\n *   [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]]\n * ]);\n *\n * var flatten = turf.flatten(multiGeometry);\n *\n * //addToMap\n * var addToMap = [flatten]\n */\nfunction flatten(geojson) {\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  var results = [];\n  meta.flattenEach(geojson, function (feature) {\n    results.push(feature);\n  });\n  return helpers.featureCollection(results);\n}\n\nmodule.exports = flatten;\nmodule.exports.default = flatten;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar geojson_rbush_1 = __importDefault(require(\"geojson-rbush\"));\nvar line_segment_1 = __importDefault(require(\"@turf/line-segment\"));\nvar nearest_point_on_line_1 = __importDefault(require(\"@turf/nearest-point-on-line\"));\nvar boolean_point_on_line_1 = __importDefault(require(\"@turf/boolean-point-on-line\"));\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\nvar helpers_1 = require(\"@turf/helpers\");\nvar deep_equal_1 = __importDefault(require(\"deep-equal\"));\n/**\n * Takes any LineString or Polygon and returns the overlapping lines between both features.\n *\n * @name lineOverlap\n * @param {Geometry|Feature<LineString|MultiLineString|Polygon|MultiPolygon>} line1 any LineString or Polygon\n * @param {Geometry|Feature<LineString|MultiLineString|Polygon|MultiPolygon>} line2 any LineString or Polygon\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.tolerance=0] Tolerance distance to match overlapping line segments (in kilometers)\n * @returns {FeatureCollection<LineString>} lines(s) that are overlapping between both features\n * @example\n * var line1 = turf.lineString([[115, -35], [125, -30], [135, -30], [145, -35]]);\n * var line2 = turf.lineString([[115, -25], [125, -30], [135, -30], [145, -25]]);\n *\n * var overlapping = turf.lineOverlap(line1, line2);\n *\n * //addToMap\n * var addToMap = [line1, line2, overlapping]\n */\nfunction lineOverlap(line1, line2, options) {\n    if (options === void 0) { options = {}; }\n    // Optional parameters\n    options = options || {};\n    if (!helpers_1.isObject(options))\n        throw new Error(\"options is invalid\");\n    var tolerance = options.tolerance || 0;\n    // Containers\n    var features = [];\n    // Create Spatial Index\n    var tree = geojson_rbush_1.default();\n    // To-Do -- HACK way to support typescript\n    var line = line_segment_1.default(line1);\n    tree.load(line);\n    var overlapSegment;\n    // Line Intersection\n    // Iterate over line segments\n    meta_1.segmentEach(line2, function (segment) {\n        var doesOverlaps = false;\n        if (!segment) {\n            return;\n        }\n        // Iterate over each segments which falls within the same bounds\n        meta_1.featureEach(tree.search(segment), function (match) {\n            if (doesOverlaps === false) {\n                var coordsSegment = invariant_1.getCoords(segment).sort();\n                var coordsMatch = invariant_1.getCoords(match).sort();\n                // Segment overlaps feature\n                if (deep_equal_1.default(coordsSegment, coordsMatch)) {\n                    doesOverlaps = true;\n                    // Overlaps already exists - only append last coordinate of segment\n                    if (overlapSegment)\n                        overlapSegment = concatSegment(overlapSegment, segment);\n                    else\n                        overlapSegment = segment;\n                    // Match segments which don't share nodes (Issue #901)\n                }\n                else if (tolerance === 0\n                    ? boolean_point_on_line_1.default(coordsSegment[0], match) &&\n                        boolean_point_on_line_1.default(coordsSegment[1], match)\n                    : nearest_point_on_line_1.default(match, coordsSegment[0]).properties.dist <=\n                        tolerance &&\n                        nearest_point_on_line_1.default(match, coordsSegment[1]).properties.dist <=\n                            tolerance) {\n                    doesOverlaps = true;\n                    if (overlapSegment)\n                        overlapSegment = concatSegment(overlapSegment, segment);\n                    else\n                        overlapSegment = segment;\n                }\n                else if (tolerance === 0\n                    ? boolean_point_on_line_1.default(coordsMatch[0], segment) &&\n                        boolean_point_on_line_1.default(coordsMatch[1], segment)\n                    : nearest_point_on_line_1.default(segment, coordsMatch[0]).properties.dist <=\n                        tolerance &&\n                        nearest_point_on_line_1.default(segment, coordsMatch[1]).properties.dist <=\n                            tolerance) {\n                    // Do not define (doesOverlap = true) since more matches can occur within the same segment\n                    // doesOverlaps = true;\n                    if (overlapSegment)\n                        overlapSegment = concatSegment(overlapSegment, match);\n                    else\n                        overlapSegment = match;\n                }\n            }\n        });\n        // Segment doesn't overlap - add overlaps to results & reset\n        if (doesOverlaps === false && overlapSegment) {\n            features.push(overlapSegment);\n            overlapSegment = undefined;\n        }\n    });\n    // Add last segment if exists\n    if (overlapSegment)\n        features.push(overlapSegment);\n    return helpers_1.featureCollection(features);\n}\n/**\n * Concat Segment\n *\n * @private\n * @param {Feature<LineString>} line LineString\n * @param {Feature<LineString>} segment 2-vertex LineString\n * @returns {Feature<LineString>} concat linestring\n */\nfunction concatSegment(line, segment) {\n    var coords = invariant_1.getCoords(segment);\n    var lineCoords = invariant_1.getCoords(line);\n    var start = lineCoords[0];\n    var end = lineCoords[lineCoords.length - 1];\n    var geom = line.geometry.coordinates;\n    if (deep_equal_1.default(coords[0], start))\n        geom.unshift(coords[1]);\n    else if (deep_equal_1.default(coords[0], end))\n        geom.push(coords[1]);\n    else if (deep_equal_1.default(coords[1], start))\n        geom.unshift(coords[0]);\n    else if (deep_equal_1.default(coords[1], end))\n        geom.push(coords[0]);\n    return line;\n}\nexports.default = lineOverlap;\n","\nexport default class TinyQueue {\n    constructor(data = [], compare = (a, b) => (a < b ? -1 : a > b ? 1 : 0)) {\n        this.data = data;\n        this.length = this.data.length;\n        this.compare = compare;\n\n        if (this.length > 0) {\n            for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n        }\n    }\n\n    push(item) {\n        this.data.push(item);\n        this._up(this.length++);\n    }\n\n    pop() {\n        if (this.length === 0) return undefined;\n\n        const top = this.data[0];\n        const bottom = this.data.pop();\n\n        if (--this.length > 0) {\n            this.data[0] = bottom;\n            this._down(0);\n        }\n\n        return top;\n    }\n\n    peek() {\n        return this.data[0];\n    }\n\n    _up(pos) {\n        const {data, compare} = this;\n        const item = data[pos];\n\n        while (pos > 0) {\n            const parent = (pos - 1) >> 1;\n            const current = data[parent];\n            if (compare(item, current) >= 0) break;\n            data[pos] = current;\n            pos = parent;\n        }\n\n        data[pos] = item;\n    }\n\n    _down(pos) {\n        const {data, compare} = this;\n        const halfLength = this.length >> 1;\n        const item = data[pos];\n\n        while (pos < halfLength) {\n            let bestChild = (pos << 1) + 1; // initially it is the left child\n            const right = bestChild + 1;\n\n            if (right < this.length && compare(data[right], data[bestChild]) < 0) {\n                bestChild = right;\n            }\n            if (compare(data[bestChild], item) >= 0) break;\n\n            data[pos] = data[bestChild];\n            pos = bestChild;\n        }\n\n        data[pos] = item;\n    }\n}\n","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n    let Q, Qnew, hh, bvirt;\n    let enow = e[0];\n    let fnow = f[0];\n    let eindex = 0;\n    let findex = 0;\n    if ((fnow > enow) === (fnow > -enow)) {\n        Q = enow;\n        enow = e[++eindex];\n    } else {\n        Q = fnow;\n        fnow = f[++findex];\n    }\n    let hindex = 0;\n    if (eindex < elen && findex < flen) {\n        if ((fnow > enow) === (fnow > -enow)) {\n            Qnew = enow + Q;\n            hh = Q - (Qnew - enow);\n            enow = e[++eindex];\n        } else {\n            Qnew = fnow + Q;\n            hh = Q - (Qnew - fnow);\n            fnow = f[++findex];\n        }\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n        while (eindex < elen && findex < flen) {\n            if ((fnow > enow) === (fnow > -enow)) {\n                Qnew = Q + enow;\n                bvirt = Qnew - Q;\n                hh = Q - (Qnew - bvirt) + (enow - bvirt);\n                enow = e[++eindex];\n            } else {\n                Qnew = Q + fnow;\n                bvirt = Qnew - Q;\n                hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n                fnow = f[++findex];\n            }\n            Q = Qnew;\n            if (hh !== 0) {\n                h[hindex++] = hh;\n            }\n        }\n    }\n    while (eindex < elen) {\n        Qnew = Q + enow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (enow - bvirt);\n        enow = e[++eindex];\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    while (findex < flen) {\n        Qnew = Q + fnow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n        fnow = f[++findex];\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n    }\n    return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n    return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n    let Q, sum, hh, product1, product0;\n    let bvirt, c, ahi, alo, bhi, blo;\n\n    c = splitter * b;\n    bhi = c - (c - b);\n    blo = b - bhi;\n    let enow = e[0];\n    Q = enow * b;\n    c = splitter * enow;\n    ahi = c - (c - enow);\n    alo = enow - ahi;\n    hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n    let hindex = 0;\n    if (hh !== 0) {\n        h[hindex++] = hh;\n    }\n    for (let i = 1; i < elen; i++) {\n        enow = e[i];\n        product1 = enow * b;\n        c = splitter * enow;\n        ahi = c - (c - enow);\n        alo = enow - ahi;\n        product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n        sum = Q + product0;\n        bvirt = sum - Q;\n        hh = Q - (sum - bvirt) + (product0 - bvirt);\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n        Q = product1 + sum;\n        hh = sum - (Q - product1);\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n    }\n    return hindex;\n}\n\nexport function negate(elen, e) {\n    for (let i = 0; i < elen; i++) e[i] = -e[i];\n    return elen;\n}\n\nexport function estimate(elen, e) {\n    let Q = e[0];\n    for (let i = 1; i < elen; i++) Q += e[i];\n    return Q;\n}\n\nexport function vec(n) {\n    return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n    let acxtail, acytail, bcxtail, bcytail;\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    const acx = ax - cx;\n    const bcx = bx - cx;\n    const acy = ay - cy;\n    const bcy = by - cy;\n\n    s1 = acx * bcy;\n    c = splitter * acx;\n    ahi = c - (c - acx);\n    alo = acx - ahi;\n    c = splitter * bcy;\n    bhi = c - (c - bcy);\n    blo = bcy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acy * bcx;\n    c = splitter * acy;\n    ahi = c - (c - acy);\n    alo = acy - ahi;\n    c = splitter * bcx;\n    bhi = c - (c - bcx);\n    blo = bcx - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    B[3] = u3;\n\n    let det = estimate(4, B);\n    let errbound = ccwerrboundB * detsum;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - acx;\n    acxtail = ax - (acx + bvirt) + (bvirt - cx);\n    bvirt = bx - bcx;\n    bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n    bvirt = ay - acy;\n    acytail = ay - (acy + bvirt) + (bvirt - cy);\n    bvirt = by - bcy;\n    bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n    if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n        return det;\n    }\n\n    errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n    det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n    if (det >= errbound || -det >= errbound) return det;\n\n    s1 = acxtail * bcy;\n    c = splitter * acxtail;\n    ahi = c - (c - acxtail);\n    alo = acxtail - ahi;\n    c = splitter * bcy;\n    bhi = c - (c - bcy);\n    blo = bcy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acytail * bcx;\n    c = splitter * acytail;\n    ahi = c - (c - acytail);\n    alo = acytail - ahi;\n    c = splitter * bcx;\n    bhi = c - (c - bcx);\n    blo = bcx - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const C1len = sum(4, B, 4, u, C1);\n\n    s1 = acx * bcytail;\n    c = splitter * acx;\n    ahi = c - (c - acx);\n    alo = acx - ahi;\n    c = splitter * bcytail;\n    bhi = c - (c - bcytail);\n    blo = bcytail - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acy * bcxtail;\n    c = splitter * acy;\n    ahi = c - (c - acy);\n    alo = acy - ahi;\n    c = splitter * bcxtail;\n    bhi = c - (c - bcxtail);\n    blo = bcxtail - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const C2len = sum(C1len, C1, 4, u, C2);\n\n    s1 = acxtail * bcytail;\n    c = splitter * acxtail;\n    ahi = c - (c - acxtail);\n    alo = acxtail - ahi;\n    c = splitter * bcytail;\n    bhi = c - (c - bcytail);\n    blo = bcytail - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acytail * bcxtail;\n    c = splitter * acytail;\n    ahi = c - (c - acytail);\n    alo = acytail - ahi;\n    c = splitter * bcxtail;\n    bhi = c - (c - bcxtail);\n    blo = bcxtail - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const Dlen = sum(C2len, C2, 4, u, D);\n\n    return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n    const detleft = (ay - cy) * (bx - cx);\n    const detright = (ax - cx) * (by - cy);\n    const det = detleft - detright;\n\n    const detsum = Math.abs(detleft + detright);\n    if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n\n    return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n    return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, scale} from './util.js';\n\nconst o3derrboundA = (7 + 56 * epsilon) * epsilon;\nconst o3derrboundB = (3 + 28 * epsilon) * epsilon;\nconst o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst at_b = vec(4);\nconst at_c = vec(4);\nconst bt_c = vec(4);\nconst bt_a = vec(4);\nconst ct_a = vec(4);\nconst ct_b = vec(4);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abt = vec(8);\nconst u = vec(4);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _16 = vec(8);\nconst _12 = vec(12);\n\nlet fin = vec(192);\nlet fin2 = vec(192);\n\nfunction finadd(finlen, alen, a) {\n    finlen = sum(finlen, fin, alen, a, fin2);\n    const tmp = fin; fin = fin2; fin2 = tmp;\n    return finlen;\n}\n\nfunction tailinit(xtail, ytail, ax, ay, bx, by, a, b) {\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate;\n    if (xtail === 0) {\n        if (ytail === 0) {\n            a[0] = 0;\n            b[0] = 0;\n            return 1;\n        } else {\n            negate = -ytail;\n            s1 = negate * ax;\n            c = splitter * negate;\n            ahi = c - (c - negate);\n            alo = negate - ahi;\n            c = splitter * ax;\n            bhi = c - (c - ax);\n            blo = ax - bhi;\n            a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            a[1] = s1;\n            s1 = ytail * bx;\n            c = splitter * ytail;\n            ahi = c - (c - ytail);\n            alo = ytail - ahi;\n            c = splitter * bx;\n            bhi = c - (c - bx);\n            blo = bx - bhi;\n            b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            b[1] = s1;\n            return 2;\n        }\n    } else {\n        if (ytail === 0) {\n            s1 = xtail * ay;\n            c = splitter * xtail;\n            ahi = c - (c - xtail);\n            alo = xtail - ahi;\n            c = splitter * ay;\n            bhi = c - (c - ay);\n            blo = ay - bhi;\n            a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            a[1] = s1;\n            negate = -xtail;\n            s1 = negate * by;\n            c = splitter * negate;\n            ahi = c - (c - negate);\n            alo = negate - ahi;\n            c = splitter * by;\n            bhi = c - (c - by);\n            blo = by - bhi;\n            b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            b[1] = s1;\n            return 2;\n        } else {\n            s1 = xtail * ay;\n            c = splitter * xtail;\n            ahi = c - (c - xtail);\n            alo = xtail - ahi;\n            c = splitter * ay;\n            bhi = c - (c - ay);\n            blo = ay - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = ytail * ax;\n            c = splitter * ytail;\n            ahi = c - (c - ytail);\n            alo = ytail - ahi;\n            c = splitter * ax;\n            bhi = c - (c - ax);\n            blo = ax - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            a[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            a[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            a[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            a[3] = u3;\n            s1 = ytail * bx;\n            c = splitter * ytail;\n            ahi = c - (c - ytail);\n            alo = ytail - ahi;\n            c = splitter * bx;\n            bhi = c - (c - bx);\n            blo = bx - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = xtail * by;\n            c = splitter * xtail;\n            ahi = c - (c - xtail);\n            alo = xtail - ahi;\n            c = splitter * by;\n            bhi = c - (c - by);\n            blo = by - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            b[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            b[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            b[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            b[3] = u3;\n            return 4;\n        }\n    }\n}\n\nfunction tailadd(finlen, a, b, k, z) {\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;\n    s1 = a * b;\n    c = splitter * a;\n    ahi = c - (c - a);\n    alo = a - ahi;\n    c = splitter * b;\n    bhi = c - (c - b);\n    blo = b - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    c = splitter * k;\n    bhi = c - (c - k);\n    blo = k - bhi;\n    _i = s0 * k;\n    c = splitter * s0;\n    ahi = c - (c - s0);\n    alo = s0 - ahi;\n    u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n    _j = s1 * k;\n    c = splitter * s1;\n    ahi = c - (c - s1);\n    alo = s1 - ahi;\n    _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n    _k = _i + _0;\n    bvirt = _k - _i;\n    u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n    u3 = _j + _k;\n    u[2] = _k - (u3 - _j);\n    u[3] = u3;\n    finlen = finadd(finlen, 4, u);\n    if (z !== 0) {\n        c = splitter * z;\n        bhi = c - (c - z);\n        blo = z - bhi;\n        _i = s0 * z;\n        c = splitter * s0;\n        ahi = c - (c - s0);\n        alo = s0 - ahi;\n        u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n        _j = s1 * z;\n        c = splitter * s1;\n        ahi = c - (c - s1);\n        alo = s1 - ahi;\n        _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n        _k = _i + _0;\n        bvirt = _k - _i;\n        u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n        u3 = _j + _k;\n        u[2] = _k - (u3 - _j);\n        u[3] = u3;\n        finlen = finadd(finlen, 4, u);\n    }\n    return finlen;\n}\n\nfunction orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {\n    let finlen;\n    let adxtail, bdxtail, cdxtail;\n    let adytail, bdytail, cdytail;\n    let adztail, bdztail, cdztail;\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3;\n\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n    const adz = az - dz;\n    const bdz = bz - dz;\n    const cdz = cz - dz;\n\n    s1 = bdx * cdy;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cdx * bdy;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bc[3] = u3;\n    s1 = cdx * ady;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = adx * cdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ca[3] = u3;\n    s1 = adx * bdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bdx * ady;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ab[3] = u3;\n\n    finlen = sum(\n        sum(\n            scale(4, bc, adz, _8), _8,\n            scale(4, ca, bdz, _8b), _8b, _16), _16,\n        scale(4, ab, cdz, _8), _8, fin);\n\n    let det = estimate(finlen, fin);\n    let errbound = o3derrboundB * permanent;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - adx;\n    adxtail = ax - (adx + bvirt) + (bvirt - dx);\n    bvirt = bx - bdx;\n    bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n    bvirt = cx - cdx;\n    cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n    bvirt = ay - ady;\n    adytail = ay - (ady + bvirt) + (bvirt - dy);\n    bvirt = by - bdy;\n    bdytail = by - (bdy + bvirt) + (bvirt - dy);\n    bvirt = cy - cdy;\n    cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n    bvirt = az - adz;\n    adztail = az - (adz + bvirt) + (bvirt - dz);\n    bvirt = bz - bdz;\n    bdztail = bz - (bdz + bvirt) + (bvirt - dz);\n    bvirt = cz - cdz;\n    cdztail = cz - (cdz + bvirt) + (bvirt - dz);\n\n    if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 &&\n        adytail === 0 && bdytail === 0 && cdytail === 0 &&\n        adztail === 0 && bdztail === 0 && cdztail === 0) {\n        return det;\n    }\n\n    errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det);\n    det +=\n        adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) +\n        bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) +\n        cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);\n    const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);\n    const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);\n\n    const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct);\n    finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16);\n\n    const catlen = sum(ct_len, ct_a, at_len, at_c, cat);\n    finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16);\n\n    const abtlen = sum(at_len, at_b, bt_len, bt_a, abt);\n    finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16);\n\n    if (adztail !== 0) {\n        finlen = finadd(finlen, scale(4, bc, adztail, _12), _12);\n        finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16);\n    }\n    if (bdztail !== 0) {\n        finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12);\n        finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16);\n    }\n    if (cdztail !== 0) {\n        finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12);\n        finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16);\n    }\n\n    if (adxtail !== 0) {\n        if (bdytail !== 0) {\n            finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);\n        }\n        if (cdytail !== 0) {\n            finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);\n        }\n    }\n    if (bdxtail !== 0) {\n        if (cdytail !== 0) {\n            finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);\n        }\n        if (adytail !== 0) {\n            finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);\n        }\n    }\n    if (cdxtail !== 0) {\n        if (adytail !== 0) {\n            finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);\n        }\n        if (bdytail !== 0) {\n            finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);\n        }\n    }\n\n    return fin[finlen - 1];\n}\n\nexport function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n    const adz = az - dz;\n    const bdz = bz - dz;\n    const cdz = cz - dz;\n\n    const bdxcdy = bdx * cdy;\n    const cdxbdy = cdx * bdy;\n\n    const cdxady = cdx * ady;\n    const adxcdy = adx * cdy;\n\n    const adxbdy = adx * bdy;\n    const bdxady = bdx * ady;\n\n    const det =\n        adz * (bdxcdy - cdxbdy) +\n        bdz * (cdxady - adxcdy) +\n        cdz * (adxbdy - bdxady);\n\n    const permanent =\n        (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) +\n        (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) +\n        (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);\n\n    const errbound = o3derrboundA * permanent;\n    if (det > errbound || -det > errbound) {\n        return det;\n    }\n\n    return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);\n}\n\nexport function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n    const adz = az - dz;\n    const bdz = bz - dz;\n    const cdz = cz - dz;\n\n    return adx * (bdy * cdz - bdz * cdy) +\n        bdx * (cdy * adz - cdz * ady) +\n        cdx * (ady * bdz - adz * bdy);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale} from './util.js';\n\nconst iccerrboundA = (10 + 96 * epsilon) * epsilon;\nconst iccerrboundB = (4 + 48 * epsilon) * epsilon;\nconst iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst aa = vec(4);\nconst bb = vec(4);\nconst cc = vec(4);\nconst u = vec(4);\nconst v = vec(4);\nconst axtbc = vec(8);\nconst aytbc = vec(8);\nconst bxtca = vec(8);\nconst bytca = vec(8);\nconst cxtab = vec(8);\nconst cytab = vec(8);\nconst abt = vec(8);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abtt = vec(4);\nconst bctt = vec(4);\nconst catt = vec(4);\n\nconst _8 = vec(8);\nconst _16 = vec(16);\nconst _16b = vec(16);\nconst _16c = vec(16);\nconst _32 = vec(32);\nconst _32b = vec(32);\nconst _48 = vec(48);\nconst _64 = vec(64);\n\nlet fin = vec(1152);\nlet fin2 = vec(1152);\n\nfunction finadd(finlen, a, alen) {\n    finlen = sum(finlen, fin, a, alen, fin2);\n    const tmp = fin; fin = fin2; fin2 = tmp;\n    return finlen;\n}\n\nfunction incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {\n    let finlen;\n    let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;\n    let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;\n    let abtlen, bctlen, catlen;\n    let abttlen, bcttlen, cattlen;\n    let n1, n0;\n\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n\n    s1 = bdx * cdy;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cdx * bdy;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bc[3] = u3;\n    s1 = cdx * ady;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = adx * cdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ca[3] = u3;\n    s1 = adx * bdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bdx * ady;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ab[3] = u3;\n\n    finlen = sum(\n        sum(\n            sum(\n                scale(scale(4, bc, adx, _8), _8, adx, _16), _16,\n                scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,\n            sum(\n                scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16,\n                scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,\n        sum(\n            scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16,\n            scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);\n\n    let det = estimate(finlen, fin);\n    let errbound = iccerrboundB * permanent;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - adx;\n    adxtail = ax - (adx + bvirt) + (bvirt - dx);\n    bvirt = ay - ady;\n    adytail = ay - (ady + bvirt) + (bvirt - dy);\n    bvirt = bx - bdx;\n    bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n    bvirt = by - bdy;\n    bdytail = by - (bdy + bvirt) + (bvirt - dy);\n    bvirt = cx - cdx;\n    cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n    bvirt = cy - cdy;\n    cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n    if (adxtail === 0 && bdxtail === 0 && cdxtail === 0 && adytail === 0 && bdytail === 0 && cdytail === 0) {\n        return det;\n    }\n\n    errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det);\n    det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) +\n        2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx)) +\n        ((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) +\n        2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) +\n        ((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) +\n        2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));\n\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n        s1 = adx * adx;\n        c = splitter * adx;\n        ahi = c - (c - adx);\n        alo = adx - ahi;\n        s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n        t1 = ady * ady;\n        c = splitter * ady;\n        ahi = c - (c - ady);\n        alo = ady - ahi;\n        t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n        _i = s0 + t0;\n        bvirt = _i - s0;\n        aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n        _j = s1 + _i;\n        bvirt = _j - s1;\n        _0 = s1 - (_j - bvirt) + (_i - bvirt);\n        _i = _0 + t1;\n        bvirt = _i - _0;\n        aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n        u3 = _j + _i;\n        bvirt = u3 - _j;\n        aa[2] = _j - (u3 - bvirt) + (_i - bvirt);\n        aa[3] = u3;\n    }\n    if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n        s1 = bdx * bdx;\n        c = splitter * bdx;\n        ahi = c - (c - bdx);\n        alo = bdx - ahi;\n        s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n        t1 = bdy * bdy;\n        c = splitter * bdy;\n        ahi = c - (c - bdy);\n        alo = bdy - ahi;\n        t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n        _i = s0 + t0;\n        bvirt = _i - s0;\n        bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n        _j = s1 + _i;\n        bvirt = _j - s1;\n        _0 = s1 - (_j - bvirt) + (_i - bvirt);\n        _i = _0 + t1;\n        bvirt = _i - _0;\n        bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n        u3 = _j + _i;\n        bvirt = u3 - _j;\n        bb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n        bb[3] = u3;\n    }\n    if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n        s1 = cdx * cdx;\n        c = splitter * cdx;\n        ahi = c - (c - cdx);\n        alo = cdx - ahi;\n        s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n        t1 = cdy * cdy;\n        c = splitter * cdy;\n        ahi = c - (c - cdy);\n        alo = cdy - ahi;\n        t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n        _i = s0 + t0;\n        bvirt = _i - s0;\n        cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n        _j = s1 + _i;\n        bvirt = _j - s1;\n        _0 = s1 - (_j - bvirt) + (_i - bvirt);\n        _i = _0 + t1;\n        bvirt = _i - _0;\n        cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n        u3 = _j + _i;\n        bvirt = u3 - _j;\n        cc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n        cc[3] = u3;\n    }\n\n    if (adxtail !== 0) {\n        axtbclen = scale(4, bc, adxtail, axtbc);\n        finlen = finadd(finlen, sum_three(\n            scale(axtbclen, axtbc, 2 * adx, _16), _16,\n            scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b,\n            scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);\n    }\n    if (adytail !== 0) {\n        aytbclen = scale(4, bc, adytail, aytbc);\n        finlen = finadd(finlen, sum_three(\n            scale(aytbclen, aytbc, 2 * ady, _16), _16,\n            scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b,\n            scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);\n    }\n    if (bdxtail !== 0) {\n        bxtcalen = scale(4, ca, bdxtail, bxtca);\n        finlen = finadd(finlen, sum_three(\n            scale(bxtcalen, bxtca, 2 * bdx, _16), _16,\n            scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,\n            scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);\n    }\n    if (bdytail !== 0) {\n        bytcalen = scale(4, ca, bdytail, bytca);\n        finlen = finadd(finlen, sum_three(\n            scale(bytcalen, bytca, 2 * bdy, _16), _16,\n            scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b,\n            scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);\n    }\n    if (cdxtail !== 0) {\n        cxtablen = scale(4, ab, cdxtail, cxtab);\n        finlen = finadd(finlen, sum_three(\n            scale(cxtablen, cxtab, 2 * cdx, _16), _16,\n            scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b,\n            scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);\n    }\n    if (cdytail !== 0) {\n        cytablen = scale(4, ab, cdytail, cytab);\n        finlen = finadd(finlen, sum_three(\n            scale(cytablen, cytab, 2 * cdy, _16), _16,\n            scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b,\n            scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);\n    }\n\n    if (adxtail !== 0 || adytail !== 0) {\n        if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n            s1 = bdxtail * cdy;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * cdy;\n            bhi = c - (c - cdy);\n            blo = cdy - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = bdx * cdytail;\n            c = splitter * bdx;\n            ahi = c - (c - bdx);\n            alo = bdx - ahi;\n            c = splitter * cdytail;\n            bhi = c - (c - cdytail);\n            blo = cdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            u[3] = u3;\n            s1 = cdxtail * -bdy;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * -bdy;\n            bhi = c - (c - -bdy);\n            blo = -bdy - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = cdx * -bdytail;\n            c = splitter * cdx;\n            ahi = c - (c - cdx);\n            alo = cdx - ahi;\n            c = splitter * -bdytail;\n            bhi = c - (c - -bdytail);\n            blo = -bdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            v[3] = u3;\n            bctlen = sum(4, u, 4, v, bct);\n            s1 = bdxtail * cdytail;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * cdytail;\n            bhi = c - (c - cdytail);\n            blo = cdytail - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = cdxtail * bdytail;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * bdytail;\n            bhi = c - (c - bdytail);\n            blo = bdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            bctt[3] = u3;\n            bcttlen = 4;\n        } else {\n            bct[0] = 0;\n            bctlen = 1;\n            bctt[0] = 0;\n            bcttlen = 1;\n        }\n        if (adxtail !== 0) {\n            const len = scale(bctlen, bct, adxtail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(axtbclen, axtbc, adxtail, _16), _16,\n                scale(len, _16c, 2 * adx, _32), _32, _48), _48);\n\n            const len2 = scale(bcttlen, bctt, adxtail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * adx, _16), _16,\n                scale(len2, _8, adxtail, _16b), _16b,\n                scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);\n\n            if (bdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);\n            }\n            if (cdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);\n            }\n        }\n        if (adytail !== 0) {\n            const len = scale(bctlen, bct, adytail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(aytbclen, aytbc, adytail, _16), _16,\n                scale(len, _16c, 2 * ady, _32), _32, _48), _48);\n\n            const len2 = scale(bcttlen, bctt, adytail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * ady, _16), _16,\n                scale(len2, _8, adytail, _16b), _16b,\n                scale(len, _16c, adytail, _32), _32, _32b, _64), _64);\n        }\n    }\n    if (bdxtail !== 0 || bdytail !== 0) {\n        if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n            s1 = cdxtail * ady;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * ady;\n            bhi = c - (c - ady);\n            blo = ady - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = cdx * adytail;\n            c = splitter * cdx;\n            ahi = c - (c - cdx);\n            alo = cdx - ahi;\n            c = splitter * adytail;\n            bhi = c - (c - adytail);\n            blo = adytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            u[3] = u3;\n            n1 = -cdy;\n            n0 = -cdytail;\n            s1 = adxtail * n1;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * n1;\n            bhi = c - (c - n1);\n            blo = n1 - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = adx * n0;\n            c = splitter * adx;\n            ahi = c - (c - adx);\n            alo = adx - ahi;\n            c = splitter * n0;\n            bhi = c - (c - n0);\n            blo = n0 - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            v[3] = u3;\n            catlen = sum(4, u, 4, v, cat);\n            s1 = cdxtail * adytail;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * adytail;\n            bhi = c - (c - adytail);\n            blo = adytail - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = adxtail * cdytail;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * cdytail;\n            bhi = c - (c - cdytail);\n            blo = cdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            catt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            catt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            catt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            catt[3] = u3;\n            cattlen = 4;\n        } else {\n            cat[0] = 0;\n            catlen = 1;\n            catt[0] = 0;\n            cattlen = 1;\n        }\n        if (bdxtail !== 0) {\n            const len = scale(catlen, cat, bdxtail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(bxtcalen, bxtca, bdxtail, _16), _16,\n                scale(len, _16c, 2 * bdx, _32), _32, _48), _48);\n\n            const len2 = scale(cattlen, catt, bdxtail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * bdx, _16), _16,\n                scale(len2, _8, bdxtail, _16b), _16b,\n                scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);\n\n            if (cdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);\n            }\n            if (adytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);\n            }\n        }\n        if (bdytail !== 0) {\n            const len = scale(catlen, cat, bdytail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(bytcalen, bytca, bdytail, _16), _16,\n                scale(len, _16c, 2 * bdy, _32), _32, _48), _48);\n\n            const len2 = scale(cattlen, catt, bdytail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * bdy, _16), _16,\n                scale(len2, _8, bdytail, _16b), _16b,\n                scale(len, _16c, bdytail, _32), _32,  _32b, _64), _64);\n        }\n    }\n    if (cdxtail !== 0 || cdytail !== 0) {\n        if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n            s1 = adxtail * bdy;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * bdy;\n            bhi = c - (c - bdy);\n            blo = bdy - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = adx * bdytail;\n            c = splitter * adx;\n            ahi = c - (c - adx);\n            alo = adx - ahi;\n            c = splitter * bdytail;\n            bhi = c - (c - bdytail);\n            blo = bdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            u[3] = u3;\n            n1 = -ady;\n            n0 = -adytail;\n            s1 = bdxtail * n1;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * n1;\n            bhi = c - (c - n1);\n            blo = n1 - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = bdx * n0;\n            c = splitter * bdx;\n            ahi = c - (c - bdx);\n            alo = bdx - ahi;\n            c = splitter * n0;\n            bhi = c - (c - n0);\n            blo = n0 - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            v[3] = u3;\n            abtlen = sum(4, u, 4, v, abt);\n            s1 = adxtail * bdytail;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * bdytail;\n            bhi = c - (c - bdytail);\n            blo = bdytail - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = bdxtail * adytail;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * adytail;\n            bhi = c - (c - adytail);\n            blo = adytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            abtt[3] = u3;\n            abttlen = 4;\n        } else {\n            abt[0] = 0;\n            abtlen = 1;\n            abtt[0] = 0;\n            abttlen = 1;\n        }\n        if (cdxtail !== 0) {\n            const len = scale(abtlen, abt, cdxtail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(cxtablen, cxtab, cdxtail, _16), _16,\n                scale(len, _16c, 2 * cdx, _32), _32, _48), _48);\n\n            const len2 = scale(abttlen, abtt, cdxtail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * cdx, _16), _16,\n                scale(len2, _8, cdxtail, _16b), _16b,\n                scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);\n\n            if (adytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);\n            }\n            if (bdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);\n            }\n        }\n        if (cdytail !== 0) {\n            const len = scale(abtlen, abt, cdytail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(cytablen, cytab, cdytail, _16), _16,\n                scale(len, _16c, 2 * cdy, _32), _32, _48), _48);\n\n            const len2 = scale(abttlen, abtt, cdytail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * cdy, _16), _16,\n                scale(len2, _8, cdytail, _16b), _16b,\n                scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);\n        }\n    }\n\n    return fin[finlen - 1];\n}\n\nexport function incircle(ax, ay, bx, by, cx, cy, dx, dy) {\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n\n    const bdxcdy = bdx * cdy;\n    const cdxbdy = cdx * bdy;\n    const alift = adx * adx + ady * ady;\n\n    const cdxady = cdx * ady;\n    const adxcdy = adx * cdy;\n    const blift = bdx * bdx + bdy * bdy;\n\n    const adxbdy = adx * bdy;\n    const bdxady = bdx * ady;\n    const clift = cdx * cdx + cdy * cdy;\n\n    const det =\n        alift * (bdxcdy - cdxbdy) +\n        blift * (cdxady - adxcdy) +\n        clift * (adxbdy - bdxady);\n\n    const permanent =\n        (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift +\n        (Math.abs(cdxady) + Math.abs(adxcdy)) * blift +\n        (Math.abs(adxbdy) + Math.abs(bdxady)) * clift;\n\n    const errbound = iccerrboundA * permanent;\n\n    if (det > errbound || -det > errbound) {\n        return det;\n    }\n    return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);\n}\n\nexport function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {\n    const adx = ax - dx;\n    const ady = ay - dy;\n    const bdx = bx - dx;\n    const bdy = by - dy;\n    const cdx = cx - dx;\n    const cdy = cy - dy;\n\n    const abdet = adx * bdy - bdx * ady;\n    const bcdet = bdx * cdy - cdx * bdy;\n    const cadet = cdx * ady - adx * cdy;\n    const alift = adx * adx + ady * ady;\n    const blift = bdx * bdx + bdy * bdy;\n    const clift = cdx * cdx + cdy * cdy;\n\n    return alift * bcdet + blift * cadet + clift * abdet;\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale, negate} from './util.js';\n\nconst isperrboundA = (16 + 224 * epsilon) * epsilon;\nconst isperrboundB = (5 + 72 * epsilon) * epsilon;\nconst isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;\n\nconst ab = vec(4);\nconst bc = vec(4);\nconst cd = vec(4);\nconst de = vec(4);\nconst ea = vec(4);\nconst ac = vec(4);\nconst bd = vec(4);\nconst ce = vec(4);\nconst da = vec(4);\nconst eb = vec(4);\n\nconst abc = vec(24);\nconst bcd = vec(24);\nconst cde = vec(24);\nconst dea = vec(24);\nconst eab = vec(24);\nconst abd = vec(24);\nconst bce = vec(24);\nconst cda = vec(24);\nconst deb = vec(24);\nconst eac = vec(24);\n\nconst adet = vec(1152);\nconst bdet = vec(1152);\nconst cdet = vec(1152);\nconst ddet = vec(1152);\nconst edet = vec(1152);\nconst abdet = vec(2304);\nconst cddet = vec(2304);\nconst cdedet = vec(3456);\nconst deter = vec(5760);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _8c = vec(8);\nconst _16 = vec(16);\nconst _24 = vec(24);\nconst _48 = vec(48);\nconst _48b = vec(48);\nconst _96 = vec(96);\nconst _192 = vec(192);\nconst _384x = vec(384);\nconst _384y = vec(384);\nconst _384z = vec(384);\nconst _768 = vec(768);\n\nfunction sum_three_scale(a, b, c, az, bz, cz, out) {\n    return sum_three(\n        scale(4, a, az, _8), _8,\n        scale(4, b, bz, _8b), _8b,\n        scale(4, c, cz, _8c), _8c, _16, out);\n}\n\nfunction liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {\n    const len = sum(\n        sum(alen, a, blen, b, _48), _48,\n        negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);\n\n    return sum_three(\n        scale(scale(len, _96, x, _192), _192, x, _384x), _384x,\n        scale(scale(len, _96, y, _192), _192, y, _384y), _384y,\n        scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);\n}\n\nfunction insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    s1 = ax * by;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bx * ay;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ab[3] = u3;\n    s1 = bx * cy;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cx * by;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bc[3] = u3;\n    s1 = cx * dy;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dx * cy;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    cd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    cd[3] = u3;\n    s1 = dx * ey;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ex * dy;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    de[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    de[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    de[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    de[3] = u3;\n    s1 = ex * ay;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ax * ey;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ea[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ea[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ea[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ea[3] = u3;\n    s1 = ax * cy;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cx * ay;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ac[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ac[3] = u3;\n    s1 = bx * dy;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dx * by;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bd[3] = u3;\n    s1 = cx * ey;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ex * cy;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ce[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ce[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ce[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ce[3] = u3;\n    s1 = dx * ay;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ax * dy;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    da[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    da[3] = u3;\n    s1 = ex * by;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bx * ey;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    eb[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    eb[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    eb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    eb[3] = u3;\n\n    const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);\n    const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);\n    const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);\n    const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);\n    const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);\n    const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);\n    const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);\n    const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);\n    const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);\n    const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);\n\n    const deterlen = sum_three(\n        liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,\n        liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,\n        sum_three(\n            liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,\n            liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,\n            liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);\n\n    return deter[deterlen - 1];\n}\n\nconst xdet = vec(96);\nconst ydet = vec(96);\nconst zdet = vec(96);\nconst fin = vec(1152);\n\nfunction liftadapt(a, b, c, az, bz, cz, x, y, z, out) {\n    const len = sum_three_scale(a, b, c, az, bz, cz, _24);\n    return sum_three(\n        scale(scale(len, _24, x, _48), _48, x, xdet), xdet,\n        scale(scale(len, _24, y, _48), _48, y, ydet), ydet,\n        scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);\n}\n\nfunction insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {\n    let ab3, bc3, cd3, da3, ac3, bd3;\n\n    let aextail, bextail, cextail, dextail;\n    let aeytail, beytail, ceytail, deytail;\n    let aeztail, beztail, ceztail, deztail;\n\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;\n\n    const aex = ax - ex;\n    const bex = bx - ex;\n    const cex = cx - ex;\n    const dex = dx - ex;\n    const aey = ay - ey;\n    const bey = by - ey;\n    const cey = cy - ey;\n    const dey = dy - ey;\n    const aez = az - ez;\n    const bez = bz - ez;\n    const cez = cz - ez;\n    const dez = dz - ez;\n\n    s1 = aex * bey;\n    c = splitter * aex;\n    ahi = c - (c - aex);\n    alo = aex - ahi;\n    c = splitter * bey;\n    bhi = c - (c - bey);\n    blo = bey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bex * aey;\n    c = splitter * bex;\n    ahi = c - (c - bex);\n    alo = bex - ahi;\n    c = splitter * aey;\n    bhi = c - (c - aey);\n    blo = aey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    ab3 = _j + _i;\n    bvirt = ab3 - _j;\n    ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);\n    ab[3] = ab3;\n    s1 = bex * cey;\n    c = splitter * bex;\n    ahi = c - (c - bex);\n    alo = bex - ahi;\n    c = splitter * cey;\n    bhi = c - (c - cey);\n    blo = cey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cex * bey;\n    c = splitter * cex;\n    ahi = c - (c - cex);\n    alo = cex - ahi;\n    c = splitter * bey;\n    bhi = c - (c - bey);\n    blo = bey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    bc3 = _j + _i;\n    bvirt = bc3 - _j;\n    bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);\n    bc[3] = bc3;\n    s1 = cex * dey;\n    c = splitter * cex;\n    ahi = c - (c - cex);\n    alo = cex - ahi;\n    c = splitter * dey;\n    bhi = c - (c - dey);\n    blo = dey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dex * cey;\n    c = splitter * dex;\n    ahi = c - (c - dex);\n    alo = dex - ahi;\n    c = splitter * cey;\n    bhi = c - (c - cey);\n    blo = cey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    cd3 = _j + _i;\n    bvirt = cd3 - _j;\n    cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);\n    cd[3] = cd3;\n    s1 = dex * aey;\n    c = splitter * dex;\n    ahi = c - (c - dex);\n    alo = dex - ahi;\n    c = splitter * aey;\n    bhi = c - (c - aey);\n    blo = aey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = aex * dey;\n    c = splitter * aex;\n    ahi = c - (c - aex);\n    alo = aex - ahi;\n    c = splitter * dey;\n    bhi = c - (c - dey);\n    blo = dey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    da3 = _j + _i;\n    bvirt = da3 - _j;\n    da[2] = _j - (da3 - bvirt) + (_i - bvirt);\n    da[3] = da3;\n    s1 = aex * cey;\n    c = splitter * aex;\n    ahi = c - (c - aex);\n    alo = aex - ahi;\n    c = splitter * cey;\n    bhi = c - (c - cey);\n    blo = cey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cex * aey;\n    c = splitter * cex;\n    ahi = c - (c - cex);\n    alo = cex - ahi;\n    c = splitter * aey;\n    bhi = c - (c - aey);\n    blo = aey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    ac3 = _j + _i;\n    bvirt = ac3 - _j;\n    ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);\n    ac[3] = ac3;\n    s1 = bex * dey;\n    c = splitter * bex;\n    ahi = c - (c - bex);\n    alo = bex - ahi;\n    c = splitter * dey;\n    bhi = c - (c - dey);\n    blo = dey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dex * bey;\n    c = splitter * dex;\n    ahi = c - (c - dex);\n    alo = dex - ahi;\n    c = splitter * bey;\n    bhi = c - (c - bey);\n    blo = bey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    bd3 = _j + _i;\n    bvirt = bd3 - _j;\n    bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);\n    bd[3] = bd3;\n\n    const finlen = sum(\n        sum(\n            negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,\n            liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,\n        sum(\n            negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,\n            liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);\n\n    let det = estimate(finlen, fin);\n    let errbound = isperrboundB * permanent;\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    bvirt = ax - aex;\n    aextail = ax - (aex + bvirt) + (bvirt - ex);\n    bvirt = ay - aey;\n    aeytail = ay - (aey + bvirt) + (bvirt - ey);\n    bvirt = az - aez;\n    aeztail = az - (aez + bvirt) + (bvirt - ez);\n    bvirt = bx - bex;\n    bextail = bx - (bex + bvirt) + (bvirt - ex);\n    bvirt = by - bey;\n    beytail = by - (bey + bvirt) + (bvirt - ey);\n    bvirt = bz - bez;\n    beztail = bz - (bez + bvirt) + (bvirt - ez);\n    bvirt = cx - cex;\n    cextail = cx - (cex + bvirt) + (bvirt - ex);\n    bvirt = cy - cey;\n    ceytail = cy - (cey + bvirt) + (bvirt - ey);\n    bvirt = cz - cez;\n    ceztail = cz - (cez + bvirt) + (bvirt - ez);\n    bvirt = dx - dex;\n    dextail = dx - (dex + bvirt) + (bvirt - ex);\n    bvirt = dy - dey;\n    deytail = dy - (dey + bvirt) + (bvirt - ey);\n    bvirt = dz - dez;\n    deztail = dz - (dez + bvirt) + (bvirt - ez);\n    if (aextail === 0 && aeytail === 0 && aeztail === 0 &&\n        bextail === 0 && beytail === 0 && beztail === 0 &&\n        cextail === 0 && ceytail === 0 && ceztail === 0 &&\n        dextail === 0 && deytail === 0 && deztail === 0) {\n        return det;\n    }\n\n    errbound = isperrboundC * permanent + resulterrbound * Math.abs(det);\n\n    const abeps = (aex * beytail + bey * aextail) - (aey * bextail + bex * aeytail);\n    const bceps = (bex * ceytail + cey * bextail) - (bey * cextail + cex * beytail);\n    const cdeps = (cex * deytail + dey * cextail) - (cey * dextail + dex * ceytail);\n    const daeps = (dex * aeytail + aey * dextail) - (dey * aextail + aex * deytail);\n    const aceps = (aex * ceytail + cey * aextail) - (aey * cextail + cex * aeytail);\n    const bdeps = (bex * deytail + dey * bextail) - (bey * dextail + dex * beytail);\n    det +=\n        (((bex * bex + bey * bey + bez * bez) * ((cez * daeps + dez * aceps + aez * cdeps) +\n        (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) *\n        ((aez * bceps - bez * aceps + cez * abeps) + (aeztail * bc3 - beztail * ac3 + ceztail * ab3))) -\n        ((aex * aex + aey * aey + aez * aez) * ((bez * cdeps - cez * bdeps + dez * bceps) +\n        (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) *\n        ((dez * abeps + aez * bdeps + bez * daeps) + (deztail * ab3 + aeztail * bd3 + beztail * da3)))) +\n        2 * (((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) +\n        (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3)) -\n        ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) +\n        (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));\n\n    if (det >= errbound || -det >= errbound) {\n        return det;\n    }\n\n    return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);\n}\n\nexport function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n    const aex = ax - ex;\n    const bex = bx - ex;\n    const cex = cx - ex;\n    const dex = dx - ex;\n    const aey = ay - ey;\n    const bey = by - ey;\n    const cey = cy - ey;\n    const dey = dy - ey;\n    const aez = az - ez;\n    const bez = bz - ez;\n    const cez = cz - ez;\n    const dez = dz - ez;\n\n    const aexbey = aex * bey;\n    const bexaey = bex * aey;\n    const ab = aexbey - bexaey;\n    const bexcey = bex * cey;\n    const cexbey = cex * bey;\n    const bc = bexcey - cexbey;\n    const cexdey = cex * dey;\n    const dexcey = dex * cey;\n    const cd = cexdey - dexcey;\n    const dexaey = dex * aey;\n    const aexdey = aex * dey;\n    const da = dexaey - aexdey;\n    const aexcey = aex * cey;\n    const cexaey = cex * aey;\n    const ac = aexcey - cexaey;\n    const bexdey = bex * dey;\n    const dexbey = dex * bey;\n    const bd = bexdey - dexbey;\n\n    const alift = aex * aex + aey * aey + aez * aez;\n    const blift = bex * bex + bey * bey + bez * bez;\n    const clift = cex * cex + cey * cey + cez * cez;\n    const dlift = dex * dex + dey * dey + dez * dez;\n\n    const det =\n        (clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab)) +\n        (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd));\n\n    const aezplus = Math.abs(aez);\n    const bezplus = Math.abs(bez);\n    const cezplus = Math.abs(cez);\n    const dezplus = Math.abs(dez);\n    const aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey);\n    const bexceyplus = Math.abs(bexcey) + Math.abs(cexbey);\n    const cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey);\n    const dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey);\n    const aexceyplus = Math.abs(aexcey) + Math.abs(cexaey);\n    const bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey);\n    const permanent =\n        (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift +\n        (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift +\n        (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift +\n        (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift;\n\n    const errbound = isperrboundA * permanent;\n    if (det > errbound || -det > errbound) {\n        return det;\n    }\n    return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);\n}\n\nexport function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {\n    const aex = pax - pex;\n    const bex = pbx - pex;\n    const cex = pcx - pex;\n    const dex = pdx - pex;\n    const aey = pay - pey;\n    const bey = pby - pey;\n    const cey = pcy - pey;\n    const dey = pdy - pey;\n    const aez = paz - pez;\n    const bez = pbz - pez;\n    const cez = pcz - pez;\n    const dez = pdz - pez;\n\n    const ab = aex * bey - bex * aey;\n    const bc = bex * cey - cex * bey;\n    const cd = cex * dey - dex * cey;\n    const da = dex * aey - aex * dey;\n    const ac = aex * cey - cex * aey;\n    const bd = bex * dey - dex * bey;\n\n    const abc = aez * bc - bez * ac + cez * ab;\n    const bcd = bez * cd - cez * bd + dez * bc;\n    const cda = cez * da + dez * ac + aez * cd;\n    const dab = dez * ab + aez * bd + bez * da;\n\n    const alift = aex * aex + aey * aey + aez * aez;\n    const blift = bex * bex + bey * bey + bez * bez;\n    const clift = cex * cex + cey * cey + cez * cez;\n    const dlift = dex * dex + dey * dey + dez * dez;\n\n    return (clift * dab - dlift * abc) + (alift * bcd - blift * cda);\n}\n","\nimport RBush from 'rbush';\nimport Queue from 'tinyqueue';\nimport pointInPolygon from 'point-in-polygon';\nimport {orient2d} from 'robust-predicates';\n\nexport default function concaveman(points, concavity, lengthThreshold) {\n    // a relative measure of concavity; higher value means simpler hull\n    concavity = Math.max(0, concavity === undefined ? 2 : concavity);\n\n    // when a segment goes below this length threshold, it won't be drilled down further\n    lengthThreshold = lengthThreshold || 0;\n\n    // start with a convex hull of the points\n    const hull = fastConvexHull(points);\n\n    // index the points with an R-tree\n    const tree = new RBush(16);\n    tree.toBBox = function (a) {\n        return {\n            minX: a[0],\n            minY: a[1],\n            maxX: a[0],\n            maxY: a[1]\n        };\n    };\n    tree.compareMinX = function (a, b) { return a[0] - b[0]; };\n    tree.compareMinY = function (a, b) { return a[1] - b[1]; };\n\n    tree.load(points);\n\n    // turn the convex hull into a linked list and populate the initial edge queue with the nodes\n    const queue = [];\n    let last;\n    for (let i = 0; i < hull.length; i++) {\n        const p = hull[i];\n        tree.remove(p);\n        last = insertNode(p, last);\n        queue.push(last);\n    }\n\n    // index the segments with an R-tree (for intersection checks)\n    const segTree = new RBush(16);\n    for (let i = 0; i < queue.length; i++) segTree.insert(updateBBox(queue[i]));\n\n    const sqConcavity = concavity * concavity;\n    const sqLenThreshold = lengthThreshold * lengthThreshold;\n\n    // process edges one by one\n    while (queue.length) {\n        const node = queue.shift();\n        const a = node.p;\n        const b = node.next.p;\n\n        // skip the edge if it's already short enough\n        const sqLen = getSqDist(a, b);\n        if (sqLen < sqLenThreshold) continue;\n\n        const maxSqLen = sqLen / sqConcavity;\n\n        // find the best connection point for the current edge to flex inward to\n        const p = findCandidate(tree, node.prev.p, a, b, node.next.next.p, maxSqLen, segTree);\n\n        // if we found a connection and it satisfies our concavity measure\n        if (p && Math.min(getSqDist(p, a), getSqDist(p, b)) <= maxSqLen) {\n            // connect the edge endpoints through this point and add 2 new edges to the queue\n            queue.push(node);\n            queue.push(insertNode(p, node));\n\n            // update point and segment indexes\n            tree.remove(p);\n            segTree.remove(node);\n            segTree.insert(updateBBox(node));\n            segTree.insert(updateBBox(node.next));\n        }\n    }\n\n    // convert the resulting hull linked list to an array of points\n    let node = last;\n    const concave = [];\n    do {\n        concave.push(node.p);\n        node = node.next;\n    } while (node !== last);\n\n    concave.push(node.p);\n\n    return concave;\n}\n\nfunction findCandidate(tree, a, b, c, d, maxDist, segTree) {\n    const queue = new Queue([], compareDist);\n    let node = tree.data;\n\n    // search through the point R-tree with a depth-first search using a priority queue\n    // in the order of distance to the edge (b, c)\n    while (node) {\n        for (let i = 0; i < node.children.length; i++) {\n            const child = node.children[i];\n\n            const dist = node.leaf ? sqSegDist(child, b, c) : sqSegBoxDist(b, c, child);\n            if (dist > maxDist) continue; // skip the node if it's farther than we ever need\n\n            queue.push({\n                node: child,\n                dist\n            });\n        }\n\n        while (queue.length && !queue.peek().node.children) {\n            const item = queue.pop();\n            const p = item.node;\n\n            // skip all points that are as close to adjacent edges (a,b) and (c,d),\n            // and points that would introduce self-intersections when connected\n            const d0 = sqSegDist(p, a, b);\n            const d1 = sqSegDist(p, c, d);\n            if (item.dist < d0 && item.dist < d1 &&\n                noIntersections(b, p, segTree) &&\n                noIntersections(c, p, segTree)) return p;\n        }\n\n        node = queue.pop();\n        if (node) node = node.node;\n    }\n\n    return null;\n}\n\nfunction compareDist(a, b) {\n    return a.dist - b.dist;\n}\n\n// square distance from a segment bounding box to the given one\nfunction sqSegBoxDist(a, b, bbox) {\n    if (inside(a, bbox) || inside(b, bbox)) return 0;\n    const d1 = sqSegSegDist(a[0], a[1], b[0], b[1], bbox.minX, bbox.minY, bbox.maxX, bbox.minY);\n    if (d1 === 0) return 0;\n    const d2 = sqSegSegDist(a[0], a[1], b[0], b[1], bbox.minX, bbox.minY, bbox.minX, bbox.maxY);\n    if (d2 === 0) return 0;\n    const d3 = sqSegSegDist(a[0], a[1], b[0], b[1], bbox.maxX, bbox.minY, bbox.maxX, bbox.maxY);\n    if (d3 === 0) return 0;\n    const d4 = sqSegSegDist(a[0], a[1], b[0], b[1], bbox.minX, bbox.maxY, bbox.maxX, bbox.maxY);\n    if (d4 === 0) return 0;\n    return Math.min(d1, d2, d3, d4);\n}\n\nfunction inside(a, bbox) {\n    return a[0] >= bbox.minX &&\n           a[0] <= bbox.maxX &&\n           a[1] >= bbox.minY &&\n           a[1] <= bbox.maxY;\n}\n\n// check if the edge (a,b) doesn't intersect any other edges\nfunction noIntersections(a, b, segTree) {\n    const minX = Math.min(a[0], b[0]);\n    const minY = Math.min(a[1], b[1]);\n    const maxX = Math.max(a[0], b[0]);\n    const maxY = Math.max(a[1], b[1]);\n\n    const edges = segTree.search({minX, minY, maxX, maxY});\n    for (let i = 0; i < edges.length; i++) {\n        if (intersects(edges[i].p, edges[i].next.p, a, b)) return false;\n    }\n    return true;\n}\n\nfunction cross(p1, p2, p3) {\n    return orient2d(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\n// check if the edges (p1,q1) and (p2,q2) intersect\nfunction intersects(p1, q1, p2, q2) {\n    return p1 !== q2 && q1 !== p2 &&\n        cross(p1, q1, p2) > 0 !== cross(p1, q1, q2) > 0 &&\n        cross(p2, q2, p1) > 0 !== cross(p2, q2, q1) > 0;\n}\n\n// update the bounding box of a node's edge\nfunction updateBBox(node) {\n    const p1 = node.p;\n    const p2 = node.next.p;\n    node.minX = Math.min(p1[0], p2[0]);\n    node.minY = Math.min(p1[1], p2[1]);\n    node.maxX = Math.max(p1[0], p2[0]);\n    node.maxY = Math.max(p1[1], p2[1]);\n    return node;\n}\n\n// speed up convex hull by filtering out points inside quadrilateral formed by 4 extreme points\nfunction fastConvexHull(points) {\n    let left = points[0];\n    let top = points[0];\n    let right = points[0];\n    let bottom = points[0];\n\n    // find the leftmost, rightmost, topmost and bottommost points\n    for (let i = 0; i < points.length; i++) {\n        const p = points[i];\n        if (p[0] < left[0]) left = p;\n        if (p[0] > right[0]) right = p;\n        if (p[1] < top[1]) top = p;\n        if (p[1] > bottom[1]) bottom = p;\n    }\n\n    // filter out points that are inside the resulting quadrilateral\n    const cull = [left, top, right, bottom];\n    const filtered = cull.slice();\n    for (let i = 0; i < points.length; i++) {\n        if (!pointInPolygon(points[i], cull)) filtered.push(points[i]);\n    }\n\n    // get convex hull around the filtered points\n    return convexHull(filtered);\n}\n\n// create a new node in a doubly linked list\nfunction insertNode(p, prev) {\n    const node = {\n        p,\n        prev: null,\n        next: null,\n        minX: 0,\n        minY: 0,\n        maxX: 0,\n        maxY: 0\n    };\n\n    if (!prev) {\n        node.prev = node;\n        node.next = node;\n\n    } else {\n        node.next = prev.next;\n        node.prev = prev;\n        prev.next.prev = node;\n        prev.next = node;\n    }\n    return node;\n}\n\n// square distance between 2 points\nfunction getSqDist(p1, p2) {\n\n    const dx = p1[0] - p2[0],\n        dy = p1[1] - p2[1];\n\n    return dx * dx + dy * dy;\n}\n\n// square distance from a point to a segment\nfunction sqSegDist(p, p1, p2) {\n\n    let x = p1[0],\n        y = p1[1],\n        dx = p2[0] - x,\n        dy = p2[1] - y;\n\n    if (dx !== 0 || dy !== 0) {\n\n        const t = ((p[0] - x) * dx + (p[1] - y) * dy) / (dx * dx + dy * dy);\n\n        if (t > 1) {\n            x = p2[0];\n            y = p2[1];\n\n        } else if (t > 0) {\n            x += dx * t;\n            y += dy * t;\n        }\n    }\n\n    dx = p[0] - x;\n    dy = p[1] - y;\n\n    return dx * dx + dy * dy;\n}\n\n// segment to segment distance, ported from http://geomalgorithms.com/a07-_distance.html by Dan Sunday\nfunction sqSegSegDist(x0, y0, x1, y1, x2, y2, x3, y3) {\n    const ux = x1 - x0;\n    const uy = y1 - y0;\n    const vx = x3 - x2;\n    const vy = y3 - y2;\n    const wx = x0 - x2;\n    const wy = y0 - y2;\n    const a = ux * ux + uy * uy;\n    const b = ux * vx + uy * vy;\n    const c = vx * vx + vy * vy;\n    const d = ux * wx + uy * wy;\n    const e = vx * wx + vy * wy;\n    const D = a * c - b * b;\n\n    let sN, tN;\n    let sD = D;\n    let tD = D;\n\n    if (D === 0) {\n        sN = 0;\n        sD = 1;\n        tN = e;\n        tD = c;\n    } else {\n        sN = b * e - c * d;\n        tN = a * e - b * d;\n        if (sN < 0) {\n            sN = 0;\n            tN = e;\n            tD = c;\n        } else if (sN > sD) {\n            sN = sD;\n            tN = e + b;\n            tD = c;\n        }\n    }\n\n    if (tN < 0.0) {\n        tN = 0.0;\n        if (-d < 0.0) sN = 0.0;\n        else if (-d > a) sN = sD;\n        else {\n            sN = -d;\n            sD = a;\n        }\n    } else if (tN > tD) {\n        tN = tD;\n        if ((-d + b) < 0.0) sN = 0;\n        else if (-d + b > a) sN = sD;\n        else {\n            sN = -d + b;\n            sD = a;\n        }\n    }\n\n    const sc = sN === 0 ? 0 : sN / sD;\n    const tc = tN === 0 ? 0 : tN / tD;\n\n    const cx = (1 - sc) * x0 + sc * x1;\n    const cy = (1 - sc) * y0 + sc * y1;\n    const cx2 = (1 - tc) * x2 + tc * x3;\n    const cy2 = (1 - tc) * y2 + tc * y3;\n    const dx = cx2 - cx;\n    const dy = cy2 - cy;\n\n    return dx * dx + dy * dy;\n}\n\nfunction compareByX(a, b) {\n    return a[0] === b[0] ? a[1] - b[1] : a[0] - b[0];\n}\n\nfunction convexHull(points) {\n    points.sort(compareByX);\n\n    const lower = [];\n    for (let i = 0; i < points.length; i++) {\n        while (lower.length >= 2 && cross(lower[lower.length - 2], lower[lower.length - 1], points[i]) <= 0) {\n            lower.pop();\n        }\n        lower.push(points[i]);\n    }\n\n    const upper = [];\n    for (let ii = points.length - 1; ii >= 0; ii--) {\n        while (upper.length >= 2 && cross(upper[upper.length - 2], upper[upper.length - 1], points[ii]) <= 0) {\n            upper.pop();\n        }\n        upper.push(points[ii]);\n    }\n\n    upper.pop();\n    lower.pop();\n    return lower.concat(upper);\n}\n","var rbush = require('rbush');\nvar helpers = require('@turf/helpers');\nvar meta = require('@turf/meta');\nvar turfBBox = require('@turf/bbox').default;\nvar featureEach = meta.featureEach;\nvar coordEach = meta.coordEach;\nvar polygon = helpers.polygon;\nvar featureCollection = helpers.featureCollection;\n\n/**\n * GeoJSON implementation of [RBush](https://github.com/mourner/rbush#rbush) spatial index.\n *\n * @name rbush\n * @param {number} [maxEntries=9] defines the maximum number of entries in a tree node. 9 (used by default) is a\n * reasonable choice for most applications. Higher value means faster insertion and slower search, and vice versa.\n * @returns {RBush} GeoJSON RBush\n * @example\n * var geojsonRbush = require('geojson-rbush').default;\n * var tree = geojsonRbush();\n */\nfunction geojsonRbush(maxEntries) {\n    var tree = new rbush(maxEntries);\n    /**\n     * [insert](https://github.com/mourner/rbush#data-format)\n     *\n     * @param {Feature} feature insert single GeoJSON Feature\n     * @returns {RBush} GeoJSON RBush\n     * @example\n     * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n     * tree.insert(poly)\n     */\n    tree.insert = function (feature) {\n        if (feature.type !== 'Feature') throw new Error('invalid feature');\n        feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n        return rbush.prototype.insert.call(this, feature);\n    };\n\n    /**\n     * [load](https://github.com/mourner/rbush#bulk-inserting-data)\n     *\n     * @param {FeatureCollection|Array<Feature>} features load entire GeoJSON FeatureCollection\n     * @returns {RBush} GeoJSON RBush\n     * @example\n     * var polys = turf.polygons([\n     *     [[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]],\n     *     [[[-93, 32], [-83, 32], [-83, 39], [-93, 39], [-93, 32]]]\n     * ]);\n     * tree.load(polys);\n     */\n    tree.load = function (features) {\n        var load = [];\n        // Load an Array of Features\n        if (Array.isArray(features)) {\n            features.forEach(function (feature) {\n                if (feature.type !== 'Feature') throw new Error('invalid features');\n                feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n                load.push(feature);\n            });\n        } else {\n            // Load a FeatureCollection\n            featureEach(features, function (feature) {\n                if (feature.type !== 'Feature') throw new Error('invalid features');\n                feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n                load.push(feature);\n            });\n        }\n        return rbush.prototype.load.call(this, load);\n    };\n\n    /**\n     * [remove](https://github.com/mourner/rbush#removing-data)\n     *\n     * @param {Feature} feature remove single GeoJSON Feature\n     * @param {Function} equals Pass a custom equals function to compare by value for removal.\n     * @returns {RBush} GeoJSON RBush\n     * @example\n     * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n     *\n     * tree.remove(poly);\n     */\n    tree.remove = function (feature, equals) {\n        if (feature.type !== 'Feature') throw new Error('invalid feature');\n        feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n        return rbush.prototype.remove.call(this, feature, equals);\n    };\n\n    /**\n     * [clear](https://github.com/mourner/rbush#removing-data)\n     *\n     * @returns {RBush} GeoJSON Rbush\n     * @example\n     * tree.clear()\n     */\n    tree.clear = function () {\n        return rbush.prototype.clear.call(this);\n    };\n\n    /**\n     * [search](https://github.com/mourner/rbush#search)\n     *\n     * @param {BBox|FeatureCollection|Feature} geojson search with GeoJSON\n     * @returns {FeatureCollection} all features that intersects with the given GeoJSON.\n     * @example\n     * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n     *\n     * tree.search(poly);\n     */\n    tree.search = function (geojson) {\n        var features = rbush.prototype.search.call(this, this.toBBox(geojson));\n        return featureCollection(features);\n    };\n\n    /**\n     * [collides](https://github.com/mourner/rbush#collisions)\n     *\n     * @param {BBox|FeatureCollection|Feature} geojson collides with GeoJSON\n     * @returns {boolean} true if there are any items intersecting the given GeoJSON, otherwise false.\n     * @example\n     * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n     *\n     * tree.collides(poly);\n     */\n    tree.collides = function (geojson) {\n        return rbush.prototype.collides.call(this, this.toBBox(geojson));\n    };\n\n    /**\n     * [all](https://github.com/mourner/rbush#search)\n     *\n     * @returns {FeatureCollection} all the features in RBush\n     * @example\n     * tree.all()\n     */\n    tree.all = function () {\n        var features = rbush.prototype.all.call(this);\n        return featureCollection(features);\n    };\n\n    /**\n     * [toJSON](https://github.com/mourner/rbush#export-and-import)\n     *\n     * @returns {any} export data as JSON object\n     * @example\n     * var exported = tree.toJSON()\n     */\n    tree.toJSON = function () {\n        return rbush.prototype.toJSON.call(this);\n    };\n\n    /**\n     * [fromJSON](https://github.com/mourner/rbush#export-and-import)\n     *\n     * @param {any} json import previously exported data\n     * @returns {RBush} GeoJSON RBush\n     * @example\n     * var exported = {\n     *   \"children\": [\n     *     {\n     *       \"type\": \"Feature\",\n     *       \"geometry\": {\n     *         \"type\": \"Point\",\n     *         \"coordinates\": [110, 50]\n     *       },\n     *       \"properties\": {},\n     *       \"bbox\": [110, 50, 110, 50]\n     *     }\n     *   ],\n     *   \"height\": 1,\n     *   \"leaf\": true,\n     *   \"minX\": 110,\n     *   \"minY\": 50,\n     *   \"maxX\": 110,\n     *   \"maxY\": 50\n     * }\n     * tree.fromJSON(exported)\n     */\n    tree.fromJSON = function (json) {\n        return rbush.prototype.fromJSON.call(this, json);\n    };\n\n    /**\n     * Converts GeoJSON to {minX, minY, maxX, maxY} schema\n     *\n     * @private\n     * @param {BBox|FeatureCollection|Feature} geojson feature(s) to retrieve BBox from\n     * @returns {Object} converted to {minX, minY, maxX, maxY}\n     */\n    tree.toBBox = function (geojson) {\n        var bbox;\n        if (geojson.bbox) bbox = geojson.bbox;\n        else if (Array.isArray(geojson) && geojson.length === 4) bbox = geojson;\n        else if (Array.isArray(geojson) && geojson.length === 6) bbox = [geojson[0], geojson[1], geojson[3], geojson[4]];\n        else if (geojson.type === 'Feature') bbox = turfBBox(geojson);\n        else if (geojson.type === 'FeatureCollection') bbox = turfBBox(geojson);\n        else throw new Error('invalid geojson')\n\n        return {\n            minX: bbox[0],\n            minY: bbox[1],\n            maxX: bbox[2],\n            maxY: bbox[3]\n        };\n    };\n    return tree;\n}\n\nmodule.exports = geojsonRbush;\nmodule.exports.default = geojsonRbush;\n","'use strict';\n\nvar bearing = require('@turf/bearing');\nvar distance = require('@turf/distance');\nvar destination = require('@turf/destination');\nvar helpers = require('@turf/helpers');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bearing__default = /*#__PURE__*/_interopDefaultLegacy(bearing);\nvar distance__default = /*#__PURE__*/_interopDefaultLegacy(distance);\nvar destination__default = /*#__PURE__*/_interopDefaultLegacy(destination);\n\n/**\n * Takes a {@link LineString|line}, a specified distance along the line to a start {@link Point},\n * and a specified  distance along the line to a stop point\n * and returns a subsection of the line in-between those points.\n *\n * This can be useful for extracting only the part of a route between two distances.\n *\n * @name lineSliceAlong\n * @param {Feature<LineString>|LineString} line input line\n * @param {number} startDist distance along the line to starting point\n * @param {number} stopDist distance along the line to ending point\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {Feature<LineString>} sliced line\n * @example\n * var line = turf.lineString([[7, 45], [9, 45], [14, 40], [14, 41]]);\n * var start = 12.5;\n * var stop = 25;\n * var sliced = turf.lineSliceAlong(line, start, stop, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [line, start, stop, sliced]\n */\nfunction lineSliceAlong(line, startDist, stopDist, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n\n  var coords;\n  var slice = [];\n\n  // Validation\n  if (line.type === \"Feature\") coords = line.geometry.coordinates;\n  else if (line.type === \"LineString\") coords = line.coordinates;\n  else throw new Error(\"input must be a LineString Feature or Geometry\");\n  var origCoordsLength = coords.length;\n  var travelled = 0;\n  var overshot, direction, interpolated;\n  for (var i = 0; i < coords.length; i++) {\n    if (startDist >= travelled && i === coords.length - 1) break;\n    else if (travelled > startDist && slice.length === 0) {\n      overshot = startDist - travelled;\n      if (!overshot) {\n        slice.push(coords[i]);\n        return helpers.lineString(slice);\n      }\n      direction = bearing__default['default'](coords[i], coords[i - 1]) - 180;\n      interpolated = destination__default['default'](coords[i], overshot, direction, options);\n      slice.push(interpolated.geometry.coordinates);\n    }\n\n    if (travelled >= stopDist) {\n      overshot = stopDist - travelled;\n      if (!overshot) {\n        slice.push(coords[i]);\n        return helpers.lineString(slice);\n      }\n      direction = bearing__default['default'](coords[i], coords[i - 1]) - 180;\n      interpolated = destination__default['default'](coords[i], overshot, direction, options);\n      slice.push(interpolated.geometry.coordinates);\n      return helpers.lineString(slice);\n    }\n\n    if (travelled >= startDist) {\n      slice.push(coords[i]);\n    }\n\n    if (i === coords.length - 1) {\n      return helpers.lineString(slice);\n    }\n\n    travelled += distance__default['default'](coords[i], coords[i + 1], options);\n  }\n\n  if (travelled < startDist && coords.length === origCoordsLength)\n    throw new Error(\"Start position is beyond line\");\n\n  var last = coords[coords.length - 1];\n  return helpers.lineString([last, last]);\n}\n\nmodule.exports = lineSliceAlong;\nmodule.exports.default = lineSliceAlong;\n","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n  var opts = options || {};\n\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (opts.strict ? is(actual, expected) : actual === expected) {\n    return true;\n  }\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n  if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n    return opts.strict ? is(actual, expected) : actual == expected;\n  }\n\n  /*\n   * 7.4. For all other Object pairs, including Array objects, equivalence is\n   * determined by having the same number of owned properties (as verified\n   * with Object.prototype.hasOwnProperty.call), the same set of keys\n   * (although not necessarily the same order), equivalent values for every\n   * corresponding key, and an identical 'prototype' property. Note: this\n   * accounts for both named and indexed properties on Arrays.\n   */\n  // eslint-disable-next-line no-use-before-define\n  return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n    return false;\n  }\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') {\n    return false;\n  }\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  /* eslint max-statements: [2, 50] */\n  var i, key;\n  if (typeof a !== typeof b) { return false; }\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) { return false; }\n\n  if (isArguments(a) !== isArguments(b)) { return false; }\n\n  var aIsRegex = isRegex(a);\n  var bIsRegex = isRegex(b);\n  if (aIsRegex !== bIsRegex) { return false; }\n  if (aIsRegex || bIsRegex) {\n    return a.source === b.source && flags(a) === flags(b);\n  }\n\n  if (isDate(a) && isDate(b)) {\n    return getTime.call(a) === getTime.call(b);\n  }\n\n  var aIsBuffer = isBuffer(a);\n  var bIsBuffer = isBuffer(b);\n  if (aIsBuffer !== bIsBuffer) { return false; }\n  if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n    if (a.length !== b.length) { return false; }\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) { return false; }\n    }\n    return true;\n  }\n\n  if (typeof a !== typeof b) { return false; }\n\n  try {\n    var ka = objectKeys(a);\n    var kb = objectKeys(b);\n  } catch (e) { // happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates hasOwnProperty)\n  if (ka.length !== kb.length) { return false; }\n\n  // the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  // ~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i]) { return false; }\n  }\n  // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) { return false; }\n  }\n\n  return true;\n}\n\nmodule.exports = deepEqual;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","\"use strict\";\n\nvar Distance = require(\"./distance.js\"),\n    eudist = Distance.eudist,\n    dist = Distance.dist;\n\nmodule.exports = {\n\tkmrand: function kmrand(data, k) {\n\t\tvar map = {},\n\t\t    ks = [],\n\t\t    t = k << 2;\n\t\tvar len = data.length;\n\t\tvar multi = data[0].length > 0;\n\n\t\twhile (ks.length < k && t-- > 0) {\n\t\t\tvar d = data[Math.floor(Math.random() * len)];\n\t\t\tvar key = multi ? d.join(\"_\") : \"\" + d;\n\t\t\tif (!map[key]) {\n\t\t\t\tmap[key] = true;\n\t\t\t\tks.push(d);\n\t\t\t}\n\t\t}\n\n\t\tif (ks.length < k) throw new Error(\"Error initializating clusters\");else return ks;\n\t},\n\n\n\t/**\n  * K-means++ initial centroid selection\n  */\n\tkmpp: function kmpp(data, k) {\n\t\tvar distance = data[0].length ? eudist : dist;\n\t\tvar ks = [],\n\t\t    len = data.length;\n\t\tvar multi = data[0].length > 0;\n\t\tvar map = {};\n\n\t\t// First random centroid\n\t\tvar c = data[Math.floor(Math.random() * len)];\n\t\tvar key = multi ? c.join(\"_\") : \"\" + c;\n\t\tks.push(c);\n\t\tmap[key] = true;\n\n\t\t// Retrieve next centroids\n\t\twhile (ks.length < k) {\n\t\t\t// Min Distances between current centroids and data points\n\t\t\tvar dists = [],\n\t\t\t    lk = ks.length;\n\t\t\tvar dsum = 0,\n\t\t\t    prs = [];\n\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\tvar min = Infinity;\n\t\t\t\tfor (var j = 0; j < lk; j++) {\n\t\t\t\t\tvar _dist = distance(data[i], ks[j]);\n\t\t\t\t\tif (_dist <= min) min = _dist;\n\t\t\t\t}\n\t\t\t\tdists[i] = min;\n\t\t\t}\n\n\t\t\t// Sum all min distances\n\t\t\tfor (var _i = 0; _i < len; _i++) {\n\t\t\t\tdsum += dists[_i];\n\t\t\t}\n\n\t\t\t// Probabilities and cummulative prob (cumsum)\n\t\t\tfor (var _i2 = 0; _i2 < len; _i2++) {\n\t\t\t\tprs[_i2] = { i: _i2, v: data[_i2], pr: dists[_i2] / dsum, cs: 0 };\n\t\t\t}\n\n\t\t\t// Sort Probabilities\n\t\t\tprs.sort(function (a, b) {\n\t\t\t\treturn a.pr - b.pr;\n\t\t\t});\n\n\t\t\t// Cummulative Probabilities\n\t\t\tprs[0].cs = prs[0].pr;\n\t\t\tfor (var _i3 = 1; _i3 < len; _i3++) {\n\t\t\t\tprs[_i3].cs = prs[_i3 - 1].cs + prs[_i3].pr;\n\t\t\t}\n\n\t\t\t// Randomize\n\t\t\tvar rnd = Math.random();\n\n\t\t\t// Gets only the items whose cumsum >= rnd\n\t\t\tvar idx = 0;\n\t\t\twhile (idx < len - 1 && prs[idx++].cs < rnd) {}\n\t\t\tks.push(prs[idx - 1].v);\n\t\t\t/*\n   let done = false;\n   while(!done) {\n   \t// this is our new centroid\n   \tc = prs[idx-1].v\n   \tkey = multi? c.join(\"_\") : `${c}`;\n   \tif(!map[key]) {\n   \t\tmap[key] = true;\n   \t\tks.push(c);\n   \t\tdone = true;\n   \t}\n   \telse {\n   \t\tidx++;\n   \t}\n   }\n   */\n\t\t}\n\n\t\treturn ks;\n\t}\n};\n//# sourceMappingURL=kinit.js.map\n","import React, { useEffect, useRef, useState } from 'react'\nimport django from 'django'\nimport { TypeaheadField } from '../contrib/TypeaheadField'\nimport { MultiSelect } from '../contrib/forms/MultiSelect'\nimport { classNames } from 'adhocracy4'\nimport { ControlBarFilterPills } from '../contrib/ControlBarFilterPills'\nimport SaveSearchProfile from '../plans/SaveSearchProfile'\nimport { GroupMultiSelect } from '../contrib/forms/GroupMultiSelect'\n\nconst translated = {\n  search: django.gettext('Search'),\n  reset: django.gettext('Reset'),\n  showFilters: django.gettext('Show more'),\n  hideFilters: django.gettext('Show less'),\n  districtsKieze: django.gettext('Kiezes & Districts'),\n  allDistrictsKieze: django.gettext('All districts'),\n  savedKieze: django.gettext('Your saved Kieze'),\n  createKiez: django.gettext('You can create your own Kieze in the user account settings.'),\n  districts: django.gettext('Districts'),\n  topics: django.gettext('Topics'),\n  allTopics: django.gettext('All topics'),\n  participations: django.gettext('Kind of participation'),\n  allParticipation: django.gettext('All'),\n  projectState: django.gettext('Project state'),\n  projectStatePlaceholder: django.gettext('None'),\n  organisation: django.gettext('Organization'),\n  onlyShow: django.gettext('Only show:'),\n  plans: django.gettext('Plans'),\n  nav: django.gettext('Search, filter and sort the ideas list'),\n  searchFor: django.gettext('Search for Proposals'),\n  button: django.gettext('Show projects'),\n  searchProfileCreatedTitle: django.gettext('Search profile created successfully'),\n  searchProfileCreatedText: (url) =>\n    django.interpolate(\n      django.gettext('You will be informed about new projects that meet the selected filters. You can manage your search profiles in the User Settings under <a href=\"%(url)s\">Search Profiles</a>.'),\n      { url },\n      true\n    ),\n  searchProfileLimitExceededTitle: django.gettext('Search profile cannot be saved'),\n  searchProfileLimitExceededText: (url) =>\n    django.interpolate(\n      django.gettext('You have saved the maximum number of 10 search profiles. To save a new one, delete an existing profile in the User Settings under <a href=\"%(url)s\">Search Profiles</a>.'),\n      { url },\n      true\n    )\n}\n\nconst statusNames = {\n  active: django.gettext('ongoing'),\n  future: django.gettext('upcoming'),\n  past: django.gettext('done')\n}\n\nconst initialState = {\n  search: '',\n  districts: [],\n  organisation: [],\n  participations: [],\n  topics: [],\n  projectState: ['active', 'future'],\n  plansOnly: false,\n  kiezradars: []\n}\n\nconst getAlteredFilters = (\n  {\n    search,\n    districts,\n    topics,\n    projectState,\n    organisation,\n    participations,\n    kiezradars,\n    plansOnly\n  },\n  topicChoices,\n  participationChoices\n) => {\n  const filters = []\n  if (search !== initialState.search) {\n    filters.push({ label: search, type: 'search', value: search })\n  }\n  districts.forEach(d => filters.push({ label: d, type: 'districts', value: d }))\n  topics.forEach(topicCode => {\n    const choice = topicChoices.find(choice => choice.code === topicCode)\n    if (choice) {\n      filters.push({ label: choice.name, type: 'topics', value: topicCode })\n    }\n  })\n  projectState.forEach(s => filters.push({ label: statusNames[s], type: 'projectState', value: s }))\n  organisation.forEach(o => filters.push({ label: o, type: 'organisation', value: o }))\n  participations.forEach(participationId => {\n    const choice = participationChoices.find(choice => choice.value === participationId)\n    if (typeof choice !== 'undefined') {\n      filters.push({ label: choice.name, type: 'participations', value: participationId })\n    }\n  })\n  kiezradars.forEach(k => filters.push({ label: k, type: 'kiezradars', value: k }))\n\n  if (typeof plansOnly === 'boolean') {\n    filters.push({ label: translated.plans, type: 'plansOnly', value: plansOnly })\n  }\n\n  return filters\n}\n\nexport const ProjectsControlBar = ({\n  districts,\n  organisations,\n  participationChoices,\n  topicChoices,\n  appliedFilters,\n  onFiltered,\n  onResetClick,\n  onAlert,\n  onError,\n  hasContainer,\n  kiezradars,\n  searchProfile: initialSearchProfile,\n  searchProfilesApiUrl,\n  searchProfilesUrl,\n  searchProfilesCount: initialSearchProfilesCount,\n  setParams,\n  syncTrigger,\n  isAuthenticated,\n  projectStatus\n}) => {\n  const [expandFilters, setExpandFilters] = useState(false)\n  const [filters, setFilters] = useState(appliedFilters)\n  const onFilterChange = (type, choice) => {\n    setFilters({ ...filters, [type]: choice })\n  }\n  const alteredFilters = getAlteredFilters(appliedFilters, topicChoices, participationChoices)\n  const [searchProfile, setSearchProfile] = useState(initialSearchProfile)\n  const [searchProfilesCount, setSearchProfilesCount] = useState(initialSearchProfilesCount)\n  const filtersContainerRef = useRef(null)\n\n  const isFiltersInitialState = JSON.stringify(appliedFilters) === JSON.stringify(initialState)\n\n  useEffect(() => {\n    if (JSON.stringify(appliedFilters) !== JSON.stringify(filters)) {\n      setFilters(appliedFilters)\n    }\n  }, [syncTrigger])\n\n  useEffect(() => {\n    if (expandFilters && filtersContainerRef.current) {\n      filtersContainerRef.current.focus()\n    }\n  }, [expandFilters])\n\n  const handleCreateSearchProfile = (searchProfile, limitExceeded) => {\n    if (limitExceeded) {\n      onError({\n        title: translated.searchProfileLimitExceededTitle,\n        message: (\n          <div\n            dangerouslySetInnerHTML={{\n              __html: translated.searchProfileLimitExceededText(searchProfilesUrl)\n            }}\n          />\n        )\n      })\n      return\n    }\n\n    setSearchProfile(searchProfile)\n    setSearchProfilesCount(searchProfilesCount + 1)\n    setParams({ 'search-profile': searchProfile.id, ...filters })\n\n    onAlert({\n      title: translated.searchProfileCreatedTitle,\n      message: (\n        <div\n          dangerouslySetInnerHTML={{\n            __html: translated.searchProfileCreatedText(searchProfilesUrl)\n          }}\n        />\n      )\n    })\n  }\n\n  const handleSubmit = (e) => {\n    e.preventDefault()\n\n    const newFilters = { ...filters }\n    if (newFilters.projectState.length === 0) {\n      newFilters.projectState = initialState.projectState\n    }\n\n    onFiltered(newFilters)\n    setSearchProfile(null)\n    setParams(newFilters)\n  }\n\n  const handleReset = () => {\n    setFilters(initialState)\n    onResetClick()\n    setSearchProfile(null)\n    setParams({})\n  }\n\n  return (\n    <div aria-label={translated.nav}>\n      <form\n        className={classNames('modul-facetingform js-facetingform', alteredFilters.length ? 'control-bar--no-spacing' : 'control-bar--spacing')}\n        onSubmit={handleSubmit}\n      >\n        <div className=\"facetingform__container\">\n          <div className=\"facets\">\n            <div className=\"container\">\n              <fieldset className=\"facet\">\n                <div className=\"facet__body\">\n                  <div className=\"searchform-slot mb-3\">\n                    <div className=\"form-group\">\n                      <label htmlFor=\"searchterm\" className=\"form-label\">\n                        {translated.search}\n                      </label>\n                      <div className=\"a4-control-bar__search__term my-0\">\n                        <div className=\"input-wrapper\">\n                          <i className=\"a4-control-bar__search__logo-start\" aria-hidden=\"true\" />\n                          <input\n                            type=\"search\"\n                            className=\"form-control a4-control-bar__search__input\"\n                            placeholder={translated.searchPlaceholder}\n                            value={filters.search}\n                            id=\"searchterm\"\n                            autoComplete=\"on\"\n                            onChange={(e) => onFilterChange('search', e.target.value)}\n                          />\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                  <div className=\"flexgrid grid--2\">\n                    <div className=\"span--1\">\n                      <GroupMultiSelect\n                        label={translated.districtsKieze}\n                        placeholder={translated.allDistrictsKieze}\n                        groups={[\n                          {\n                            title: translated.savedKieze,\n                            info: kiezradars.length === 0 ? translated.createKiez : null,\n                            choices: kiezradars.map((choice) => ({\n                              value: choice.name,\n                              name: choice.name\n                            }))\n                          },\n                          {\n                            title: translated.districts,\n                            choices: districts.map((choice) => ({\n                              value: choice.name,\n                              name: choice.name\n                            }))\n                          }\n                        ]}\n                        values={[...filters.kiezradars, ...filters.districts]}\n                        onChange={(choices) => {\n                          const selectedKiezradars = choices.filter((choice) =>\n                            kiezradars.some((kiezradar) => kiezradar.name === choice)\n                          )\n\n                          const selectedDistricts = choices.filter((choice) =>\n                            districts.some((district) => district.name === choice)\n                          )\n\n                          const hasKiezradarsChanged =\n                            selectedKiezradars.length !== filters.kiezradars.length ||\n                            selectedKiezradars.some((k) => !filters.kiezradars.includes(k))\n\n                          const hasDistrictsChanged =\n                            selectedDistricts.length !== filters.districts.length ||\n                            selectedDistricts.some((d) => !filters.districts.includes(d))\n\n                          if (hasKiezradarsChanged) {\n                            onFilterChange('kiezradars', selectedKiezradars)\n                          }\n\n                          if (hasDistrictsChanged) {\n                            onFilterChange('districts', selectedDistricts)\n                          }\n                        }}\n                      />\n                    </div>\n                    <div className=\"span--1\">\n                      <MultiSelect\n                        label={translated.topics}\n                        placeholder={translated.allTopics}\n                        choices={topicChoices.map((topic) => ({ value: topic.code, name: topic.name }))}\n                        values={filters.topics}\n                        onChange={(choices) => onFilterChange('topics', choices)}\n                      />\n                    </div>\n                  </div>\n                  {expandFilters && (\n                    <div ref={filtersContainerRef} tabIndex=\"-1\">\n                      <div className=\"flexgrid grid--2\">\n                        <div className=\"span--1\">\n                          <MultiSelect\n                            label={translated.participations}\n                            placeholder={translated.allParticipation}\n                            choices={participationChoices.map((choice) => ({ value: choice.value, name: choice.name }))}\n                            onChange={(choices) => onFilterChange('participations', choices)}\n                            values={filters.participations}\n                          />\n                        </div>\n                        <div className=\"span--1\">\n                          <MultiSelect\n                            label={translated.projectState}\n                            choices={Object.entries(statusNames).map(([key, choice]) => ({ value: key, name: choice }))}\n                            values={filters.projectState}\n                            onChange={(choices) => onFilterChange('projectState', choices)}\n                            placeholder={translated.projectStatePlaceholder}\n                          />\n                        </div>\n                      </div>\n                      <TypeaheadField\n                        typeaheadHeading={translated.organisation}\n                        uniqueId=\"organisation-typeahead-id\"\n                        onTypeaheadChange={(choice) => onFilterChange('organisation', choice)}\n                        typeaheadOptions={organisations.map((organisation) => organisation.name)}\n                        typeaheadSelected={filters.organisation}\n                        multipleBoolean\n                      />\n                      <fieldset className=\"control-bar__checkboxes\">\n                        <legend className=\"control-bar__checkboxes-legend\">{translated.onlyShow}</legend>\n                        <div className=\"form-check form-check-inline control-bar__form-check-inline\">\n                          <input\n                            id=\"plans\"\n                            className=\"form-check-input control-bar__check-input\"\n                            type=\"checkbox\"\n                            checked={filters.plansOnly}\n                            onChange={() => onFilterChange('plansOnly', !filters.plansOnly)}\n                          />\n                          <label className=\"form-check-label\" htmlFor=\"plans\">\n                            {translated.plans}\n                          </label>\n                        </div>\n                      </fieldset>\n                    </div>\n                  )}\n                  <button\n                    onClick={() => setExpandFilters(!expandFilters)}\n                    className=\"control-bar__filter-btn\"\n                    aria-controls=\"filters\"\n                    aria-expanded={expandFilters}\n                    type=\"button\"\n                  >\n                    <span className={'fa fa-chevron-' + (expandFilters ? 'up' : 'down')} aria-hidden=\"true\" />&nbsp;\n                    {expandFilters ? translated.hideFilters : translated.showFilters}\n                  </button>\n                </div>\n              </fieldset>\n              <div className=\"form-actions\">\n                <div className=\"form-actions__left\">\n                  <button\n                    type=\"button\"\n                    className=\"link\"\n                    onClick={handleReset}\n                  >\n                    {translated.reset}\n                  </button>\n                </div>\n                <div className=\"form-actions__right\">\n                  <button\n                    className=\"button control-bar__action-btn\"\n                    type=\"submit\"\n                  >\n                    {translated.button}\n                  </button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </form>\n\n      {alteredFilters.length\n        ? (\n          <div className={hasContainer && 'container'}>\n            <div className=\"control-bar__bottom--projects\">\n              <ControlBarFilterPills\n                filters={alteredFilters}\n                onRemove={(type, value) => {\n                  const newFilters = { ...filters }\n\n                  if (Array.isArray(newFilters[type])) {\n                    newFilters[type] = newFilters[type].filter(f => f !== value)\n                  } else {\n                    newFilters[type] = initialState[type]\n                  }\n\n                  // If no more value for projectState filter, this avoids showing 0 results\n                  if (newFilters.projectState.length === 0) {\n                    newFilters.projectState = ['active', 'future']\n                  }\n\n                  setFilters(newFilters)\n                  onFiltered(newFilters)\n                  setParams(newFilters)\n                }}\n              />\n              {!isFiltersInitialState && (\n                <SaveSearchProfile\n                  districts={districts}\n                  organisations={organisations}\n                  topicChoices={topicChoices}\n                  participationChoices={participationChoices}\n                  projectStatus={projectStatus}\n                  kiezradars={kiezradars}\n                  searchProfile={searchProfile}\n                  searchProfilesApiUrl={searchProfilesApiUrl}\n                  searchProfilesCount={searchProfilesCount}\n                  isAuthenticated={isAuthenticated}\n                  appliedFilters={appliedFilters}\n                  onSearchProfileCreate={handleCreateSearchProfile}\n                />\n              )}\n            </div>\n          </div>\n          )\n        : null}\n    </div>\n  )\n}\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar boolean_within_1 = __importDefault(require(\"@turf/boolean-within\"));\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Creates a {@link Point} grid from a bounding box, {@link FeatureCollection} or {@link Feature}.\n *\n * @name pointGrid\n * @param {Array<number>} bbox extent in [minX, minY, maxX, maxY] order\n * @param {number} cellSide the distance between points, in units\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] used in calculating cellSide, can be degrees, radians, miles, or kilometers\n * @param {Feature<Polygon|MultiPolygon>} [options.mask] if passed a Polygon or MultiPolygon, the grid Points will be created only inside it\n * @param {Object} [options.properties={}] passed to each point of the grid\n * @returns {FeatureCollection<Point>} grid of points\n * @example\n * var extent = [-70.823364, -33.553984, -70.473175, -33.302986];\n * var cellSide = 3;\n * var options = {units: 'miles'};\n *\n * var grid = turf.pointGrid(extent, cellSide, options);\n *\n * //addToMap\n * var addToMap = [grid];\n */\nfunction pointGrid(bbox, cellSide, options) {\n    if (options === void 0) { options = {}; }\n    // Default parameters\n    if (options.mask && !options.units)\n        options.units = \"kilometers\";\n    // Containers\n    var results = [];\n    // Typescript handles the Type Validation\n    // if (cellSide === null || cellSide === undefined) throw new Error('cellSide is required');\n    // if (!isNumber(cellSide)) throw new Error('cellSide is invalid');\n    // if (!bbox) throw new Error('bbox is required');\n    // if (!Array.isArray(bbox)) throw new Error('bbox must be array');\n    // if (bbox.length !== 4) throw new Error('bbox must contain 4 numbers');\n    // if (mask && ['Polygon', 'MultiPolygon'].indexOf(getType(mask)) === -1) throw new Error('options.mask must be a (Multi)Polygon');\n    var west = bbox[0];\n    var south = bbox[1];\n    var east = bbox[2];\n    var north = bbox[3];\n    var xFraction = cellSide / distance_1.default([west, south], [east, south], options);\n    var cellWidth = xFraction * (east - west);\n    var yFraction = cellSide / distance_1.default([west, south], [west, north], options);\n    var cellHeight = yFraction * (north - south);\n    var bboxWidth = east - west;\n    var bboxHeight = north - south;\n    var columns = Math.floor(bboxWidth / cellWidth);\n    var rows = Math.floor(bboxHeight / cellHeight);\n    // adjust origin of the grid\n    var deltaX = (bboxWidth - columns * cellWidth) / 2;\n    var deltaY = (bboxHeight - rows * cellHeight) / 2;\n    var currentX = west + deltaX;\n    while (currentX <= east) {\n        var currentY = south + deltaY;\n        while (currentY <= north) {\n            var cellPt = helpers_1.point([currentX, currentY], options.properties);\n            if (options.mask) {\n                if (boolean_within_1.default(cellPt, options.mask))\n                    results.push(cellPt);\n            }\n            else {\n                results.push(cellPt);\n            }\n            currentY += cellHeight;\n        }\n        currentX += cellWidth;\n    }\n    return helpers_1.featureCollection(results);\n}\nexports.default = pointGrid;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar intersect_1 = __importDefault(require(\"@turf/intersect\"));\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a bounding box and the diameter of the cell and returns a {@link FeatureCollection} of flat-topped\n * hexagons or triangles ({@link Polygon} features) aligned in an \"odd-q\" vertical grid as\n * described in [Hexagonal Grids](http://www.redblobgames.com/grids/hexagons/).\n *\n * @name hexGrid\n * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @param {number} cellSide length of the side of the the hexagons or triangles, in units. It will also coincide with the\n * radius of the circumcircle of the hexagons.\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] used in calculating cell size, can be degrees, radians, miles, or kilometers\n * @param {Object} [options.properties={}] passed to each hexagon or triangle of the grid\n * @param {Feature<Polygon>} [options.mask] if passed a Polygon or MultiPolygon, the grid Points will be created only inside it\n * @param {boolean} [options.triangles=false] whether to return as triangles instead of hexagons\n * @returns {FeatureCollection<Polygon>} a hexagonal grid\n * @example\n * var bbox = [-96,31,-84,40];\n * var cellSide = 50;\n * var options = {units: 'miles'};\n *\n * var hexgrid = turf.hexGrid(bbox, cellSide, options);\n *\n * //addToMap\n * var addToMap = [hexgrid];\n */\nfunction hexGrid(bbox, cellSide, options) {\n    if (options === void 0) { options = {}; }\n    // Issue => https://github.com/Turfjs/turf/issues/1284\n    var clonedProperties = JSON.stringify(options.properties || {});\n    var west = bbox[0], south = bbox[1], east = bbox[2], north = bbox[3];\n    var centerY = (south + north) / 2;\n    var centerX = (west + east) / 2;\n    // https://github.com/Turfjs/turf/issues/758\n    var xFraction = (cellSide * 2) / distance_1.default([west, centerY], [east, centerY], options);\n    var cellWidth = xFraction * (east - west);\n    var yFraction = (cellSide * 2) / distance_1.default([centerX, south], [centerX, north], options);\n    var cellHeight = yFraction * (north - south);\n    var radius = cellWidth / 2;\n    var hex_width = radius * 2;\n    var hex_height = (Math.sqrt(3) / 2) * cellHeight;\n    var box_width = east - west;\n    var box_height = north - south;\n    var x_interval = (3 / 4) * hex_width;\n    var y_interval = hex_height;\n    // adjust box_width so all hexagons will be inside the bbox\n    var x_span = (box_width - hex_width) / (hex_width - radius / 2);\n    var x_count = Math.floor(x_span);\n    var x_adjust = (x_count * x_interval - radius / 2 - box_width) / 2 -\n        radius / 2 +\n        x_interval / 2;\n    // adjust box_height so all hexagons will be inside the bbox\n    var y_count = Math.floor((box_height - hex_height) / hex_height);\n    var y_adjust = (box_height - y_count * hex_height) / 2;\n    var hasOffsetY = y_count * hex_height - box_height > hex_height / 2;\n    if (hasOffsetY) {\n        y_adjust -= hex_height / 4;\n    }\n    // Precompute cosines and sines of angles used in hexagon creation for performance gain\n    var cosines = [];\n    var sines = [];\n    for (var i = 0; i < 6; i++) {\n        var angle = ((2 * Math.PI) / 6) * i;\n        cosines.push(Math.cos(angle));\n        sines.push(Math.sin(angle));\n    }\n    var results = [];\n    for (var x = 0; x <= x_count; x++) {\n        for (var y = 0; y <= y_count; y++) {\n            var isOdd = x % 2 === 1;\n            if (y === 0 && isOdd)\n                continue;\n            if (y === 0 && hasOffsetY)\n                continue;\n            var center_x = x * x_interval + west - x_adjust;\n            var center_y = y * y_interval + south + y_adjust;\n            if (isOdd) {\n                center_y -= hex_height / 2;\n            }\n            if (options.triangles === true) {\n                hexTriangles([center_x, center_y], cellWidth / 2, cellHeight / 2, JSON.parse(clonedProperties), cosines, sines).forEach(function (triangle) {\n                    if (options.mask) {\n                        if (intersect_1.default(options.mask, triangle))\n                            results.push(triangle);\n                    }\n                    else {\n                        results.push(triangle);\n                    }\n                });\n            }\n            else {\n                var hex = hexagon([center_x, center_y], cellWidth / 2, cellHeight / 2, JSON.parse(clonedProperties), cosines, sines);\n                if (options.mask) {\n                    if (intersect_1.default(options.mask, hex))\n                        results.push(hex);\n                }\n                else {\n                    results.push(hex);\n                }\n            }\n        }\n    }\n    return helpers_1.featureCollection(results);\n}\n/**\n * Creates hexagon\n *\n * @private\n * @param {Array<number>} center of the hexagon\n * @param {number} rx half hexagon width\n * @param {number} ry half hexagon height\n * @param {Object} properties passed to each hexagon\n * @param {Array<number>} cosines precomputed\n * @param {Array<number>} sines precomputed\n * @returns {Feature<Polygon>} hexagon\n */\nfunction hexagon(center, rx, ry, properties, cosines, sines) {\n    var vertices = [];\n    for (var i = 0; i < 6; i++) {\n        var x = center[0] + rx * cosines[i];\n        var y = center[1] + ry * sines[i];\n        vertices.push([x, y]);\n    }\n    //first and last vertex must be the same\n    vertices.push(vertices[0].slice());\n    return helpers_1.polygon([vertices], properties);\n}\n/**\n * Creates triangles composing an hexagon\n *\n * @private\n * @param {Array<number>} center of the hexagon\n * @param {number} rx half triangle width\n * @param {number} ry half triangle height\n * @param {Object} properties passed to each triangle\n * @param {Array<number>} cosines precomputed\n * @param {Array<number>} sines precomputed\n * @returns {Array<Feature<Polygon>>} triangles\n */\nfunction hexTriangles(center, rx, ry, properties, cosines, sines) {\n    var triangles = [];\n    for (var i = 0; i < 6; i++) {\n        var vertices = [];\n        vertices.push(center);\n        vertices.push([center[0] + rx * cosines[i], center[1] + ry * sines[i]]);\n        vertices.push([\n            center[0] + rx * cosines[(i + 1) % 6],\n            center[1] + ry * sines[(i + 1) % 6],\n        ]);\n        vertices.push(center);\n        triangles.push(helpers_1.polygon([vertices], properties));\n    }\n    return triangles;\n}\nexports.default = hexGrid;\n","'use strict';\n\nvar invariant = require('@turf/invariant');\n\n/**\n * Takes a triangular plane as a {@link Polygon}\n * and a {@link Point} within that triangle and returns the z-value\n * at that point. The Polygon should have properties `a`, `b`, and `c`\n * that define the values at its three corners. Alternatively, the z-values\n * of each triangle point can be provided by their respective 3rd coordinate\n * if their values are not provided as properties.\n *\n * @name planepoint\n * @param {Coord} point the Point for which a z-value will be calculated\n * @param {Feature<Polygon>} triangle a Polygon feature with three vertices\n * @returns {number} the z-value for `interpolatedPoint`\n * @example\n * var point = turf.point([-75.3221, 39.529]);\n * // \"a\", \"b\", and \"c\" values represent the values of the coordinates in order.\n * var triangle = turf.polygon([[\n *   [-75.1221, 39.57],\n *   [-75.58, 39.18],\n *   [-75.97, 39.86],\n *   [-75.1221, 39.57]\n * ]], {\n *   \"a\": 11,\n *   \"b\": 122,\n *   \"c\": 44\n * });\n *\n * var zValue = turf.planepoint(point, triangle);\n * point.properties.zValue = zValue;\n *\n * //addToMap\n * var addToMap = [triangle, point];\n */\nfunction planepoint(point, triangle) {\n  // Normalize input\n  var coord = invariant.getCoord(point);\n  var geom = invariant.getGeom(triangle);\n  var coords = geom.coordinates;\n  var outer = coords[0];\n  if (outer.length < 4)\n    throw new Error(\"OuterRing of a Polygon must have 4 or more Positions.\");\n  var properties = triangle.properties || {};\n  var a = properties.a;\n  var b = properties.b;\n  var c = properties.c;\n\n  // Planepoint\n  var x = coord[0];\n  var y = coord[1];\n  var x1 = outer[0][0];\n  var y1 = outer[0][1];\n  var z1 = a !== undefined ? a : outer[0][2];\n  var x2 = outer[1][0];\n  var y2 = outer[1][1];\n  var z2 = b !== undefined ? b : outer[1][2];\n  var x3 = outer[2][0];\n  var y3 = outer[2][1];\n  var z3 = c !== undefined ? c : outer[2][2];\n  var z =\n    (z3 * (x - x1) * (y - y2) +\n      z1 * (x - x2) * (y - y3) +\n      z2 * (x - x3) * (y - y1) -\n      z2 * (x - x1) * (y - y3) -\n      z3 * (x - x2) * (y - y1) -\n      z1 * (x - x3) * (y - y2)) /\n    ((x - x1) * (y - y2) +\n      (x - x2) * (y - y3) +\n      (x - x3) * (y - y1) -\n      (x - x1) * (y - y3) -\n      (x - x2) * (y - y1) -\n      (x - x3) * (y - y2));\n\n  return z;\n}\n\nmodule.exports = planepoint;\nmodule.exports.default = planepoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar line_overlap_1 = __importDefault(require(\"@turf/line-overlap\"));\nvar line_intersect_1 = __importDefault(require(\"@turf/line-intersect\"));\nvar geojson_equality_1 = __importDefault(require(\"geojson-equality\"));\n/**\n * Compares two geometries of the same dimension and returns true if their intersection set results in a geometry\n * different from both but of the same dimension. It applies to Polygon/Polygon, LineString/LineString,\n * Multipoint/Multipoint, MultiLineString/MultiLineString and MultiPolygon/MultiPolygon.\n *\n * In other words, it returns true if the two geometries overlap, provided that neither completely contains the other.\n *\n * @name booleanOverlap\n * @param  {Geometry|Feature<LineString|MultiLineString|Polygon|MultiPolygon>} feature1 input\n * @param  {Geometry|Feature<LineString|MultiLineString|Polygon|MultiPolygon>} feature2 input\n * @returns {boolean} true/false\n * @example\n * var poly1 = turf.polygon([[[0,0],[0,5],[5,5],[5,0],[0,0]]]);\n * var poly2 = turf.polygon([[[1,1],[1,6],[6,6],[6,1],[1,1]]]);\n * var poly3 = turf.polygon([[[10,10],[10,15],[15,15],[15,10],[10,10]]]);\n *\n * turf.booleanOverlap(poly1, poly2)\n * //=true\n * turf.booleanOverlap(poly2, poly3)\n * //=false\n */\nfunction booleanOverlap(feature1, feature2) {\n    var geom1 = invariant_1.getGeom(feature1);\n    var geom2 = invariant_1.getGeom(feature2);\n    var type1 = geom1.type;\n    var type2 = geom2.type;\n    if ((type1 === \"MultiPoint\" && type2 !== \"MultiPoint\") ||\n        ((type1 === \"LineString\" || type1 === \"MultiLineString\") &&\n            type2 !== \"LineString\" &&\n            type2 !== \"MultiLineString\") ||\n        ((type1 === \"Polygon\" || type1 === \"MultiPolygon\") &&\n            type2 !== \"Polygon\" &&\n            type2 !== \"MultiPolygon\")) {\n        throw new Error(\"features must be of the same type\");\n    }\n    if (type1 === \"Point\")\n        throw new Error(\"Point geometry not supported\");\n    // features must be not equal\n    var equality = new geojson_equality_1.default({ precision: 6 });\n    if (equality.compare(feature1, feature2))\n        return false;\n    var overlap = 0;\n    switch (type1) {\n        case \"MultiPoint\":\n            for (var i = 0; i < geom1.coordinates.length; i++) {\n                for (var j = 0; j < geom2.coordinates.length; j++) {\n                    var coord1 = geom1.coordinates[i];\n                    var coord2 = geom2.coordinates[j];\n                    if (coord1[0] === coord2[0] && coord1[1] === coord2[1]) {\n                        return true;\n                    }\n                }\n            }\n            return false;\n        case \"LineString\":\n        case \"MultiLineString\":\n            meta_1.segmentEach(feature1, function (segment1) {\n                meta_1.segmentEach(feature2, function (segment2) {\n                    if (line_overlap_1.default(segment1, segment2).features.length)\n                        overlap++;\n                });\n            });\n            break;\n        case \"Polygon\":\n        case \"MultiPolygon\":\n            meta_1.segmentEach(feature1, function (segment1) {\n                meta_1.segmentEach(feature2, function (segment2) {\n                    if (line_intersect_1.default(segment1, segment2).features.length)\n                        overlap++;\n                });\n            });\n            break;\n    }\n    return overlap > 0;\n}\nexports.default = booleanOverlap;\n","'use strict';\n\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\nvar invariant = require('@turf/invariant');\nvar clone = require('@turf/clone');\nvar rhumbDestination = require('@turf/rhumb-destination');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);\nvar rhumbDestination__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDestination);\n\n/**\n * Moves any geojson Feature or Geometry of a specified distance along a Rhumb Line\n * on the provided direction angle.\n *\n * @name transformTranslate\n * @param {GeoJSON} geojson object to be translated\n * @param {number} distance length of the motion; negative values determine motion in opposite direction\n * @param {number} direction of the motion; angle from North in decimal degrees, positive clockwise\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] in which `distance` will be express; miles, kilometers, degrees, or radians\n * @param {number} [options.zTranslation=0] length of the vertical motion, same unit of distance\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} the translated GeoJSON object\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var translatedPoly = turf.transformTranslate(poly, 100, 35);\n *\n * //addToMap\n * var addToMap = [poly, translatedPoly];\n * translatedPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */\nfunction transformTranslate(geojson, distance, direction, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var units = options.units;\n  var zTranslation = options.zTranslation;\n  var mutate = options.mutate;\n\n  // Input validation\n  if (!geojson) throw new Error(\"geojson is required\");\n  if (distance === undefined || distance === null || isNaN(distance))\n    throw new Error(\"distance is required\");\n  if (zTranslation && typeof zTranslation !== \"number\" && isNaN(zTranslation))\n    throw new Error(\"zTranslation is not a number\");\n\n  // Shortcut no-motion\n  zTranslation = zTranslation !== undefined ? zTranslation : 0;\n  if (distance === 0 && zTranslation === 0) return geojson;\n\n  if (direction === undefined || direction === null || isNaN(direction))\n    throw new Error(\"direction is required\");\n\n  // Invert with negative distances\n  if (distance < 0) {\n    distance = -distance;\n    direction = direction + 180;\n  }\n\n  // Clone geojson to avoid side effects\n  if (mutate === false || mutate === undefined) geojson = clone__default['default'](geojson);\n\n  // Translate each coordinate\n  meta.coordEach(geojson, function (pointCoords) {\n    var newCoords = invariant.getCoords(\n      rhumbDestination__default['default'](pointCoords, distance, direction, { units: units })\n    );\n    pointCoords[0] = newCoords[0];\n    pointCoords[1] = newCoords[1];\n    if (zTranslation && pointCoords.length === 3)\n      pointCoords[2] += zTranslation;\n  });\n  return geojson;\n}\n\nmodule.exports = transformTranslate;\nmodule.exports.default = transformTranslate;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar clone_1 = __importDefault(require(\"@turf/clone\"));\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\nvar topojson_client_1 = require(\"topojson-client\");\nvar topojson_server_1 = require(\"topojson-server\");\n/**\n * Dissolves all overlapping (Multi)Polygon\n *\n * @param {FeatureCollection<Polygon|MultiPolygon>} geojson Polygons to dissolve\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.mutate=false] Prevent input mutation\n * @returns {Feature<Polygon|MultiPolygon>} Dissolved Polygons\n */\nfunction polygonDissolve(geojson, options) {\n    if (options === void 0) { options = {}; }\n    // Validation\n    if (invariant_1.getType(geojson) !== \"FeatureCollection\") {\n        throw new Error(\"geojson must be a FeatureCollection\");\n    }\n    if (!geojson.features.length) {\n        throw new Error(\"geojson is empty\");\n    }\n    // Clone geojson to avoid side effects\n    // Topojson modifies in place, so we need to deep clone first\n    if (options.mutate === false || options.mutate === undefined) {\n        geojson = clone_1.default(geojson);\n    }\n    var geoms = [];\n    meta_1.flattenEach(geojson, function (feature) {\n        geoms.push(feature.geometry);\n    });\n    var topo = topojson_server_1.topology({ geoms: helpers_1.geometryCollection(geoms).geometry });\n    var merged = topojson_client_1.merge(topo, topo.objects.geoms.geometries);\n    return merged;\n}\nexports.default = polygonDissolve;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\nvar helpers_1 = require(\"@turf/helpers\");\n//http://en.wikipedia.org/wiki/Haversine_formula\n//http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Calculates the distance between two {@link Point|points} in degrees, radians, miles, or kilometers.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name distance\n * @param {Coord | Point} from origin point or coordinate\n * @param {Coord | Point} to destination point or coordinate\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.distance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction distance(from, to, options) {\n    if (options === void 0) { options = {}; }\n    var coordinates1 = invariant_1.getCoord(from);\n    var coordinates2 = invariant_1.getCoord(to);\n    var dLat = helpers_1.degreesToRadians(coordinates2[1] - coordinates1[1]);\n    var dLon = helpers_1.degreesToRadians(coordinates2[0] - coordinates1[0]);\n    var lat1 = helpers_1.degreesToRadians(coordinates1[1]);\n    var lat2 = helpers_1.degreesToRadians(coordinates2[1]);\n    var a = Math.pow(Math.sin(dLat / 2), 2) +\n        Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2);\n    return helpers_1.radiansToLength(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)), options.units);\n}\nexports.default = distance;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n    var argIndex = 0;\n    var message = 'Warning: ' +\n      format.replace(/%s/g, function() {\n        return args[argIndex++];\n      });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  }\n\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n          '`warning(condition, format, ...args)` requires a warning ' +\n          'message argument'\n      );\n    }\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://en.wikipedia.org/wiki/Rhumb_line\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Calculates the distance along a rhumb line between two {@link Point|points} in degrees, radians,\n * miles, or kilometers.\n *\n * @name rhumbDistance\n * @param {Coord} from origin point\n * @param {Coord} to destination point\n * @param {Object} [options] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be degrees, radians, miles, or kilometers\n * @returns {number} distance between the two points\n * @example\n * var from = turf.point([-75.343, 39.984]);\n * var to = turf.point([-75.534, 39.123]);\n * var options = {units: 'miles'};\n *\n * var distance = turf.rhumbDistance(from, to, options);\n *\n * //addToMap\n * var addToMap = [from, to];\n * from.properties.distance = distance;\n * to.properties.distance = distance;\n */\nfunction rhumbDistance(from, to, options) {\n    if (options === void 0) { options = {}; }\n    var origin = invariant_1.getCoord(from);\n    var destination = invariant_1.getCoord(to);\n    // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n    // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n    destination[0] +=\n        destination[0] - origin[0] > 180\n            ? -360\n            : origin[0] - destination[0] > 180\n                ? 360\n                : 0;\n    var distanceInMeters = calculateRhumbDistance(origin, destination);\n    var distance = helpers_1.convertLength(distanceInMeters, \"meters\", options.units);\n    return distance;\n}\n/**\n * Returns the distance travelling from ‘this’ point to destination point along a rhumb line.\n * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js\n *\n * @private\n * @param   {Array<number>} origin point.\n * @param   {Array<number>} destination point.\n * @param   {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {number} Distance in km between this point and destination point (same units as radius).\n *\n * @example\n *     var p1 = new LatLon(51.127, 1.338);\n *     var p2 = new LatLon(50.964, 1.853);\n *     var d = p1.distanceTo(p2); // 40.31 km\n */\nfunction calculateRhumbDistance(origin, destination, radius) {\n    // φ => phi\n    // λ => lambda\n    // ψ => psi\n    // Δ => Delta\n    // δ => delta\n    // θ => theta\n    radius = radius === undefined ? helpers_1.earthRadius : Number(radius);\n    // see www.edwilliams.org/avform.htm#Rhumb\n    var R = radius;\n    var phi1 = (origin[1] * Math.PI) / 180;\n    var phi2 = (destination[1] * Math.PI) / 180;\n    var DeltaPhi = phi2 - phi1;\n    var DeltaLambda = (Math.abs(destination[0] - origin[0]) * Math.PI) / 180;\n    // if dLon over 180° take shorter rhumb line across the anti-meridian:\n    if (DeltaLambda > Math.PI) {\n        DeltaLambda -= 2 * Math.PI;\n    }\n    // on Mercator projection, longitude distances shrink by latitude; q is the 'stretch factor'\n    // q becomes ill-conditioned along E-W line (0/0); use empirical tolerance to avoid it\n    var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n    var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1);\n    // distance is pythagoras on 'stretched' Mercator projection\n    var delta = Math.sqrt(DeltaPhi * DeltaPhi + q * q * DeltaLambda * DeltaLambda); // angular distance in radians\n    var dist = delta * R;\n    return dist;\n}\nexports.default = rhumbDistance;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","import React from 'react'\nimport django from 'django'\nimport ProjectTile from './ProjectTile'\nimport { classNames } from 'adhocracy4'\nimport Spinner from '../contrib/Spinner'\n\nconst translated = {\n  showCompletedProjectsHeading: django.gettext('Show completed projects too?'),\n  showCompletedProjectsBody: django.gettext('Expand your search to view completed projects and discover more possibilities.'),\n  showCompletedProjectsButton: django.gettext('Show completed'),\n  showingProjects: django.ngettext(\n    'Showing %s project',\n    'Showing %s projects',\n    0\n  ),\n  noProjectsFound: django.gettext('No projects found')\n}\n\nconst ProjectsList = ({\n  projects: initialProjects,\n  projectsUrl,\n  topicChoices,\n  isHorizontal,\n  showMap,\n  searchCompletedProjects,\n  showSearchCompletedProjectsButton,\n  visibleProjects\n}) => {\n  const [projects, setProjects] = React.useState(initialProjects || [])\n  const [loading, setLoading] = React.useState(!initialProjects)\n  const [announcement, setAnnouncement] = React.useState('')\n\n  React.useEffect(() => {\n    setProjects(initialProjects)\n  }, [initialProjects])\n\n  React.useEffect(() => {\n    if (!projectsUrl) return\n\n    const fetchData = async () => {\n      try {\n        setLoading(true)\n        const response = await fetch(projectsUrl)\n        if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)\n\n        const data = await response.json()\n        setProjects(data)\n      } catch (error) {\n        console.error('Failed to fetch projects:', error)\n        setProjects([])\n      } finally {\n        setLoading(false)\n      }\n    }\n\n    fetchData()\n  }, [projectsUrl])\n\n  React.useEffect(() => {\n    if (!loading) {\n      // When map is shown, use visibleProjects. When map is hidden, use all projects\n      const projectsToShow = showMap ? (visibleProjects || []) : projects\n      if (projectsToShow.length > 0) {\n        setAnnouncement(django.interpolate(translated.showingProjects, [projectsToShow.length]))\n      } else {\n        setAnnouncement(translated.noProjectsFound)\n      }\n    }\n  }, [projects, visibleProjects, loading, showMap])\n\n  React.useEffect(() => {\n    if (initialProjects !== undefined) {\n      const count = initialProjects.length\n      const message = count > 0\n        ? django.interpolate(django.ngettext(\n          'Showing %s project',\n          'Showing %s projects',\n          count\n        ), [count])\n        : django.gettext('No projects found')\n      setAnnouncement(message)\n    }\n  }, [initialProjects])\n\n  if (loading) return <Spinner />\n\n  // When map is shown, show visible projects (could be empty)\n  // When map is hidden, show all projects\n  const displayProjects = showMap ? (visibleProjects || []) : projects\n\n  return (\n    <>\n      <div\n        aria-live=\"polite\"\n        aria-atomic=\"true\"\n        className=\"sr-only\"\n        role=\"status\"\n      >\n        {announcement}\n      </div>\n\n      <ul className={classNames('projects-list', isHorizontal ? 'projects-list--horizontal' : 'projects-list--vertical')}>\n        {\n          displayProjects.length > 0 &&\n          displayProjects.map((project, index) => (\n            <li key={'project-' + project.id + '-' + index}>\n              <ProjectTile\n                project={project}\n                isHorizontal={isHorizontal}\n                topicChoices={topicChoices}\n              />\n            </li>\n          ))\n        }\n        {\n          showSearchCompletedProjectsButton && (\n            <li key=\"show-completed-projects\">\n              <h3 className=\"projects-list__showCompletedHeading\">{translated.showCompletedProjectsHeading}</h3>\n              <p>\n                {translated.showCompletedProjectsBody}\n              </p>\n              <button\n                onClick={searchCompletedProjects}\n                className=\"button button--light\"\n                type=\"button\"\n              >\n                {translated.showCompletedProjectsButton}\n              </button>\n            </li>\n          )\n        }\n      </ul>\n    </>\n  )\n}\n\nexport default ProjectsList\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\nvar clone = require('@turf/clone');\nvar booleanClockwise = require('@turf/boolean-clockwise');\nvar meta = require('@turf/meta');\nvar invariant = require('@turf/invariant');\nvar helpers = require('@turf/helpers');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);\nvar booleanClockwise__default = /*#__PURE__*/_interopDefaultLegacy(booleanClockwise);\n\n/**\n * Rewind {@link LineString|(Multi)LineString} or {@link Polygon|(Multi)Polygon} outer ring counterclockwise and inner rings clockwise (Uses {@link http://en.wikipedia.org/wiki/Shoelace_formula|Shoelace Formula}).\n *\n * @name rewind\n * @param {GeoJSON} geojson input GeoJSON Polygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.reverse=false] enable reverse winding\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} rewind Polygon\n * @example\n * var polygon = turf.polygon([[[121, -29], [138, -29], [138, -18], [121, -18], [121, -29]]]);\n *\n * var rewind = turf.rewind(polygon);\n *\n * //addToMap\n * var addToMap = [rewind];\n */\nfunction rewind(geojson, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var reverse = options.reverse || false;\n  var mutate = options.mutate || false;\n\n  // validation\n  if (!geojson) throw new Error(\"<geojson> is required\");\n  if (typeof reverse !== \"boolean\")\n    throw new Error(\"<reverse> must be a boolean\");\n  if (typeof mutate !== \"boolean\")\n    throw new Error(\"<mutate> must be a boolean\");\n\n  // prevent input mutation\n  if (mutate === false) geojson = clone__default['default'](geojson);\n\n  // Support Feature Collection or Geometry Collection\n  var results = [];\n  switch (geojson.type) {\n    case \"GeometryCollection\":\n      meta.geomEach(geojson, function (geometry) {\n        rewindFeature(geometry, reverse);\n      });\n      return geojson;\n    case \"FeatureCollection\":\n      meta.featureEach(geojson, function (feature) {\n        meta.featureEach(rewindFeature(feature, reverse), function (result) {\n          results.push(result);\n        });\n      });\n      return helpers.featureCollection(results);\n  }\n  // Support Feature or Geometry Objects\n  return rewindFeature(geojson, reverse);\n}\n\n/**\n * Rewind\n *\n * @private\n * @param {Geometry|Feature<any>} geojson Geometry or Feature\n * @param {Boolean} [reverse=false] enable reverse winding\n * @returns {Geometry|Feature<any>} rewind Geometry or Feature\n */\nfunction rewindFeature(geojson, reverse) {\n  var type = geojson.type === \"Feature\" ? geojson.geometry.type : geojson.type;\n\n  // Support all GeoJSON Geometry Objects\n  switch (type) {\n    case \"GeometryCollection\":\n      meta.geomEach(geojson, function (geometry) {\n        rewindFeature(geometry, reverse);\n      });\n      return geojson;\n    case \"LineString\":\n      rewindLineString(invariant.getCoords(geojson), reverse);\n      return geojson;\n    case \"Polygon\":\n      rewindPolygon(invariant.getCoords(geojson), reverse);\n      return geojson;\n    case \"MultiLineString\":\n      invariant.getCoords(geojson).forEach(function (lineCoords) {\n        rewindLineString(lineCoords, reverse);\n      });\n      return geojson;\n    case \"MultiPolygon\":\n      invariant.getCoords(geojson).forEach(function (lineCoords) {\n        rewindPolygon(lineCoords, reverse);\n      });\n      return geojson;\n    case \"Point\":\n    case \"MultiPoint\":\n      return geojson;\n  }\n}\n\n/**\n * Rewind LineString - outer ring clockwise\n *\n * @private\n * @param {Array<Array<number>>} coords GeoJSON LineString geometry coordinates\n * @param {Boolean} [reverse=false] enable reverse winding\n * @returns {void} mutates coordinates\n */\nfunction rewindLineString(coords, reverse) {\n  if (booleanClockwise__default['default'](coords) === reverse) coords.reverse();\n}\n\n/**\n * Rewind Polygon - outer ring counterclockwise and inner rings clockwise.\n *\n * @private\n * @param {Array<Array<Array<number>>>} coords GeoJSON Polygon geometry coordinates\n * @param {Boolean} [reverse=false] enable reverse winding\n * @returns {void} mutates coordinates\n */\nfunction rewindPolygon(coords, reverse) {\n  // outer ring\n  if (booleanClockwise__default['default'](coords[0]) !== reverse) {\n    coords[0].reverse();\n  }\n  // inner rings\n  for (var i = 1; i < coords.length; i++) {\n    if (booleanClockwise__default['default'](coords[i]) === reverse) {\n      coords[i].reverse();\n    }\n  }\n}\n\nmodule.exports = rewind;\nmodule.exports.default = rewind;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\nvar length = require('@turf/length');\nvar lineSliceAlong = require('@turf/line-slice-along');\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar length__default = /*#__PURE__*/_interopDefaultLegacy(length);\nvar lineSliceAlong__default = /*#__PURE__*/_interopDefaultLegacy(lineSliceAlong);\n\n/**\n * Divides a {@link LineString} into chunks of a specified length.\n * If the line is shorter than the segment length then the original line is returned.\n *\n * @name lineChunk\n * @param {FeatureCollection|Geometry|Feature<LineString|MultiLineString>} geojson the lines to split\n * @param {number} segmentLength how long to make each segment\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] units can be degrees, radians, miles, or kilometers\n * @param {boolean} [options.reverse=false] reverses coordinates to start the first chunked segment at the end\n * @returns {FeatureCollection<LineString>} collection of line segments\n * @example\n * var line = turf.lineString([[-95, 40], [-93, 45], [-85, 50]]);\n *\n * var chunk = turf.lineChunk(line, 15, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [chunk];\n */\nfunction lineChunk(geojson, segmentLength, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var units = options.units;\n  var reverse = options.reverse;\n\n  // Validation\n  if (!geojson) throw new Error(\"geojson is required\");\n  if (segmentLength <= 0)\n    throw new Error(\"segmentLength must be greater than 0\");\n\n  // Container\n  var results = [];\n\n  // Flatten each feature to simple LineString\n  meta.flattenEach(geojson, function (feature) {\n    // reverses coordinates to start the first chunked segment at the end\n    if (reverse)\n      feature.geometry.coordinates = feature.geometry.coordinates.reverse();\n\n    sliceLineSegments(feature, segmentLength, units, function (segment) {\n      results.push(segment);\n    });\n  });\n  return helpers.featureCollection(results);\n}\n\n/**\n * Slice Line Segments\n *\n * @private\n * @param {Feature<LineString>} line GeoJSON LineString\n * @param {number} segmentLength how long to make each segment\n * @param {string}[units='kilometers'] units can be degrees, radians, miles, or kilometers\n * @param {Function} callback iterate over sliced line segments\n * @returns {void}\n */\nfunction sliceLineSegments(line, segmentLength, units, callback) {\n  var lineLength = length__default['default'](line, { units: units });\n\n  // If the line is shorter than the segment length then the orginal line is returned.\n  if (lineLength <= segmentLength) return callback(line);\n\n  var numberOfSegments = lineLength / segmentLength;\n\n  // If numberOfSegments is integer, no need to plus 1\n  if (!Number.isInteger(numberOfSegments)) {\n    numberOfSegments = Math.floor(numberOfSegments) + 1;\n  }\n\n  for (var i = 0; i < numberOfSegments; i++) {\n    var outline = lineSliceAlong__default['default'](\n      line,\n      segmentLength * i,\n      segmentLength * (i + 1),\n      { units: units }\n    );\n    callback(outline, i);\n  }\n}\n\nmodule.exports = lineChunk;\nmodule.exports.default = lineChunk;\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a bbox and returns an equivalent {@link Polygon|polygon}.\n *\n * @name bboxPolygon\n * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @param {Object} [options={}] Optional parameters\n * @param {Properties} [options.properties={}] Translate properties to Polygon\n * @param {string|number} [options.id={}] Translate Id to Polygon\n * @returns {Feature<Polygon>} a Polygon representation of the bounding box\n * @example\n * var bbox = [0, 0, 10, 10];\n *\n * var poly = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [poly]\n */\nfunction bboxPolygon(bbox, options) {\n    if (options === void 0) { options = {}; }\n    // Convert BBox positions to Numbers\n    // No performance loss for including Number()\n    // https://github.com/Turfjs/turf/issues/1119\n    var west = Number(bbox[0]);\n    var south = Number(bbox[1]);\n    var east = Number(bbox[2]);\n    var north = Number(bbox[3]);\n    if (bbox.length === 6) {\n        throw new Error(\"@turf/bbox-polygon does not support BBox with 6 positions\");\n    }\n    var lowLeft = [west, south];\n    var topLeft = [west, north];\n    var topRight = [east, north];\n    var lowRight = [east, south];\n    return helpers_1.polygon([[lowLeft, lowRight, topRight, topLeft, lowLeft]], options.properties, { bbox: bbox, id: options.id });\n}\nexports.default = bboxPolygon;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bbox_1 = __importDefault(require(\"@turf/bbox\"));\nvar boolean_point_in_polygon_1 = __importDefault(require(\"@turf/boolean-point-in-polygon\"));\nvar boolean_point_on_line_1 = __importDefault(require(\"@turf/boolean-point-on-line\"));\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Boolean-contains returns True if the second geometry is completely contained by the first geometry.\n * The interiors of both geometries must intersect and, the interior and boundary of the secondary (geometry b)\n * must not intersect the exterior of the primary (geometry a).\n * Boolean-contains returns the exact opposite result of the `@turf/boolean-within`.\n *\n * @name booleanContains\n * @param {Geometry|Feature<any>} feature1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<any>} feature2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false\n * @example\n * var line = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);\n * var point = turf.point([1, 2]);\n *\n * turf.booleanContains(line, point);\n * //=true\n */\nfunction booleanContains(feature1, feature2) {\n    var geom1 = invariant_1.getGeom(feature1);\n    var geom2 = invariant_1.getGeom(feature2);\n    var type1 = geom1.type;\n    var type2 = geom2.type;\n    var coords1 = geom1.coordinates;\n    var coords2 = geom2.coordinates;\n    switch (type1) {\n        case \"Point\":\n            switch (type2) {\n                case \"Point\":\n                    return compareCoords(coords1, coords2);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        case \"MultiPoint\":\n            switch (type2) {\n                case \"Point\":\n                    return isPointInMultiPoint(geom1, geom2);\n                case \"MultiPoint\":\n                    return isMultiPointInMultiPoint(geom1, geom2);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        case \"LineString\":\n            switch (type2) {\n                case \"Point\":\n                    return boolean_point_on_line_1.default(geom2, geom1, { ignoreEndVertices: true });\n                case \"LineString\":\n                    return isLineOnLine(geom1, geom2);\n                case \"MultiPoint\":\n                    return isMultiPointOnLine(geom1, geom2);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        case \"Polygon\":\n            switch (type2) {\n                case \"Point\":\n                    return boolean_point_in_polygon_1.default(geom2, geom1, { ignoreBoundary: true });\n                case \"LineString\":\n                    return isLineInPoly(geom1, geom2);\n                case \"Polygon\":\n                    return isPolyInPoly(geom1, geom2);\n                case \"MultiPoint\":\n                    return isMultiPointInPoly(geom1, geom2);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        default:\n            throw new Error(\"feature1 \" + type1 + \" geometry not supported\");\n    }\n}\nexports.default = booleanContains;\nfunction isPointInMultiPoint(multiPoint, pt) {\n    var i;\n    var output = false;\n    for (i = 0; i < multiPoint.coordinates.length; i++) {\n        if (compareCoords(multiPoint.coordinates[i], pt.coordinates)) {\n            output = true;\n            break;\n        }\n    }\n    return output;\n}\nexports.isPointInMultiPoint = isPointInMultiPoint;\nfunction isMultiPointInMultiPoint(multiPoint1, multiPoint2) {\n    for (var _i = 0, _a = multiPoint2.coordinates; _i < _a.length; _i++) {\n        var coord2 = _a[_i];\n        var matchFound = false;\n        for (var _b = 0, _c = multiPoint1.coordinates; _b < _c.length; _b++) {\n            var coord1 = _c[_b];\n            if (compareCoords(coord2, coord1)) {\n                matchFound = true;\n                break;\n            }\n        }\n        if (!matchFound) {\n            return false;\n        }\n    }\n    return true;\n}\nexports.isMultiPointInMultiPoint = isMultiPointInMultiPoint;\nfunction isMultiPointOnLine(lineString, multiPoint) {\n    var haveFoundInteriorPoint = false;\n    for (var _i = 0, _a = multiPoint.coordinates; _i < _a.length; _i++) {\n        var coord = _a[_i];\n        if (boolean_point_on_line_1.default(coord, lineString, { ignoreEndVertices: true })) {\n            haveFoundInteriorPoint = true;\n        }\n        if (!boolean_point_on_line_1.default(coord, lineString)) {\n            return false;\n        }\n    }\n    if (haveFoundInteriorPoint) {\n        return true;\n    }\n    return false;\n}\nexports.isMultiPointOnLine = isMultiPointOnLine;\nfunction isMultiPointInPoly(polygon, multiPoint) {\n    for (var _i = 0, _a = multiPoint.coordinates; _i < _a.length; _i++) {\n        var coord = _a[_i];\n        if (!boolean_point_in_polygon_1.default(coord, polygon, { ignoreBoundary: true })) {\n            return false;\n        }\n    }\n    return true;\n}\nexports.isMultiPointInPoly = isMultiPointInPoly;\nfunction isLineOnLine(lineString1, lineString2) {\n    var haveFoundInteriorPoint = false;\n    for (var _i = 0, _a = lineString2.coordinates; _i < _a.length; _i++) {\n        var coords = _a[_i];\n        if (boolean_point_on_line_1.default({ type: \"Point\", coordinates: coords }, lineString1, {\n            ignoreEndVertices: true,\n        })) {\n            haveFoundInteriorPoint = true;\n        }\n        if (!boolean_point_on_line_1.default({ type: \"Point\", coordinates: coords }, lineString1, {\n            ignoreEndVertices: false,\n        })) {\n            return false;\n        }\n    }\n    return haveFoundInteriorPoint;\n}\nexports.isLineOnLine = isLineOnLine;\nfunction isLineInPoly(polygon, linestring) {\n    var output = false;\n    var i = 0;\n    var polyBbox = bbox_1.default(polygon);\n    var lineBbox = bbox_1.default(linestring);\n    if (!doBBoxOverlap(polyBbox, lineBbox)) {\n        return false;\n    }\n    for (i; i < linestring.coordinates.length - 1; i++) {\n        var midPoint = getMidpoint(linestring.coordinates[i], linestring.coordinates[i + 1]);\n        if (boolean_point_in_polygon_1.default({ type: \"Point\", coordinates: midPoint }, polygon, {\n            ignoreBoundary: true,\n        })) {\n            output = true;\n            break;\n        }\n    }\n    return output;\n}\nexports.isLineInPoly = isLineInPoly;\n/**\n * Is Polygon2 in Polygon1\n * Only takes into account outer rings\n *\n * @private\n * @param {Geometry|Feature<Polygon>} feature1 Polygon1\n * @param {Geometry|Feature<Polygon>} feature2 Polygon2\n * @returns {boolean} true/false\n */\nfunction isPolyInPoly(feature1, feature2) {\n    // Handle Nulls\n    if (feature1.type === \"Feature\" && feature1.geometry === null) {\n        return false;\n    }\n    if (feature2.type === \"Feature\" && feature2.geometry === null) {\n        return false;\n    }\n    var poly1Bbox = bbox_1.default(feature1);\n    var poly2Bbox = bbox_1.default(feature2);\n    if (!doBBoxOverlap(poly1Bbox, poly2Bbox)) {\n        return false;\n    }\n    var coords = invariant_1.getGeom(feature2).coordinates;\n    for (var _i = 0, coords_1 = coords; _i < coords_1.length; _i++) {\n        var ring = coords_1[_i];\n        for (var _a = 0, ring_1 = ring; _a < ring_1.length; _a++) {\n            var coord = ring_1[_a];\n            if (!boolean_point_in_polygon_1.default(coord, feature1)) {\n                return false;\n            }\n        }\n    }\n    return true;\n}\nexports.isPolyInPoly = isPolyInPoly;\nfunction doBBoxOverlap(bbox1, bbox2) {\n    if (bbox1[0] > bbox2[0]) {\n        return false;\n    }\n    if (bbox1[2] < bbox2[2]) {\n        return false;\n    }\n    if (bbox1[1] > bbox2[1]) {\n        return false;\n    }\n    if (bbox1[3] < bbox2[3]) {\n        return false;\n    }\n    return true;\n}\nexports.doBBoxOverlap = doBBoxOverlap;\n/**\n * compareCoords\n *\n * @private\n * @param {Position} pair1 point [x,y]\n * @param {Position} pair2 point [x,y]\n * @returns {boolean} true/false if coord pairs match\n */\nfunction compareCoords(pair1, pair2) {\n    return pair1[0] === pair2[0] && pair1[1] === pair2[1];\n}\nexports.compareCoords = compareCoords;\nfunction getMidpoint(pair1, pair2) {\n    return [(pair1[0] + pair2[0]) / 2, (pair1[1] + pair2[1]) / 2];\n}\nexports.getMidpoint = getMidpoint;\n","import React, {\n  useEffect,\n  useMemo,\n  useCallback,\n  useRef,\n  forwardRef,\n  useImperativeHandle\n} from 'react'\nimport { Circle, GeoJSON, ZoomControl, useMap } from 'react-leaflet'\nimport * as turf from '@turf/turf'\nimport MarkerClusterLayer\n  from 'adhocracy4/adhocracy4/maps_react/static/a4maps_react/MarkerClusterLayer'\nimport ControlWrapper\n  from 'adhocracy4/adhocracy4/maps_react/static/a4maps_react/ControlWrapper'\nimport { SearchAndShowAddress } from 'adhocracy4'\n\nimport { Map } from '../contrib/map/Map'\nimport ProjectTile from './ProjectTile'\nimport ProjectMarker from './ProjectMarker'\nimport ProjectsMapInfo from './ProjectsMapInfo'\n\nconst FitToSelection = ({ selectionBbox }) => {\n  const map = useMap()\n\n  useEffect(() => {\n    if (!map || !selectionBbox) {\n      return\n    }\n\n    const [minX, minY, maxX, maxY] = selectionBbox\n    const southWest = [minY, minX]\n    const northEast = [maxY, maxX]\n\n    map.fitBounds([southWest, northEast], { padding: [40, 40] })\n  }, [map, selectionBbox])\n}\n\n// Component to handle map events and visibility tracking\nconst MapEventHandler = ({ items, onVisibleMarkersChange }) => {\n  const map = useMap()\n\n  const updateVisibleMarkers = useCallback(() => {\n    if (!map || !onVisibleMarkersChange) return\n\n    const bounds = map.getBounds()\n    const visibleProjects = items.filter(item => {\n      if (!item.point) return false\n      const { coordinates } = item.point.geometry\n      // Leaflet uses [lat, lng] but GeoJSON uses [lng, lat]\n      const latLng = { lat: coordinates[1], lng: coordinates[0] }\n      return bounds.contains(latLng)\n    })\n\n    onVisibleMarkersChange(visibleProjects)\n  }, [map, items, onVisibleMarkersChange])\n\n  useEffect(() => {\n    if (!map) return\n\n    // Initial update\n    updateVisibleMarkers()\n\n    // Update on map movements\n    map.on('moveend', updateVisibleMarkers)\n    map.on('zoomend', updateVisibleMarkers)\n    map.on('resize', updateVisibleMarkers)\n\n    return () => {\n      map.off('moveend', updateVisibleMarkers)\n      map.off('zoomend', updateVisibleMarkers)\n      map.off('resize', updateVisibleMarkers)\n    }\n  }, [map, updateVisibleMarkers])\n\n  // Also update when items change (filters applied)\n  useEffect(() => {\n    updateVisibleMarkers()\n  }, [items, updateVisibleMarkers])\n\n  return null\n}\n\nconst Markers = ({ items, topicChoices, onVisibleMarkersChange }) => {\n  const [activeProject, setActiveProject] = React.useState(null)\n\n  useEffect(() => {\n    // used to preload active marker to prevent flickering\n    const img = new Image()\n    img.src = '/static/images/map_pin_active.svg'\n  }, [])\n\n  const markers = useMemo(() => (\n    items\n      .filter(item => !!item.point)\n      .map(item => ({ ...item.point, properties: item }))\n      .map((project) => (\n        <ProjectMarker\n          key={project.properties.id || project.properties.title}\n          topicChoices={topicChoices}\n          project={project}\n          onOpen={() => setActiveProject(project)}\n          onClose={() => setActiveProject(null)}\n        />\n      ))\n  ), [items, topicChoices])\n\n  return (\n    <>\n      <MarkerClusterLayer>\n        {markers}\n      </MarkerClusterLayer>\n      {activeProject?.properties && (\n        <ControlWrapper position=\"bottomleft\" className=\"project-overlay-control\">\n          <ProjectTile\n            project={activeProject.properties}\n            topicChoices={topicChoices}\n            ref={(node) => node?.scrollIntoView?.({ behavior: 'smooth', block: 'nearest' })}\n            isHorizontal\n            isMapTile\n          />\n        </ControlWrapper>\n      )}\n      <MapEventHandler\n        items={items}\n        onVisibleMarkersChange={onVisibleMarkersChange}\n      />\n    </>\n  )\n}\n\nconst ProjectsMap = forwardRef(({\n  items,\n  topicChoices,\n  districtPolygons = [],\n  activeDistricts = [],\n  kiezradars = [],\n  activeKiezradars = [],\n  onVisibleMarkersChange,\n  bounds,\n  ...props\n}, ref) => {\n  const mapRef = useRef(null)\n\n  useImperativeHandle(ref, () => ({\n    setView: (newBounds) => {\n      if (mapRef.current && newBounds) {\n        mapRef.current.fitBounds(newBounds)\n      }\n    }\n  }))\n\n  useEffect(() => {\n    // Debug logging for district and kiezradar overlays\n    // eslint-disable-next-line no-console\n    console.log('[Kiezradar][ProjectsMap] filters changed', {\n      activeDistricts,\n      activeKiezradars,\n      districtPolygonsCount: districtPolygons?.length ?? 0,\n      kiezradarsCount: kiezradars?.length ?? 0\n    })\n  }, [activeDistricts, activeKiezradars, districtPolygons, kiezradars])\n\n  const activeDistrictFeatures = useMemo(\n    () => {\n      if (!districtPolygons || !activeDistricts || activeDistricts.length === 0) {\n        return []\n      }\n\n      const normalise = (value) => (\n        (value || '').toString().toLowerCase().trim()\n      )\n\n      const activeSet = new Set(activeDistricts.map(normalise))\n\n      return districtPolygons.filter((district) => (\n        activeSet.has(normalise(district.name))\n      ))\n    },\n    [districtPolygons, activeDistricts]\n  )\n\n  const activeKiezradarFeatures = useMemo(\n    () => {\n      if (!kiezradars || !activeKiezradars || activeKiezradars.length === 0) {\n        return []\n      }\n\n      const activeSet = new Set(activeKiezradars)\n\n      return kiezradars.filter((kiez) => (\n        activeSet.has(kiez.name) &&\n        kiez.point &&\n        kiez.point.geometry &&\n        Array.isArray(kiez.point.geometry.coordinates)\n      ))\n    },\n    [kiezradars, activeKiezradars]\n  )\n\n  const { greyedOutArea, selectionBbox } = useMemo(\n    () => {\n      if (activeDistrictFeatures.length === 0 && activeKiezradarFeatures.length === 0) {\n        // eslint-disable-next-line no-console\n        console.log('[Kiezradar][ProjectsMap] no active districts, skipping mask')\n        return { greyedOutArea: null, selectionBbox: null }\n      }\n\n      const selectedDistrictFeatures = activeDistrictFeatures\n        .flatMap((district) => (district.polygon && district.polygon.features) || [])\n\n      const selectedKiezFeatures = activeKiezradarFeatures.map((kiez) =>\n        turf.buffer(kiez.point, kiez.radius, { units: 'meters' })\n      )\n\n      const selectedFeatures = [...selectedDistrictFeatures, ...selectedKiezFeatures]\n\n      if (selectedFeatures.length === 0) {\n        // eslint-disable-next-line no-console\n        console.log('[Kiezradar][ProjectsMap] active selection without features', {\n          activeDistrictFeatures,\n          activeKiezradarFeatures\n        })\n        return { greyedOutArea: null, selectionBbox: null }\n      }\n\n      try {\n        const selectionCollection = {\n          type: 'FeatureCollection',\n          features: selectedFeatures\n        }\n\n        // Bounding box für Auto-Zoom berechnen\n        const selectionBbox = turf.bbox(selectionCollection)\n\n        // Maske: Welt minus alle ausgewählten Bezirke (per sequentieller Differenz),\n        // damit mehrere Bezirke gleichzeitig freigestellt werden.\n        const worldFeature = turf.bboxPolygon([-180, -90, 180, 90])\n        let mask = worldFeature\n\n        selectedFeatures.forEach((feature, index) => {\n          try {\n            const nextMask = turf.difference(mask, feature)\n\n            if (!nextMask) {\n              // eslint-disable-next-line no-console\n              console.log('[Kiezradar][ProjectsMap] mask difference returned null for feature', {\n                index,\n                featureBbox: turf.bbox(feature)\n              })\n              return\n            }\n\n            mask = nextMask\n          } catch (e) {\n            // eslint-disable-next-line no-console\n            console.error('[Kiezradar][ProjectsMap] error while subtracting feature from mask', {\n              index,\n              error: e\n            })\n          }\n        })\n\n        if (mask === worldFeature) {\n          return { greyedOutArea: null, selectionBbox }\n        }\n\n        // eslint-disable-next-line no-console\n        console.log('[Kiezradar][ProjectsMap] mask computed', {\n          selectionBbox,\n          featureCount: selectedFeatures.length\n        })\n\n        return {\n          greyedOutArea: {\n            type: 'FeatureCollection',\n            features: [mask]\n          },\n          selectionBbox\n        }\n      } catch (e) {\n        // eslint-disable-next-line no-console\n        console.error('[Kiezradar][ProjectsMap] error while computing mask', e)\n        return { greyedOutArea: null, selectionBbox: null }\n      }\n    },\n    [activeDistrictFeatures, activeKiezradarFeatures]\n  )\n\n  const maskKey = useMemo(\n    () => (\n      (activeDistricts && activeDistricts.length > 0) || (activeKiezradars && activeKiezradars.length > 0)\n        ? `grey-mask-${[...activeDistricts].sort().join('-')}--${[...activeKiezradars].sort().join('-')}`\n        : 'grey-mask-none'\n    ),\n    [activeDistricts, activeKiezradars]\n  )\n  return (\n    <div className=\"projects-map\">\n      <ProjectsMapInfo className=\"projects-map-info--mobile\" />\n      <div\n        id=\"map-live-region\"\n        aria-live=\"polite\"\n        aria-atomic=\"true\"\n        className=\"sr-only\"\n      >\n        {/* Screen reader announcements will go here */}\n      </div>\n      <Map\n        ref={mapRef}\n        zoomControl={false}\n        maxZoom={18}\n        bounds={bounds}\n        {...props}\n        id=\"project-map\"\n        key=\"project-map\"\n        style={{ minHeight: '100%', height: '100%' }}\n        className=\"projects-map__map\"\n      >\n        <FitToSelection selectionBbox={selectionBbox} />\n        <SearchAndShowAddress apiUrl=\"/api/geodata/search\" />\n        <ControlWrapper position=\"bottomleft\" className=\"projects-map-info__wrapper\">\n          <ProjectsMapInfo />\n        </ControlWrapper>\n        <ZoomControl position=\"topleft\" />\n        {greyedOutArea && (\n          <GeoJSON\n            key={maskKey}\n            data={greyedOutArea}\n            style={() => ({\n              color: '#000000',\n              weight: 0,\n              fill: true,\n              fillColor: '#000000',\n              fillOpacity: 0.4\n            })}\n          />\n        )}\n        {activeDistrictFeatures.map((district) => (\n          <GeoJSON\n            key={`district-${district.name}`}\n            data={district.polygon}\n            style={() => ({\n              color: '#000000',\n              weight: 1,\n              fill: false\n            })}\n          />\n        ))}\n        {activeKiezradarFeatures.map((kiez) => {\n          const [lng, lat] = kiez.point.geometry.coordinates\n          return (\n            <Circle\n              key={`kiez-${kiez.id || kiez.name}`}\n              center={[lat, lng]}\n              radius={kiez.radius}\n              pathOptions={{ color: '#000000', weight: 1, fillOpacity: 0.1 }}\n            />\n          )\n        })}\n        <Markers\n          items={items}\n          topicChoices={topicChoices}\n          onVisibleMarkersChange={onVisibleMarkersChange}\n        />\n      </Map>\n    </div>\n  )\n})\n\nProjectsMap.displayName = 'ProjectsMap'\nexport default ProjectsMap\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType<typeof RegExp.prototype.exec>, ...args: Parameters<typeof RegExp.prototype.exec>) => ReturnType<typeof RegExp.prototype.exec>} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable<typeof gOPD>} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","/**\n * react-router v7.15.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport {\n  ENABLE_DEV_WARNINGS,\n  ErrorResponseImpl,\n  FrameworkContext,\n  NO_BODY_STATUS_CODES,\n  Outlet,\n  RSCRouterContext,\n  RemixErrorBoundary,\n  RouterContextProvider,\n  RouterProvider,\n  SINGLE_FETCH_REDIRECT_STATUS,\n  SingleFetchRedirectSymbol,\n  StaticRouterProvider,\n  StreamTransfer,\n  URL_LIMIT,\n  convertRoutesToDataRoutes,\n  createMemoryRouter,\n  createServerRoutes,\n  createStaticHandler,\n  createStaticRouter,\n  decodeRedirectErrorDigest,\n  decodeRouteErrorResponseDigest,\n  decodeViaTurboStream,\n  encode,\n  escapeHtml,\n  getManifestPath,\n  getStaticContextFromError,\n  instrumentHandler,\n  isDataWithResponseInit,\n  isMutationMethod,\n  isRedirectResponse,\n  isRedirectStatusCode,\n  isResponse,\n  isRouteErrorResponse,\n  matchRoutes,\n  matchRoutesImpl,\n  redirect,\n  redirectDocument,\n  replace,\n  shouldHydrateRouteLoader,\n  stripBasename,\n  useRouteError,\n  warnOnce,\n  withComponentProps,\n  withErrorBoundaryProps,\n  withHydrateFallbackProps\n} from \"./chunk-4N6VE7H7.mjs\";\n\n// lib/dom/ssr/server.tsx\nimport * as React from \"react\";\nfunction ServerRouter({\n  context,\n  url,\n  nonce\n}) {\n  if (typeof url === \"string\") {\n    url = new URL(url);\n  }\n  let { manifest, routeModules, criticalCss, serverHandoffString } = context;\n  let routes = createServerRoutes(\n    manifest.routes,\n    routeModules,\n    context.future,\n    context.isSpaMode\n  );\n  context.staticHandlerContext.loaderData = {\n    ...context.staticHandlerContext.loaderData\n  };\n  for (let match of context.staticHandlerContext.matches) {\n    let routeId = match.route.id;\n    let route = routeModules[routeId];\n    let manifestRoute = context.manifest.routes[routeId];\n    if (route && manifestRoute && shouldHydrateRouteLoader(\n      routeId,\n      route.clientLoader,\n      manifestRoute.hasLoader,\n      context.isSpaMode\n    ) && (route.HydrateFallback || !manifestRoute.hasLoader)) {\n      delete context.staticHandlerContext.loaderData[routeId];\n    }\n  }\n  let router = createStaticRouter(routes, context.staticHandlerContext, {\n    branches: context.branches\n  });\n  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\n    FrameworkContext.Provider,\n    {\n      value: {\n        manifest,\n        routeModules,\n        criticalCss,\n        serverHandoffString,\n        future: context.future,\n        ssr: context.ssr,\n        isSpaMode: context.isSpaMode,\n        routeDiscovery: context.routeDiscovery,\n        serializeError: context.serializeError,\n        renderMeta: context.renderMeta\n      }\n    },\n    /* @__PURE__ */ React.createElement(RemixErrorBoundary, { location: router.state.location }, /* @__PURE__ */ React.createElement(\n      StaticRouterProvider,\n      {\n        router,\n        context: context.staticHandlerContext,\n        hydrate: false\n      }\n    ))\n  ), context.serverHandoffStream ? /* @__PURE__ */ React.createElement(React.Suspense, null, /* @__PURE__ */ React.createElement(\n    StreamTransfer,\n    {\n      context,\n      identifier: 0,\n      reader: context.serverHandoffStream.getReader(),\n      textDecoder: new TextDecoder(),\n      nonce\n    }\n  )) : null);\n}\n\n// lib/dom/ssr/routes-test-stub.tsx\nimport * as React2 from \"react\";\nfunction createRoutesStub(routes, _context) {\n  return function RoutesTestStub({\n    initialEntries,\n    initialIndex,\n    hydrationData,\n    future\n  }) {\n    let routerRef = React2.useRef();\n    let frameworkContextRef = React2.useRef();\n    if (routerRef.current == null) {\n      frameworkContextRef.current = {\n        future: {\n          v8_passThroughRequests: future?.v8_passThroughRequests === true,\n          v8_middleware: future?.v8_middleware === true,\n          unstable_trailingSlashAwareDataRequests: future?.unstable_trailingSlashAwareDataRequests === true\n        },\n        manifest: {\n          routes: {},\n          entry: { imports: [], module: \"\" },\n          url: \"\",\n          version: \"\"\n        },\n        routeModules: {},\n        ssr: false,\n        isSpaMode: false,\n        routeDiscovery: { mode: \"lazy\", manifestPath: \"/__manifest\" }\n      };\n      let patched = processRoutes(\n        // @ts-expect-error `StubRouteObject` is stricter about `loader`/`action`\n        // types compared to `RouteObject`\n        convertRoutesToDataRoutes(routes, (r) => r),\n        _context !== void 0 ? _context : future?.v8_middleware ? new RouterContextProvider() : {},\n        frameworkContextRef.current.manifest,\n        frameworkContextRef.current.routeModules\n      );\n      routerRef.current = createMemoryRouter(patched, {\n        initialEntries,\n        initialIndex,\n        hydrationData\n      });\n    }\n    return /* @__PURE__ */ React2.createElement(FrameworkContext.Provider, { value: frameworkContextRef.current }, /* @__PURE__ */ React2.createElement(RouterProvider, { router: routerRef.current }));\n  };\n}\nfunction processRoutes(routes, context, manifest, routeModules, parentId) {\n  return routes.map((route) => {\n    if (!route.id) {\n      throw new Error(\n        \"Expected a route.id in react-router processRoutes() function\"\n      );\n    }\n    let newRoute = {\n      id: route.id,\n      path: route.path,\n      index: route.index,\n      Component: route.Component ? withComponentProps(route.Component) : void 0,\n      HydrateFallback: route.HydrateFallback ? withHydrateFallbackProps(route.HydrateFallback) : void 0,\n      ErrorBoundary: route.ErrorBoundary ? withErrorBoundaryProps(route.ErrorBoundary) : void 0,\n      action: route.action ? (args) => route.action({ ...args, context }) : void 0,\n      loader: route.loader ? (args) => route.loader({ ...args, context }) : void 0,\n      middleware: route.middleware ? route.middleware.map(\n        (mw) => (...args) => mw(\n          { ...args[0], context },\n          args[1]\n        )\n      ) : void 0,\n      handle: route.handle,\n      shouldRevalidate: route.shouldRevalidate\n    };\n    let entryRoute = {\n      id: route.id,\n      path: route.path,\n      index: route.index,\n      parentId,\n      hasAction: route.action != null,\n      hasLoader: route.loader != null,\n      // When testing routes, you should be stubbing loader/action/middleware,\n      // not trying to re-implement the full loader/clientLoader/SSR/hydration\n      // flow. That is better tested via E2E tests.\n      hasClientAction: false,\n      hasClientLoader: false,\n      hasClientMiddleware: false,\n      hasErrorBoundary: route.ErrorBoundary != null,\n      // any need for these?\n      module: \"build/stub-path-to-module.js\",\n      clientActionModule: void 0,\n      clientLoaderModule: void 0,\n      clientMiddlewareModule: void 0,\n      hydrateFallbackModule: void 0\n    };\n    manifest.routes[newRoute.id] = entryRoute;\n    routeModules[route.id] = {\n      default: newRoute.Component || Outlet,\n      ErrorBoundary: newRoute.ErrorBoundary || void 0,\n      handle: route.handle,\n      links: route.links,\n      meta: route.meta,\n      shouldRevalidate: route.shouldRevalidate\n    };\n    if (route.children) {\n      newRoute.children = processRoutes(\n        route.children,\n        context,\n        manifest,\n        routeModules,\n        newRoute.id\n      );\n    }\n    return newRoute;\n  });\n}\n\n// lib/server-runtime/cookies.ts\nimport { parse, serialize } from \"cookie\";\n\n// lib/server-runtime/crypto.ts\nvar encoder = /* @__PURE__ */ new TextEncoder();\nvar sign = async (value, secret) => {\n  let data2 = encoder.encode(value);\n  let key = await createKey(secret, [\"sign\"]);\n  let signature = await crypto.subtle.sign(\"HMAC\", key, data2);\n  let hash = btoa(String.fromCharCode(...new Uint8Array(signature))).replace(\n    /=+$/,\n    \"\"\n  );\n  return value + \".\" + hash;\n};\nvar unsign = async (cookie, secret) => {\n  let index = cookie.lastIndexOf(\".\");\n  let value = cookie.slice(0, index);\n  let hash = cookie.slice(index + 1);\n  let data2 = encoder.encode(value);\n  let key = await createKey(secret, [\"verify\"]);\n  try {\n    let signature = byteStringToUint8Array(atob(hash));\n    let valid = await crypto.subtle.verify(\"HMAC\", key, signature, data2);\n    return valid ? value : false;\n  } catch (e) {\n    return false;\n  }\n};\nvar createKey = async (secret, usages) => crypto.subtle.importKey(\n  \"raw\",\n  encoder.encode(secret),\n  { name: \"HMAC\", hash: \"SHA-256\" },\n  false,\n  usages\n);\nfunction byteStringToUint8Array(byteString) {\n  let array = new Uint8Array(byteString.length);\n  for (let i = 0; i < byteString.length; i++) {\n    array[i] = byteString.charCodeAt(i);\n  }\n  return array;\n}\n\n// lib/server-runtime/cookies.ts\nvar createCookie = (name, cookieOptions = {}) => {\n  let { secrets = [], ...options } = {\n    path: \"/\",\n    sameSite: \"lax\",\n    ...cookieOptions\n  };\n  warnOnceAboutExpiresCookie(name, options.expires);\n  return {\n    get name() {\n      return name;\n    },\n    get isSigned() {\n      return secrets.length > 0;\n    },\n    get expires() {\n      return typeof options.maxAge !== \"undefined\" ? new Date(Date.now() + options.maxAge * 1e3) : options.expires;\n    },\n    async parse(cookieHeader, parseOptions) {\n      if (!cookieHeader) return null;\n      let cookies = parse(cookieHeader, { ...options, ...parseOptions });\n      if (name in cookies) {\n        let value = cookies[name];\n        if (typeof value === \"string\" && value !== \"\") {\n          let decoded = await decodeCookieValue(value, secrets);\n          return decoded;\n        } else {\n          return \"\";\n        }\n      } else {\n        return null;\n      }\n    },\n    async serialize(value, serializeOptions) {\n      return serialize(\n        name,\n        value === \"\" ? \"\" : await encodeCookieValue(value, secrets),\n        {\n          ...options,\n          ...serializeOptions\n        }\n      );\n    }\n  };\n};\nvar isCookie = (object) => {\n  return object != null && typeof object.name === \"string\" && typeof object.isSigned === \"boolean\" && typeof object.parse === \"function\" && typeof object.serialize === \"function\";\n};\nasync function encodeCookieValue(value, secrets) {\n  let encoded = encodeData(value);\n  if (secrets.length > 0) {\n    encoded = await sign(encoded, secrets[0]);\n  }\n  return encoded;\n}\nasync function decodeCookieValue(value, secrets) {\n  if (secrets.length > 0) {\n    for (let secret of secrets) {\n      let unsignedValue = await unsign(value, secret);\n      if (unsignedValue !== false) {\n        return decodeData(unsignedValue);\n      }\n    }\n    return null;\n  }\n  return decodeData(value);\n}\nfunction encodeData(value) {\n  return btoa(myUnescape(encodeURIComponent(JSON.stringify(value))));\n}\nfunction decodeData(value) {\n  try {\n    return JSON.parse(decodeURIComponent(myEscape(atob(value))));\n  } catch (e) {\n    return {};\n  }\n}\nfunction myEscape(value) {\n  let str = value.toString();\n  let result = \"\";\n  let index = 0;\n  let chr, code;\n  while (index < str.length) {\n    chr = str.charAt(index++);\n    if (/[\\w*+\\-./@]/.exec(chr)) {\n      result += chr;\n    } else {\n      code = chr.charCodeAt(0);\n      if (code < 256) {\n        result += \"%\" + hex(code, 2);\n      } else {\n        result += \"%u\" + hex(code, 4).toUpperCase();\n      }\n    }\n  }\n  return result;\n}\nfunction hex(code, length) {\n  let result = code.toString(16);\n  while (result.length < length) result = \"0\" + result;\n  return result;\n}\nfunction myUnescape(value) {\n  let str = value.toString();\n  let result = \"\";\n  let index = 0;\n  let chr, part;\n  while (index < str.length) {\n    chr = str.charAt(index++);\n    if (chr === \"%\") {\n      if (str.charAt(index) === \"u\") {\n        part = str.slice(index + 1, index + 5);\n        if (/^[\\da-f]{4}$/i.exec(part)) {\n          result += String.fromCharCode(parseInt(part, 16));\n          index += 5;\n          continue;\n        }\n      } else {\n        part = str.slice(index, index + 2);\n        if (/^[\\da-f]{2}$/i.exec(part)) {\n          result += String.fromCharCode(parseInt(part, 16));\n          index += 2;\n          continue;\n        }\n      }\n    }\n    result += chr;\n  }\n  return result;\n}\nfunction warnOnceAboutExpiresCookie(name, expires) {\n  warnOnce(\n    !expires,\n    `The \"${name}\" cookie has an \"expires\" property set. This will cause the expires value to not be updated when the session is committed. Instead, you should set the expires value when serializing the cookie. You can use \\`commitSession(session, { expires })\\` if using a session storage object, or \\`cookie.serialize(\"value\", { expires })\\` if you're using the cookie directly.`\n  );\n}\n\n// lib/server-runtime/entry.ts\nfunction createEntryRouteModules(manifest) {\n  return Object.keys(manifest).reduce((memo, routeId) => {\n    let route = manifest[routeId];\n    if (route) {\n      memo[routeId] = route.module;\n    }\n    return memo;\n  }, {});\n}\n\n// lib/server-runtime/mode.ts\nvar ServerMode = /* @__PURE__ */ ((ServerMode2) => {\n  ServerMode2[\"Development\"] = \"development\";\n  ServerMode2[\"Production\"] = \"production\";\n  ServerMode2[\"Test\"] = \"test\";\n  return ServerMode2;\n})(ServerMode || {});\nfunction isServerMode(value) {\n  return value === \"development\" /* Development */ || value === \"production\" /* Production */ || value === \"test\" /* Test */;\n}\n\n// lib/server-runtime/errors.ts\nfunction sanitizeError(error, serverMode) {\n  if (error instanceof Error && serverMode !== \"development\" /* Development */) {\n    let sanitized = new Error(\"Unexpected Server Error\");\n    sanitized.stack = void 0;\n    return sanitized;\n  }\n  return error;\n}\nfunction sanitizeErrors(errors, serverMode) {\n  return Object.entries(errors).reduce((acc, [routeId, error]) => {\n    return Object.assign(acc, { [routeId]: sanitizeError(error, serverMode) });\n  }, {});\n}\nfunction serializeError(error, serverMode) {\n  let sanitized = sanitizeError(error, serverMode);\n  return {\n    message: sanitized.message,\n    stack: sanitized.stack\n  };\n}\nfunction serializeErrors(errors, serverMode) {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n  for (let [key, val] of entries) {\n    if (isRouteErrorResponse(val)) {\n      serialized[key] = { ...val, __type: \"RouteErrorResponse\" };\n    } else if (val instanceof Error) {\n      let sanitized = sanitizeError(val, serverMode);\n      serialized[key] = {\n        message: sanitized.message,\n        stack: sanitized.stack,\n        __type: \"Error\",\n        // If this is a subclass (i.e., ReferenceError), send up the type so we\n        // can re-create the same type during hydration.  This will only apply\n        // in dev mode since all production errors are sanitized to normal\n        // Error instances\n        ...sanitized.name !== \"Error\" ? {\n          __subType: sanitized.name\n        } : {}\n      };\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\n\n// lib/server-runtime/invariant.ts\nfunction invariant(value, message) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    console.error(\n      \"The following error is a bug in React Router; please open an issue! https://github.com/remix-run/react-router/issues/new/choose\"\n    );\n    throw new Error(message);\n  }\n}\n\n// lib/server-runtime/routeMatching.ts\nfunction matchServerRoutes(manifest, dataRoutes, branches, pathname, basename) {\n  let matches = matchRoutesImpl(\n    dataRoutes,\n    pathname,\n    basename ?? \"/\",\n    false,\n    branches\n  );\n  if (!matches) return null;\n  return matches.map((match) => {\n    let route = manifest[match.route.id];\n    invariant(\n      route,\n      `Route with id \"${match.route.id}\" not found in manifest.`\n    );\n    return {\n      params: match.params,\n      pathname: match.pathname,\n      route\n    };\n  });\n}\n\n// lib/server-runtime/data.ts\nasync function callRouteHandler(handler, args, future) {\n  let result = await handler({\n    request: future.v8_passThroughRequests ? args.request : stripRoutesParam(stripIndexParam(args.request)),\n    url: args.url,\n    params: args.params,\n    context: args.context,\n    pattern: args.pattern\n  });\n  if (isDataWithResponseInit(result) && result.init && result.init.status && isRedirectStatusCode(result.init.status)) {\n    throw new Response(null, result.init);\n  }\n  return result;\n}\nfunction stripIndexParam(request) {\n  let url = new URL(request.url);\n  let indexValues = url.searchParams.getAll(\"index\");\n  url.searchParams.delete(\"index\");\n  let indexValuesToKeep = [];\n  for (let indexValue of indexValues) {\n    if (indexValue) {\n      indexValuesToKeep.push(indexValue);\n    }\n  }\n  for (let toKeep of indexValuesToKeep) {\n    url.searchParams.append(\"index\", toKeep);\n  }\n  let init = {\n    method: request.method,\n    body: request.body,\n    headers: request.headers,\n    signal: request.signal\n  };\n  if (init.body) {\n    init.duplex = \"half\";\n  }\n  return new Request(url.href, init);\n}\nfunction stripRoutesParam(request) {\n  let url = new URL(request.url);\n  url.searchParams.delete(\"_routes\");\n  let init = {\n    method: request.method,\n    body: request.body,\n    headers: request.headers,\n    signal: request.signal\n  };\n  if (init.body) {\n    init.duplex = \"half\";\n  }\n  return new Request(url.href, init);\n}\n\n// lib/server-runtime/dev.ts\nvar globalDevServerHooksKey = \"__reactRouterDevServerHooks\";\nfunction setDevServerHooks(devServerHooks) {\n  globalThis[globalDevServerHooksKey] = devServerHooks;\n}\nfunction getDevServerHooks() {\n  return globalThis[globalDevServerHooksKey];\n}\nfunction getBuildTimeHeader(request, headerName) {\n  if (typeof process !== \"undefined\") {\n    try {\n      if (process.env.hasOwnProperty(\"IS_RR_BUILD_REQUEST\") && process.env.IS_RR_BUILD_REQUEST === \"yes\") {\n        return request.headers.get(headerName);\n      }\n    } catch (e) {\n    }\n  }\n  return null;\n}\n\n// lib/server-runtime/routes.ts\nfunction groupRoutesByParentId(manifest) {\n  let routes = {};\n  Object.values(manifest).forEach((route) => {\n    if (route) {\n      let parentId = route.parentId || \"\";\n      if (!routes[parentId]) {\n        routes[parentId] = [];\n      }\n      routes[parentId].push(route);\n    }\n  });\n  return routes;\n}\nfunction createStaticHandlerDataRoutes(manifest, future, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest)) {\n  return (routesByParentId[parentId] || []).map((route) => {\n    let commonRoute = {\n      // Always include root due to default boundaries\n      hasErrorBoundary: route.id === \"root\" || route.module.ErrorBoundary != null,\n      id: route.id,\n      path: route.path,\n      middleware: route.module.middleware,\n      // Need to use RR's version in the param typed here to permit the optional\n      // context even though we know it'll always be provided in remix\n      loader: route.module.loader ? async (args) => {\n        let preRenderedData = getBuildTimeHeader(\n          args.request,\n          \"X-React-Router-Prerender-Data\"\n        );\n        if (preRenderedData != null) {\n          let encoded = preRenderedData ? decodeURI(preRenderedData) : preRenderedData;\n          invariant(encoded, \"Missing prerendered data for route\");\n          let uint8array = new TextEncoder().encode(encoded);\n          let stream = new ReadableStream({\n            start(controller) {\n              controller.enqueue(uint8array);\n              controller.close();\n            }\n          });\n          let decoded = await decodeViaTurboStream(stream, global);\n          let data2 = decoded.value;\n          if (data2 && SingleFetchRedirectSymbol in data2) {\n            let result = data2[SingleFetchRedirectSymbol];\n            let init = { status: result.status };\n            if (result.reload) {\n              throw redirectDocument(result.redirect, init);\n            } else if (result.replace) {\n              throw replace(result.redirect, init);\n            } else {\n              throw redirect(result.redirect, init);\n            }\n          } else {\n            invariant(\n              data2 && route.id in data2,\n              \"Unable to decode prerendered data\"\n            );\n            let result = data2[route.id];\n            invariant(\n              \"data\" in result,\n              \"Unable to process prerendered data\"\n            );\n            return result.data;\n          }\n        }\n        let val = await callRouteHandler(\n          route.module.loader,\n          args,\n          future\n        );\n        return val;\n      } : void 0,\n      action: route.module.action ? (args) => callRouteHandler(route.module.action, args, future) : void 0,\n      handle: route.module.handle\n    };\n    return route.index ? {\n      index: true,\n      ...commonRoute\n    } : {\n      caseSensitive: route.caseSensitive,\n      children: createStaticHandlerDataRoutes(\n        manifest,\n        future,\n        route.id,\n        routesByParentId\n      ),\n      ...commonRoute\n    };\n  });\n}\n\n// lib/server-runtime/serverHandoff.ts\nfunction createServerHandoffString(serverHandoff) {\n  return escapeHtml(JSON.stringify(serverHandoff));\n}\n\n// lib/server-runtime/headers.ts\nimport { splitCookiesString } from \"set-cookie-parser\";\nfunction getDocumentHeaders(context, build) {\n  return getDocumentHeadersImpl(context, (m) => {\n    let route = build.routes[m.route.id];\n    invariant(route, `Route with id \"${m.route.id}\" not found in build`);\n    return route.module.headers;\n  });\n}\nfunction getDocumentHeadersImpl(context, getRouteHeadersFn, _defaultHeaders) {\n  let boundaryIdx = context.errors ? context.matches.findIndex((m) => context.errors[m.route.id]) : -1;\n  let matches = boundaryIdx >= 0 ? context.matches.slice(0, boundaryIdx + 1) : context.matches;\n  let errorHeaders;\n  if (boundaryIdx >= 0) {\n    let { actionHeaders, actionData, loaderHeaders, loaderData } = context;\n    context.matches.slice(boundaryIdx).some((match) => {\n      let id = match.route.id;\n      if (actionHeaders[id] && (!actionData || !actionData.hasOwnProperty(id))) {\n        errorHeaders = actionHeaders[id];\n      } else if (loaderHeaders[id] && !loaderData.hasOwnProperty(id)) {\n        errorHeaders = loaderHeaders[id];\n      }\n      return errorHeaders != null;\n    });\n  }\n  const defaultHeaders = new Headers(_defaultHeaders);\n  return matches.reduce((parentHeaders, match, idx) => {\n    let { id } = match.route;\n    let loaderHeaders = context.loaderHeaders[id] || new Headers();\n    let actionHeaders = context.actionHeaders[id] || new Headers();\n    let includeErrorHeaders = errorHeaders != null && idx === matches.length - 1;\n    let includeErrorCookies = includeErrorHeaders && errorHeaders !== loaderHeaders && errorHeaders !== actionHeaders;\n    let headersFn = getRouteHeadersFn(match);\n    if (headersFn == null) {\n      let headers2 = new Headers(parentHeaders);\n      if (includeErrorCookies) {\n        prependCookies(errorHeaders, headers2);\n      }\n      prependCookies(actionHeaders, headers2);\n      prependCookies(loaderHeaders, headers2);\n      return headers2;\n    }\n    let headers = new Headers(\n      typeof headersFn === \"function\" ? headersFn({\n        loaderHeaders,\n        parentHeaders,\n        actionHeaders,\n        errorHeaders: includeErrorHeaders ? errorHeaders : void 0\n      }) : headersFn\n    );\n    if (includeErrorCookies) {\n      prependCookies(errorHeaders, headers);\n    }\n    prependCookies(actionHeaders, headers);\n    prependCookies(loaderHeaders, headers);\n    prependCookies(parentHeaders, headers);\n    return headers;\n  }, new Headers(defaultHeaders));\n}\nfunction prependCookies(parentHeaders, childHeaders) {\n  let parentSetCookieString = parentHeaders.get(\"Set-Cookie\");\n  if (parentSetCookieString) {\n    let cookies = splitCookiesString(parentSetCookieString);\n    let childCookies = new Set(childHeaders.getSetCookie());\n    cookies.forEach((cookie) => {\n      if (!childCookies.has(cookie)) {\n        childHeaders.append(\"Set-Cookie\", cookie);\n      }\n    });\n  }\n}\n\n// lib/actions.ts\nfunction throwIfPotentialCSRFAttack(headers, allowedActionOrigins) {\n  let originHeader = headers.get(\"origin\");\n  let originDomain = null;\n  try {\n    originDomain = typeof originHeader === \"string\" && originHeader !== \"null\" ? new URL(originHeader).host : originHeader;\n  } catch {\n    throw new Error(\n      `\\`origin\\` header is not a valid URL. Aborting the action.`\n    );\n  }\n  let host = parseHostHeader(headers);\n  if (originDomain && (!host || originDomain !== host.value)) {\n    if (!isAllowedOrigin(originDomain, allowedActionOrigins)) {\n      if (host) {\n        throw new Error(\n          `${host.type} header does not match \\`origin\\` header from a forwarded action request. Aborting the action.`\n        );\n      } else {\n        throw new Error(\n          \"`x-forwarded-host` or `host` headers are not provided. One of these is needed to compare the `origin` header from a forwarded action request. Aborting the action.\"\n        );\n      }\n    }\n  }\n}\nfunction matchWildcardDomain(domain, pattern) {\n  const domainParts = domain.split(\".\");\n  const patternParts = pattern.split(\".\");\n  if (patternParts.length < 1) {\n    return false;\n  }\n  if (domainParts.length < patternParts.length) {\n    return false;\n  }\n  while (patternParts.length) {\n    const patternPart = patternParts.pop();\n    const domainPart = domainParts.pop();\n    switch (patternPart) {\n      case \"\": {\n        return false;\n      }\n      case \"*\": {\n        if (domainPart) {\n          continue;\n        } else {\n          return false;\n        }\n      }\n      case \"**\": {\n        if (patternParts.length > 0) {\n          return false;\n        }\n        return domainPart !== void 0;\n      }\n      case void 0:\n      default: {\n        if (domainPart !== patternPart) {\n          return false;\n        }\n      }\n    }\n  }\n  return domainParts.length === 0;\n}\nfunction isAllowedOrigin(originDomain, allowedActionOrigins = []) {\n  return allowedActionOrigins.some(\n    (allowedOrigin) => allowedOrigin && (allowedOrigin === originDomain || matchWildcardDomain(originDomain, allowedOrigin))\n  );\n}\nfunction parseHostHeader(headers) {\n  let forwardedHostHeader = headers.get(\"x-forwarded-host\");\n  let forwardedHostValue = forwardedHostHeader?.split(\",\")[0]?.trim();\n  let hostHeader = headers.get(\"host\");\n  return forwardedHostValue ? {\n    type: \"x-forwarded-host\",\n    value: forwardedHostValue\n  } : hostHeader ? {\n    type: \"host\",\n    value: hostHeader\n  } : void 0;\n}\n\n// lib/server-runtime/urls.ts\nfunction getNormalizedPath(request, basename, future) {\n  basename = basename || \"/\";\n  let url = new URL(request.url);\n  let pathname = url.pathname;\n  if (future?.unstable_trailingSlashAwareDataRequests) {\n    if (pathname.endsWith(\"/_.data\")) {\n      pathname = pathname.replace(/_\\.data$/, \"\");\n    } else {\n      pathname = pathname.replace(/\\.data$/, \"\");\n    }\n  } else {\n    if (stripBasename(pathname, basename) === \"/_root.data\") {\n      pathname = basename;\n    } else if (pathname.endsWith(\".data\")) {\n      pathname = pathname.replace(/\\.data$/, \"\");\n    }\n    if (stripBasename(pathname, basename) !== \"/\" && pathname.endsWith(\"/\")) {\n      pathname = pathname.slice(0, -1);\n    }\n  }\n  let searchParams = new URLSearchParams(url.search);\n  searchParams.delete(\"_routes\");\n  let search = searchParams.toString();\n  if (search) {\n    search = `?${search}`;\n  }\n  return {\n    pathname,\n    search,\n    // No hashes on the server\n    hash: \"\"\n  };\n}\n\n// lib/server-runtime/single-fetch.ts\nvar SERVER_NO_BODY_STATUS_CODES = /* @__PURE__ */ new Set([\n  ...NO_BODY_STATUS_CODES,\n  304\n]);\nasync function singleFetchAction(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {\n  try {\n    try {\n      throwIfPotentialCSRFAttack(\n        request.headers,\n        Array.isArray(build.allowedActionOrigins) ? build.allowedActionOrigins : []\n      );\n    } catch (e) {\n      return handleQueryError(new Error(\"Bad Request\"), 400);\n    }\n    let handlerRequest = build.future.v8_passThroughRequests ? request : new Request(handlerUrl, {\n      method: request.method,\n      body: request.body,\n      headers: request.headers,\n      signal: request.signal,\n      ...request.body ? { duplex: \"half\" } : void 0\n    });\n    let result = await staticHandler.query(handlerRequest, {\n      requestContext: loadContext,\n      skipLoaderErrorBubbling: true,\n      skipRevalidation: true,\n      generateMiddlewareResponse: build.future.v8_middleware ? async (query) => {\n        try {\n          let innerResult = await query(handlerRequest);\n          return handleQueryResult(innerResult);\n        } catch (error) {\n          return handleQueryError(error);\n        }\n      } : void 0,\n      normalizePath: (r) => getNormalizedPath(r, build.basename, build.future)\n    });\n    return handleQueryResult(result);\n  } catch (error) {\n    return handleQueryError(error);\n  }\n  function handleQueryResult(result) {\n    return isResponse(result) ? result : staticContextToResponse(result);\n  }\n  function handleQueryError(error, status = 500) {\n    handleError(error);\n    return generateSingleFetchResponse(request, build, serverMode, {\n      result: { error },\n      headers: new Headers(),\n      status\n    });\n  }\n  function staticContextToResponse(context) {\n    let headers = getDocumentHeaders(context, build);\n    if (isRedirectStatusCode(context.statusCode) && headers.has(\"Location\")) {\n      return new Response(null, { status: context.statusCode, headers });\n    }\n    if (context.errors) {\n      Object.values(context.errors).forEach((err) => {\n        if (!isRouteErrorResponse(err) || err.error) {\n          handleError(err);\n        }\n      });\n      context.errors = sanitizeErrors(context.errors, serverMode);\n    }\n    let singleFetchResult;\n    if (context.errors) {\n      singleFetchResult = { error: Object.values(context.errors)[0] };\n    } else {\n      singleFetchResult = {\n        data: Object.values(context.actionData || {})[0]\n      };\n    }\n    return generateSingleFetchResponse(request, build, serverMode, {\n      result: singleFetchResult,\n      headers,\n      status: context.statusCode\n    });\n  }\n}\nasync function singleFetchLoaders(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {\n  let routesParam = new URL(request.url).searchParams.get(\"_routes\");\n  let loadRouteIds = routesParam ? new Set(routesParam.split(\",\")) : null;\n  try {\n    let handlerRequest = build.future.v8_passThroughRequests ? request : new Request(handlerUrl, {\n      headers: request.headers,\n      signal: request.signal\n    });\n    let result = await staticHandler.query(handlerRequest, {\n      requestContext: loadContext,\n      filterMatchesToLoad: (m) => !loadRouteIds || loadRouteIds.has(m.route.id),\n      skipLoaderErrorBubbling: true,\n      generateMiddlewareResponse: build.future.v8_middleware ? async (query) => {\n        try {\n          let innerResult = await query(handlerRequest);\n          return handleQueryResult(innerResult);\n        } catch (error) {\n          return handleQueryError(error);\n        }\n      } : void 0,\n      normalizePath: (r) => getNormalizedPath(r, build.basename, build.future)\n    });\n    return handleQueryResult(result);\n  } catch (error) {\n    return handleQueryError(error);\n  }\n  function handleQueryResult(result) {\n    return isResponse(result) ? result : staticContextToResponse(result);\n  }\n  function handleQueryError(error) {\n    handleError(error);\n    return generateSingleFetchResponse(request, build, serverMode, {\n      result: { error },\n      headers: new Headers(),\n      status: 500\n    });\n  }\n  function staticContextToResponse(context) {\n    let headers = getDocumentHeaders(context, build);\n    if (isRedirectStatusCode(context.statusCode) && headers.has(\"Location\")) {\n      return new Response(null, { status: context.statusCode, headers });\n    }\n    if (context.errors) {\n      Object.values(context.errors).forEach((err) => {\n        if (!isRouteErrorResponse(err) || err.error) {\n          handleError(err);\n        }\n      });\n      context.errors = sanitizeErrors(context.errors, serverMode);\n    }\n    let results = {};\n    let loadedMatches = new Set(\n      context.matches.filter(\n        (m) => loadRouteIds ? loadRouteIds.has(m.route.id) : m.route.loader != null\n      ).map((m) => m.route.id)\n    );\n    if (context.errors) {\n      for (let [id, error] of Object.entries(context.errors)) {\n        results[id] = { error };\n      }\n    }\n    for (let [id, data2] of Object.entries(context.loaderData)) {\n      if (!(id in results) && loadedMatches.has(id)) {\n        results[id] = { data: data2 };\n      }\n    }\n    return generateSingleFetchResponse(request, build, serverMode, {\n      result: results,\n      headers,\n      status: context.statusCode\n    });\n  }\n}\nfunction generateSingleFetchResponse(request, build, serverMode, {\n  result,\n  headers,\n  status\n}) {\n  let resultHeaders = new Headers(headers);\n  resultHeaders.set(\"X-Remix-Response\", \"yes\");\n  if (SERVER_NO_BODY_STATUS_CODES.has(status)) {\n    return new Response(null, { status, headers: resultHeaders });\n  }\n  resultHeaders.set(\"Content-Type\", \"text/x-script\");\n  resultHeaders.delete(\"Content-Length\");\n  return new Response(\n    encodeViaTurboStream(\n      result,\n      request.signal,\n      build.entry.module.streamTimeout,\n      serverMode\n    ),\n    {\n      status: status || 200,\n      headers: resultHeaders\n    }\n  );\n}\nfunction generateSingleFetchRedirectResponse(redirectResponse, request, build, serverMode) {\n  let redirect2 = getSingleFetchRedirect(\n    redirectResponse.status,\n    redirectResponse.headers,\n    build.basename\n  );\n  let headers = new Headers(redirectResponse.headers);\n  headers.delete(\"Location\");\n  headers.set(\"Content-Type\", \"text/x-script\");\n  return generateSingleFetchResponse(request, build, serverMode, {\n    result: request.method === \"GET\" ? { [SingleFetchRedirectSymbol]: redirect2 } : redirect2,\n    headers,\n    status: SINGLE_FETCH_REDIRECT_STATUS\n  });\n}\nfunction getSingleFetchRedirect(status, headers, basename) {\n  let redirect2 = headers.get(\"Location\");\n  if (basename) {\n    redirect2 = stripBasename(redirect2, basename) || redirect2;\n  }\n  return {\n    redirect: redirect2,\n    status,\n    revalidate: (\n      // Technically X-Remix-Revalidate isn't needed here - that was an implementation\n      // detail of ?_data requests as our way to tell the front end to revalidate when\n      // we didn't have a response body to include that information in.\n      // With single fetch, we tell the front end via this revalidate boolean field.\n      // However, we're respecting it for now because it may be something folks have\n      // used in their own responses\n      // TODO(v3): Consider removing or making this official public API\n      headers.has(\"X-Remix-Revalidate\") || headers.has(\"Set-Cookie\")\n    ),\n    reload: headers.has(\"X-Remix-Reload-Document\"),\n    replace: headers.has(\"X-Remix-Replace\")\n  };\n}\nfunction encodeViaTurboStream(data2, requestSignal, streamTimeout, serverMode) {\n  let controller = new AbortController();\n  let timeoutId = setTimeout(\n    () => {\n      controller.abort(new Error(\"Server Timeout\"));\n      cleanupCallbacks();\n    },\n    typeof streamTimeout === \"number\" ? streamTimeout : 4950\n  );\n  let abortControllerOnRequestAbort = () => {\n    controller.abort(requestSignal.reason);\n    cleanupCallbacks();\n  };\n  requestSignal.addEventListener(\"abort\", abortControllerOnRequestAbort);\n  let cleanupCallbacks = () => {\n    clearTimeout(timeoutId);\n    requestSignal.removeEventListener(\"abort\", abortControllerOnRequestAbort);\n  };\n  return encode(data2, {\n    signal: controller.signal,\n    onComplete: cleanupCallbacks,\n    plugins: [\n      (value) => {\n        if (value instanceof Error) {\n          let { name, message, stack } = serverMode === \"production\" /* Production */ ? sanitizeError(value, serverMode) : value;\n          return [\"SanitizedError\", name, message, stack];\n        }\n        if (value instanceof ErrorResponseImpl) {\n          let { data: data3, status, statusText } = value;\n          return [\"ErrorResponse\", data3, status, statusText];\n        }\n        if (value && typeof value === \"object\" && SingleFetchRedirectSymbol in value) {\n          return [\"SingleFetchRedirect\", value[SingleFetchRedirectSymbol]];\n        }\n      }\n    ],\n    postPlugins: [\n      (value) => {\n        if (!value) return;\n        if (typeof value !== \"object\") return;\n        return [\n          \"SingleFetchClassInstance\",\n          Object.fromEntries(Object.entries(value))\n        ];\n      },\n      () => [\"SingleFetchFallback\"]\n    ]\n  });\n}\n\n// lib/server-runtime/server.ts\nfunction derive(build, mode) {\n  let dataRoutes = createStaticHandlerDataRoutes(build.routes, build.future);\n  let serverMode = isServerMode(mode) ? mode : \"production\" /* Production */;\n  let staticHandler = createStaticHandler(dataRoutes, {\n    basename: build.basename,\n    instrumentations: build.entry.module.instrumentations,\n    future: build.future\n  });\n  let errorHandler = build.entry.module.handleError || ((error, { request }) => {\n    if (serverMode !== \"test\" /* Test */ && !request.signal.aborted) {\n      console.error(\n        // @ts-expect-error This is \"private\" from users but intended for internal use\n        isRouteErrorResponse(error) && error.error ? error.error : error\n      );\n    }\n  });\n  let requestHandler = async (request, initialContext) => {\n    let params = {};\n    let loadContext;\n    let handleError = (error) => {\n      if (mode === \"development\" /* Development */) {\n        getDevServerHooks()?.processRequestError?.(error);\n      }\n      errorHandler(error, {\n        context: loadContext,\n        params,\n        request\n      });\n    };\n    if (build.future.v8_middleware) {\n      if (initialContext && !(initialContext instanceof RouterContextProvider)) {\n        let error = new Error(\n          \"Invalid `context` value provided to `handleRequest`. When middleware is enabled you must return an instance of `RouterContextProvider` from your `getLoadContext` function.\"\n        );\n        handleError(error);\n        return returnLastResortErrorResponse(error, serverMode);\n      }\n      loadContext = initialContext || new RouterContextProvider();\n    } else {\n      loadContext = initialContext || {};\n    }\n    let requestUrl = new URL(request.url);\n    let normalizedPathname = getNormalizedPath(\n      request,\n      build.basename,\n      build.future\n    ).pathname;\n    let isSpaMode = getBuildTimeHeader(request, \"X-React-Router-SPA-Mode\") === \"yes\";\n    if (!build.ssr) {\n      let decodedPath = decodeURI(normalizedPathname);\n      if (build.basename && build.basename !== \"/\") {\n        let strippedPath = stripBasename(decodedPath, build.basename);\n        if (strippedPath == null) {\n          errorHandler(\n            new ErrorResponseImpl(\n              404,\n              \"Not Found\",\n              `Refusing to prerender the \\`${decodedPath}\\` path because it does not start with the basename \\`${build.basename}\\``\n            ),\n            {\n              context: loadContext,\n              params,\n              request\n            }\n          );\n          return new Response(\"Not Found\", {\n            status: 404,\n            statusText: \"Not Found\"\n          });\n        }\n        decodedPath = strippedPath;\n      }\n      if (build.prerender.length === 0) {\n        isSpaMode = true;\n      } else if (!build.prerender.includes(decodedPath) && !build.prerender.includes(decodedPath + \"/\")) {\n        if (requestUrl.pathname.endsWith(\".data\")) {\n          errorHandler(\n            new ErrorResponseImpl(\n              404,\n              \"Not Found\",\n              `Refusing to SSR the path \\`${decodedPath}\\` because \\`ssr:false\\` is set and the path is not included in the \\`prerender\\` config, so in production the path will be a 404.`\n            ),\n            {\n              context: loadContext,\n              params,\n              request\n            }\n          );\n          return new Response(\"Not Found\", {\n            status: 404,\n            statusText: \"Not Found\"\n          });\n        } else {\n          isSpaMode = true;\n        }\n      }\n    }\n    let manifestUrl = getManifestPath(\n      build.routeDiscovery.manifestPath,\n      build.basename\n    );\n    if (requestUrl.pathname === manifestUrl) {\n      try {\n        let res = await handleManifestRequest(\n          build,\n          staticHandler.dataRoutes,\n          staticHandler._internalRouteBranches,\n          requestUrl\n        );\n        return res;\n      } catch (e) {\n        handleError(e);\n        return new Response(\"Unknown Server Error\", { status: 500 });\n      }\n    }\n    let matches = matchServerRoutes(\n      build.routes,\n      staticHandler.dataRoutes,\n      staticHandler._internalRouteBranches,\n      normalizedPathname,\n      build.basename\n    );\n    if (matches && matches.length > 0) {\n      Object.assign(params, matches[0].params);\n    }\n    let response;\n    if (requestUrl.pathname.endsWith(\".data\")) {\n      response = await handleSingleFetchRequest(\n        serverMode,\n        build,\n        staticHandler,\n        request,\n        normalizedPathname,\n        loadContext,\n        handleError\n      );\n      if (isRedirectResponse(response)) {\n        response = generateSingleFetchRedirectResponse(\n          response,\n          request,\n          build,\n          serverMode\n        );\n      }\n      if (build.entry.module.handleDataRequest) {\n        response = await build.entry.module.handleDataRequest(response, {\n          context: loadContext,\n          params: matches ? matches[0].params : {},\n          request\n        });\n        if (isRedirectResponse(response)) {\n          response = generateSingleFetchRedirectResponse(\n            response,\n            request,\n            build,\n            serverMode\n          );\n        }\n      }\n    } else if (!isSpaMode && matches && matches[matches.length - 1].route.module.default == null && matches[matches.length - 1].route.module.ErrorBoundary == null) {\n      response = await handleResourceRequest(\n        serverMode,\n        build,\n        staticHandler,\n        matches.slice(-1)[0].route.id,\n        request,\n        loadContext,\n        handleError\n      );\n    } else {\n      let { pathname } = requestUrl;\n      let criticalCss = void 0;\n      if (build.unstable_getCriticalCss) {\n        criticalCss = await build.unstable_getCriticalCss({ pathname });\n      } else if (mode === \"development\" /* Development */ && getDevServerHooks()?.getCriticalCss) {\n        criticalCss = await getDevServerHooks()?.getCriticalCss?.(pathname);\n      }\n      response = await handleDocumentRequest(\n        serverMode,\n        build,\n        staticHandler,\n        request,\n        loadContext,\n        handleError,\n        isSpaMode,\n        criticalCss\n      );\n    }\n    if (request.method === \"HEAD\") {\n      return new Response(null, {\n        headers: response.headers,\n        status: response.status,\n        statusText: response.statusText\n      });\n    }\n    return response;\n  };\n  if (build.entry.module.instrumentations) {\n    requestHandler = instrumentHandler(\n      requestHandler,\n      build.entry.module.instrumentations.map((i) => i.handler).filter(Boolean)\n    );\n  }\n  return {\n    serverMode,\n    staticHandler,\n    errorHandler,\n    requestHandler\n  };\n}\nvar createRequestHandler = (build, mode) => {\n  let _build;\n  let serverMode;\n  let staticHandler;\n  let errorHandler;\n  let _requestHandler;\n  return async function requestHandler(request, initialContext) {\n    _build = typeof build === \"function\" ? await build() : build;\n    if (typeof build === \"function\") {\n      let derived = derive(_build, mode);\n      serverMode = derived.serverMode;\n      staticHandler = derived.staticHandler;\n      errorHandler = derived.errorHandler;\n      _requestHandler = derived.requestHandler;\n    } else if (!serverMode || !staticHandler || !errorHandler || !_requestHandler) {\n      let derived = derive(_build, mode);\n      serverMode = derived.serverMode;\n      staticHandler = derived.staticHandler;\n      errorHandler = derived.errorHandler;\n      _requestHandler = derived.requestHandler;\n    }\n    return _requestHandler(request, initialContext);\n  };\n};\nasync function handleManifestRequest(build, dataRoutes, branches, url) {\n  if (build.assets.version !== url.searchParams.get(\"version\")) {\n    return new Response(null, {\n      status: 204,\n      headers: {\n        \"X-Remix-Reload-Document\": \"true\"\n      }\n    });\n  }\n  if (url.toString().length > URL_LIMIT) {\n    return new Response(null, {\n      statusText: \"Bad Request\",\n      status: 400\n    });\n  }\n  let patches = {};\n  if (url.searchParams.has(\"paths\")) {\n    let paths = /* @__PURE__ */ new Set();\n    let pathParam = url.searchParams.get(\"paths\") || \"\";\n    let requestedPaths = pathParam.split(\",\").filter(Boolean);\n    requestedPaths.forEach((path) => {\n      if (!path.startsWith(\"/\")) {\n        path = `/${path}`;\n      }\n      let segments = path.split(\"/\").slice(1);\n      segments.forEach((_, i) => {\n        let partialPath = segments.slice(0, i + 1).join(\"/\");\n        paths.add(`/${partialPath}`);\n      });\n    });\n    for (let path of paths) {\n      let matches = matchServerRoutes(\n        build.routes,\n        dataRoutes,\n        branches,\n        path,\n        build.basename\n      );\n      if (matches) {\n        for (let match of matches) {\n          let routeId = match.route.id;\n          let route = build.assets.routes[routeId];\n          if (route) {\n            patches[routeId] = route;\n          }\n        }\n      }\n    }\n    return Response.json(patches, {\n      headers: {\n        \"Cache-Control\": \"public, max-age=31536000, immutable\"\n      }\n    });\n  }\n  return new Response(\"Invalid Request\", { status: 400 });\n}\nasync function handleSingleFetchRequest(serverMode, build, staticHandler, request, normalizedPath, loadContext, handleError) {\n  let handlerUrl = new URL(request.url);\n  handlerUrl.pathname = normalizedPath;\n  let response = isMutationMethod(request.method) ? await singleFetchAction(\n    build,\n    serverMode,\n    staticHandler,\n    request,\n    handlerUrl,\n    loadContext,\n    handleError\n  ) : await singleFetchLoaders(\n    build,\n    serverMode,\n    staticHandler,\n    request,\n    handlerUrl,\n    loadContext,\n    handleError\n  );\n  return response;\n}\nasync function handleDocumentRequest(serverMode, build, staticHandler, request, loadContext, handleError, isSpaMode, criticalCss) {\n  try {\n    if (isMutationMethod(request.method)) {\n      try {\n        throwIfPotentialCSRFAttack(\n          request.headers,\n          Array.isArray(build.allowedActionOrigins) ? build.allowedActionOrigins : []\n        );\n      } catch (e) {\n        handleError(e);\n        return new Response(\"Bad Request\", { status: 400 });\n      }\n    }\n    let result = await staticHandler.query(request, {\n      requestContext: loadContext,\n      generateMiddlewareResponse: build.future.v8_middleware ? async (query) => {\n        try {\n          let innerResult = await query(request);\n          if (!isResponse(innerResult)) {\n            innerResult = await renderHtml(innerResult, isSpaMode);\n          }\n          return innerResult;\n        } catch (error) {\n          handleError(error);\n          return new Response(null, { status: 500 });\n        }\n      } : void 0,\n      normalizePath: (r) => getNormalizedPath(r, build.basename, build.future)\n    });\n    if (!isResponse(result)) {\n      result = await renderHtml(result, isSpaMode);\n    }\n    return result;\n  } catch (error) {\n    handleError(error);\n    return new Response(null, { status: 500 });\n  }\n  async function renderHtml(context, isSpaMode2) {\n    let headers = getDocumentHeaders(context, build);\n    if (SERVER_NO_BODY_STATUS_CODES.has(context.statusCode)) {\n      return new Response(null, { status: context.statusCode, headers });\n    }\n    if (context.errors) {\n      Object.values(context.errors).forEach((err) => {\n        if (!isRouteErrorResponse(err) || err.error) {\n          handleError(err);\n        }\n      });\n      context.errors = sanitizeErrors(context.errors, serverMode);\n    }\n    let state = {\n      loaderData: context.loaderData,\n      actionData: context.actionData,\n      errors: serializeErrors(context.errors, serverMode)\n    };\n    let baseServerHandoff = {\n      basename: build.basename,\n      future: build.future,\n      routeDiscovery: build.routeDiscovery,\n      ssr: build.ssr,\n      isSpaMode: isSpaMode2\n    };\n    let entryContext = {\n      manifest: build.assets,\n      branches: staticHandler._internalRouteBranches,\n      routeModules: createEntryRouteModules(build.routes),\n      staticHandlerContext: context,\n      criticalCss,\n      serverHandoffString: createServerHandoffString({\n        ...baseServerHandoff,\n        criticalCss\n      }),\n      serverHandoffStream: encodeViaTurboStream(\n        state,\n        request.signal,\n        build.entry.module.streamTimeout,\n        serverMode\n      ),\n      renderMeta: {},\n      future: build.future,\n      ssr: build.ssr,\n      routeDiscovery: build.routeDiscovery,\n      isSpaMode: isSpaMode2,\n      serializeError: (err) => serializeError(err, serverMode)\n    };\n    let handleDocumentRequestFunction = build.entry.module.default;\n    try {\n      return await handleDocumentRequestFunction(\n        request,\n        context.statusCode,\n        headers,\n        entryContext,\n        loadContext\n      );\n    } catch (error) {\n      handleError(error);\n      let errorForSecondRender = error;\n      if (isResponse(error)) {\n        try {\n          let data2 = await unwrapResponse(error);\n          errorForSecondRender = new ErrorResponseImpl(\n            error.status,\n            error.statusText,\n            data2\n          );\n        } catch (e) {\n        }\n      }\n      context = getStaticContextFromError(\n        staticHandler.dataRoutes,\n        context,\n        errorForSecondRender\n      );\n      if (context.errors) {\n        context.errors = sanitizeErrors(context.errors, serverMode);\n      }\n      let state2 = {\n        loaderData: context.loaderData,\n        actionData: context.actionData,\n        errors: serializeErrors(context.errors, serverMode)\n      };\n      entryContext = {\n        ...entryContext,\n        staticHandlerContext: context,\n        serverHandoffString: createServerHandoffString(baseServerHandoff),\n        serverHandoffStream: encodeViaTurboStream(\n          state2,\n          request.signal,\n          build.entry.module.streamTimeout,\n          serverMode\n        ),\n        renderMeta: {}\n      };\n      try {\n        return await handleDocumentRequestFunction(\n          request,\n          context.statusCode,\n          headers,\n          entryContext,\n          loadContext\n        );\n      } catch (error2) {\n        handleError(error2);\n        return returnLastResortErrorResponse(error2, serverMode);\n      }\n    }\n  }\n}\nasync function handleResourceRequest(serverMode, build, staticHandler, routeId, request, loadContext, handleError) {\n  try {\n    let result = await staticHandler.queryRoute(request, {\n      routeId,\n      requestContext: loadContext,\n      generateMiddlewareResponse: build.future.v8_middleware ? async (queryRoute) => {\n        try {\n          let innerResult = await queryRoute(request);\n          return handleQueryRouteResult(innerResult);\n        } catch (error) {\n          return handleQueryRouteError(error);\n        }\n      } : void 0,\n      normalizePath: (r) => getNormalizedPath(r, build.basename, build.future)\n    });\n    return handleQueryRouteResult(result);\n  } catch (error) {\n    return handleQueryRouteError(error);\n  }\n  function handleQueryRouteResult(result) {\n    if (isResponse(result)) {\n      return result;\n    }\n    if (typeof result === \"string\") {\n      return new Response(result);\n    }\n    return Response.json(result);\n  }\n  function handleQueryRouteError(error) {\n    if (isResponse(error)) {\n      return error;\n    }\n    if (isRouteErrorResponse(error)) {\n      handleError(error);\n      return errorResponseToJson(error, serverMode);\n    }\n    if (error instanceof Error && error.message === \"Expected a response from queryRoute\") {\n      let newError = new Error(\n        \"Expected a Response to be returned from resource route handler\"\n      );\n      handleError(newError);\n      return returnLastResortErrorResponse(newError, serverMode);\n    }\n    handleError(error);\n    return returnLastResortErrorResponse(error, serverMode);\n  }\n}\nfunction errorResponseToJson(errorResponse, serverMode) {\n  return Response.json(\n    serializeError(\n      // @ts-expect-error This is \"private\" from users but intended for internal use\n      errorResponse.error || new Error(\"Unexpected Server Error\"),\n      serverMode\n    ),\n    {\n      status: errorResponse.status,\n      statusText: errorResponse.statusText\n    }\n  );\n}\nfunction returnLastResortErrorResponse(error, serverMode) {\n  let message = \"Unexpected Server Error\";\n  if (serverMode !== \"production\" /* Production */) {\n    message += `\n\n${String(error)}`;\n  }\n  return new Response(message, {\n    status: 500,\n    headers: {\n      \"Content-Type\": \"text/plain\"\n    }\n  });\n}\nfunction unwrapResponse(response) {\n  let contentType = response.headers.get(\"Content-Type\");\n  return contentType && /\\bapplication\\/json\\b/.test(contentType) ? response.body == null ? null : response.json() : response.text();\n}\n\n// lib/server-runtime/sessions.ts\nfunction flash(name) {\n  return `__flash_${name}__`;\n}\nvar createSession = (initialData = {}, id = \"\") => {\n  let map = new Map(Object.entries(initialData));\n  return {\n    get id() {\n      return id;\n    },\n    get data() {\n      return Object.fromEntries(map);\n    },\n    has(name) {\n      return map.has(name) || map.has(flash(name));\n    },\n    get(name) {\n      if (map.has(name)) return map.get(name);\n      let flashName = flash(name);\n      if (map.has(flashName)) {\n        let value = map.get(flashName);\n        map.delete(flashName);\n        return value;\n      }\n      return void 0;\n    },\n    set(name, value) {\n      map.set(name, value);\n    },\n    flash(name, value) {\n      map.set(flash(name), value);\n    },\n    unset(name) {\n      map.delete(name);\n    }\n  };\n};\nvar isSession = (object) => {\n  return object != null && typeof object.id === \"string\" && typeof object.data !== \"undefined\" && typeof object.has === \"function\" && typeof object.get === \"function\" && typeof object.set === \"function\" && typeof object.flash === \"function\" && typeof object.unset === \"function\";\n};\nfunction createSessionStorage({\n  cookie: cookieArg,\n  createData,\n  readData,\n  updateData,\n  deleteData\n}) {\n  let cookie = isCookie(cookieArg) ? cookieArg : createCookie(cookieArg?.name || \"__session\", cookieArg);\n  warnOnceAboutSigningSessionCookie(cookie);\n  return {\n    async getSession(cookieHeader, options) {\n      let id = cookieHeader && await cookie.parse(cookieHeader, options);\n      let data2 = id && await readData(id);\n      return createSession(data2 || {}, id || \"\");\n    },\n    async commitSession(session, options) {\n      let { id, data: data2 } = session;\n      let expires = options?.maxAge != null ? new Date(Date.now() + options.maxAge * 1e3) : options?.expires != null ? options.expires : cookie.expires;\n      if (id) {\n        await updateData(id, data2, expires);\n      } else {\n        id = await createData(data2, expires);\n      }\n      return cookie.serialize(id, options);\n    },\n    async destroySession(session, options) {\n      await deleteData(session.id);\n      return cookie.serialize(\"\", {\n        ...options,\n        maxAge: void 0,\n        expires: /* @__PURE__ */ new Date(0)\n      });\n    }\n  };\n}\nfunction warnOnceAboutSigningSessionCookie(cookie) {\n  warnOnce(\n    cookie.isSigned,\n    `The \"${cookie.name}\" cookie is not signed, but session cookies should be signed to prevent tampering on the client before they are sent back to the server. See https://reactrouter.com/explanation/sessions-and-cookies#signing-cookies for more information.`\n  );\n}\n\n// lib/server-runtime/sessions/cookieStorage.ts\nfunction createCookieSessionStorage({ cookie: cookieArg } = {}) {\n  let cookie = isCookie(cookieArg) ? cookieArg : createCookie(cookieArg?.name || \"__session\", cookieArg);\n  warnOnceAboutSigningSessionCookie(cookie);\n  return {\n    async getSession(cookieHeader, options) {\n      return createSession(\n        cookieHeader && await cookie.parse(cookieHeader, options) || {}\n      );\n    },\n    async commitSession(session, options) {\n      let serializedCookie = await cookie.serialize(session.data, options);\n      if (serializedCookie.length > 4096) {\n        throw new Error(\n          \"Cookie length will exceed browser maximum. Length: \" + serializedCookie.length\n        );\n      }\n      return serializedCookie;\n    },\n    async destroySession(_session, options) {\n      return cookie.serialize(\"\", {\n        ...options,\n        maxAge: void 0,\n        expires: /* @__PURE__ */ new Date(0)\n      });\n    }\n  };\n}\n\n// lib/server-runtime/sessions/memoryStorage.ts\nfunction createMemorySessionStorage({ cookie } = {}) {\n  let map = /* @__PURE__ */ new Map();\n  return createSessionStorage({\n    cookie,\n    async createData(data2, expires) {\n      let id = Math.random().toString(36).substring(2, 10);\n      map.set(id, { data: data2, expires });\n      return id;\n    },\n    async readData(id) {\n      if (map.has(id)) {\n        let { data: data2, expires } = map.get(id);\n        if (!expires || expires > /* @__PURE__ */ new Date()) {\n          return data2;\n        }\n        if (expires) map.delete(id);\n      }\n      return null;\n    },\n    async updateData(id, data2, expires) {\n      map.set(id, { data: data2, expires });\n    },\n    async deleteData(id) {\n      map.delete(id);\n    }\n  });\n}\n\n// lib/href.ts\nfunction href(path, ...args) {\n  let params = args[0];\n  let result = trimTrailingSplat(path).replace(\n    /\\/:([\\w-]+)(\\?)?/g,\n    // same regex as in .\\router\\utils.ts: compilePath().\n    (_, param, questionMark) => {\n      const isRequired = questionMark === void 0;\n      const value = params?.[param];\n      if (isRequired && value === void 0) {\n        throw new Error(\n          `Path '${path}' requires param '${param}' but it was not provided`\n        );\n      }\n      return value === void 0 ? \"\" : \"/\" + value;\n    }\n  );\n  if (path.endsWith(\"*\")) {\n    const value = params?.[\"*\"];\n    if (value !== void 0) {\n      result += \"/\" + value;\n    }\n  }\n  return result || \"/\";\n}\nfunction trimTrailingSplat(path) {\n  let i = path.length - 1;\n  let char = path[i];\n  if (char !== \"*\" && char !== \"/\") return path;\n  i--;\n  for (; i >= 0; i--) {\n    if (path[i] !== \"/\") break;\n  }\n  return path.slice(0, i + 1);\n}\n\n// lib/rsc/server.ssr.tsx\nimport * as React4 from \"react\";\n\n// lib/rsc/html-stream/server.ts\nvar encoder2 = new TextEncoder();\nvar trailer = \"</body></html>\";\nfunction injectRSCPayload(rscStream) {\n  let decoder = new TextDecoder();\n  let resolveFlightDataPromise;\n  let flightDataPromise = new Promise(\n    (resolve) => resolveFlightDataPromise = resolve\n  );\n  let startedRSC = false;\n  let buffered = [];\n  let timeout = null;\n  function flushBufferedChunks(controller) {\n    for (let chunk of buffered) {\n      let buf = decoder.decode(chunk, { stream: true });\n      if (buf.endsWith(trailer)) {\n        buf = buf.slice(0, -trailer.length);\n      }\n      controller.enqueue(encoder2.encode(buf));\n    }\n    buffered.length = 0;\n    timeout = null;\n  }\n  return new TransformStream({\n    transform(chunk, controller) {\n      buffered.push(chunk);\n      if (timeout) {\n        return;\n      }\n      timeout = setTimeout(async () => {\n        flushBufferedChunks(controller);\n        if (!startedRSC) {\n          startedRSC = true;\n          writeRSCStream(rscStream, controller).catch((err) => controller.error(err)).then(resolveFlightDataPromise);\n        }\n      }, 0);\n    },\n    async flush(controller) {\n      await flightDataPromise;\n      if (timeout) {\n        clearTimeout(timeout);\n        flushBufferedChunks(controller);\n      }\n      controller.enqueue(encoder2.encode(\"</body></html>\"));\n    }\n  });\n}\nasync function writeRSCStream(rscStream, controller) {\n  let decoder = new TextDecoder(\"utf-8\", { fatal: true });\n  const reader = rscStream.getReader();\n  try {\n    let read;\n    while ((read = await reader.read()) && !read.done) {\n      const chunk = read.value;\n      try {\n        writeChunk(\n          JSON.stringify(decoder.decode(chunk, { stream: true })),\n          controller\n        );\n      } catch (e) {\n        let base64 = JSON.stringify(btoa(String.fromCodePoint(...chunk)));\n        writeChunk(\n          `Uint8Array.from(atob(${base64}), m => m.codePointAt(0))`,\n          controller\n        );\n      }\n    }\n  } finally {\n    reader.releaseLock();\n  }\n  let remaining = decoder.decode();\n  if (remaining.length) {\n    writeChunk(JSON.stringify(remaining), controller);\n  }\n}\nfunction writeChunk(chunk, controller) {\n  controller.enqueue(\n    encoder2.encode(\n      `<script>${escapeScript(\n        `(self.__FLIGHT_DATA||=[]).push(${chunk})`\n      )}</script>`\n    )\n  );\n}\nfunction escapeScript(script) {\n  return script.replace(/<!--/g, \"<\\\\!--\").replace(/<\\/(script)/gi, \"</\\\\$1\");\n}\n\n// lib/rsc/errorBoundaries.tsx\nimport React3 from \"react\";\nvar RSCRouterGlobalErrorBoundary = class extends React3.Component {\n  constructor(props) {\n    super(props);\n    this.state = { error: null, location: props.location };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  static getDerivedStateFromProps(props, state) {\n    if (state.location !== props.location) {\n      return { error: null, location: props.location };\n    }\n    return { error: state.error, location: state.location };\n  }\n  render() {\n    if (this.state.error) {\n      return /* @__PURE__ */ React3.createElement(\n        RSCDefaultRootErrorBoundaryImpl,\n        {\n          error: this.state.error,\n          renderAppShell: true\n        }\n      );\n    } else {\n      return this.props.children;\n    }\n  }\n};\nfunction ErrorWrapper({\n  renderAppShell,\n  title,\n  children\n}) {\n  if (!renderAppShell) {\n    return children;\n  }\n  return /* @__PURE__ */ React3.createElement(\"html\", { lang: \"en\" }, /* @__PURE__ */ React3.createElement(\"head\", null, /* @__PURE__ */ React3.createElement(\"meta\", { charSet: \"utf-8\" }), /* @__PURE__ */ React3.createElement(\n    \"meta\",\n    {\n      name: \"viewport\",\n      content: \"width=device-width,initial-scale=1,viewport-fit=cover\"\n    }\n  ), /* @__PURE__ */ React3.createElement(\"title\", null, title)), /* @__PURE__ */ React3.createElement(\"body\", null, /* @__PURE__ */ React3.createElement(\"main\", { style: { fontFamily: \"system-ui, sans-serif\", padding: \"2rem\" } }, children)));\n}\nfunction RSCDefaultRootErrorBoundaryImpl({\n  error,\n  renderAppShell\n}) {\n  console.error(error);\n  let heyDeveloper = /* @__PURE__ */ React3.createElement(\n    \"script\",\n    {\n      dangerouslySetInnerHTML: {\n        __html: `\n        console.log(\n          \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this when your app throws errors. Check out https://reactrouter.com/how-to/error-boundary for more information.\"\n        );\n      `\n      }\n    }\n  );\n  if (isRouteErrorResponse(error)) {\n    return /* @__PURE__ */ React3.createElement(\n      ErrorWrapper,\n      {\n        renderAppShell,\n        title: \"Unhandled Thrown Response!\"\n      },\n      /* @__PURE__ */ React3.createElement(\"h1\", { style: { fontSize: \"24px\" } }, error.status, \" \", error.statusText),\n      ENABLE_DEV_WARNINGS ? heyDeveloper : null\n    );\n  }\n  let errorInstance;\n  if (error instanceof Error) {\n    errorInstance = error;\n  } else {\n    let errorString = error == null ? \"Unknown Error\" : typeof error === \"object\" && \"toString\" in error ? error.toString() : JSON.stringify(error);\n    errorInstance = new Error(errorString);\n  }\n  return /* @__PURE__ */ React3.createElement(ErrorWrapper, { renderAppShell, title: \"Application Error!\" }, /* @__PURE__ */ React3.createElement(\"h1\", { style: { fontSize: \"24px\" } }, \"Application Error\"), /* @__PURE__ */ React3.createElement(\n    \"pre\",\n    {\n      style: {\n        padding: \"2rem\",\n        background: \"hsla(10, 50%, 50%, 0.1)\",\n        color: \"red\",\n        overflow: \"auto\"\n      }\n    },\n    errorInstance.stack\n  ), heyDeveloper);\n}\nfunction RSCDefaultRootErrorBoundary({\n  hasRootLayout\n}) {\n  let error = useRouteError();\n  if (hasRootLayout === void 0) {\n    throw new Error(\"Missing 'hasRootLayout' prop\");\n  }\n  return /* @__PURE__ */ React3.createElement(\n    RSCDefaultRootErrorBoundaryImpl,\n    {\n      renderAppShell: !hasRootLayout,\n      error\n    }\n  );\n}\n\n// lib/rsc/route-modules.ts\nfunction createRSCRouteModules(payload) {\n  const routeModules = {};\n  for (const match of payload.matches) {\n    populateRSCRouteModules(routeModules, match);\n  }\n  return routeModules;\n}\nfunction populateRSCRouteModules(routeModules, matches) {\n  matches = Array.isArray(matches) ? matches : [matches];\n  for (const match of matches) {\n    routeModules[match.id] = {\n      links: match.links,\n      meta: match.meta,\n      default: noopComponent\n    };\n  }\n}\nvar noopComponent = () => null;\n\n// lib/rsc/server.ssr.tsx\nvar defaultManifestPath = \"/__manifest\";\nvar REACT_USE = \"use\";\nvar useImpl = React4[REACT_USE];\nfunction useSafe(promise) {\n  if (useImpl) {\n    return useImpl(promise);\n  }\n  throw new Error(\"React Router v7 requires React 19+ for RSC features.\");\n}\nasync function routeRSCServerRequest({\n  request,\n  serverResponse,\n  createFromReadableStream,\n  renderHTML,\n  hydrate = true\n}) {\n  const url = new URL(request.url);\n  const isDataRequest = isReactServerRequest(url);\n  const respondWithRSCPayload = isDataRequest || isManifestRequest(url) || request.headers.has(\"rsc-action-id\");\n  if (respondWithRSCPayload || serverResponse.headers.get(\"React-Router-Resource\") === \"true\") {\n    return serverResponse;\n  }\n  if (!serverResponse.body) {\n    throw new Error(\"Missing body in server response\");\n  }\n  const detectRedirectResponse = serverResponse.clone();\n  let serverResponseB = null;\n  if (hydrate) {\n    serverResponseB = serverResponse.clone();\n  }\n  const body = serverResponse.body;\n  let buffer;\n  let streamControllers = [];\n  const createStream = () => {\n    if (!buffer) {\n      buffer = [];\n      return body.pipeThrough(\n        new TransformStream({\n          transform(chunk, controller) {\n            buffer.push(chunk);\n            controller.enqueue(chunk);\n            streamControllers.forEach((c) => c.enqueue(chunk));\n          },\n          flush() {\n            streamControllers.forEach((c) => c.close());\n            streamControllers = [];\n          }\n        })\n      );\n    }\n    return new ReadableStream({\n      start(controller) {\n        buffer.forEach((chunk) => controller.enqueue(chunk));\n        streamControllers.push(controller);\n      }\n    });\n  };\n  let deepestRenderedBoundaryId = null;\n  const getPayload = () => {\n    const payloadPromise = Promise.resolve(\n      createFromReadableStream(createStream())\n    );\n    return Object.defineProperties(payloadPromise, {\n      _deepestRenderedBoundaryId: {\n        get() {\n          return deepestRenderedBoundaryId;\n        },\n        set(boundaryId) {\n          deepestRenderedBoundaryId = boundaryId;\n        }\n      },\n      formState: {\n        get() {\n          return payloadPromise.then(\n            (payload) => payload.type === \"render\" ? payload.formState : void 0\n          );\n        }\n      }\n    });\n  };\n  let renderRedirect;\n  let renderError;\n  try {\n    if (!detectRedirectResponse.body) {\n      throw new Error(\"Failed to clone server response\");\n    }\n    const payload = await createFromReadableStream(\n      detectRedirectResponse.body\n    );\n    if (serverResponse.status === SINGLE_FETCH_REDIRECT_STATUS && payload.type === \"redirect\") {\n      const headers2 = new Headers(serverResponse.headers);\n      headers2.delete(\"Content-Encoding\");\n      headers2.delete(\"Content-Length\");\n      headers2.delete(\"Content-Type\");\n      headers2.delete(\"X-Remix-Response\");\n      headers2.set(\"Location\", payload.location);\n      return new Response(serverResponseB?.body || \"\", {\n        headers: headers2,\n        status: payload.status,\n        statusText: serverResponse.statusText\n      });\n    }\n    let reactHeaders = new Headers();\n    let status = serverResponse.status;\n    let statusText = serverResponse.statusText;\n    let html = await renderHTML(getPayload, {\n      onError(error) {\n        if (typeof error === \"object\" && error && \"digest\" in error && typeof error.digest === \"string\") {\n          renderRedirect = decodeRedirectErrorDigest(error.digest);\n          if (renderRedirect) {\n            return error.digest;\n          }\n          let routeErrorResponse = decodeRouteErrorResponseDigest(error.digest);\n          if (routeErrorResponse) {\n            renderError = routeErrorResponse;\n            status = routeErrorResponse.status;\n            statusText = routeErrorResponse.statusText;\n            return error.digest;\n          }\n        }\n      },\n      onHeaders(headers2) {\n        for (const [key, value] of headers2) {\n          reactHeaders.append(key, value);\n        }\n      }\n    });\n    const headers = new Headers(reactHeaders);\n    for (const [key, value] of serverResponse.headers) {\n      headers.append(key, value);\n    }\n    headers.set(\"Content-Type\", \"text/html; charset=utf-8\");\n    if (renderRedirect) {\n      headers.set(\"Location\", renderRedirect.location);\n      return new Response(html, {\n        status: renderRedirect.status,\n        headers\n      });\n    }\n    const redirectTransform = new TransformStream({\n      flush(controller) {\n        if (renderRedirect) {\n          controller.enqueue(\n            new TextEncoder().encode(\n              `<meta http-equiv=\"refresh\" content=\"0;url=${escapeHtml(renderRedirect.location)}\"/>`\n            )\n          );\n        }\n      }\n    });\n    if (!hydrate) {\n      return new Response(html.pipeThrough(redirectTransform), {\n        status,\n        statusText,\n        headers\n      });\n    }\n    if (!serverResponseB?.body) {\n      throw new Error(\"Failed to clone server response\");\n    }\n    const body2 = html.pipeThrough(injectRSCPayload(serverResponseB.body)).pipeThrough(redirectTransform);\n    return new Response(body2, {\n      status,\n      statusText,\n      headers\n    });\n  } catch (error) {\n    if (error instanceof Response) {\n      return error;\n    }\n    if (renderRedirect) {\n      return new Response(`Redirect: ${renderRedirect.location}`, {\n        status: renderRedirect.status,\n        headers: {\n          Location: renderRedirect.location\n        }\n      });\n    }\n    try {\n      let normalizedError = renderError ?? error;\n      let [status, statusText] = isRouteErrorResponse(normalizedError) ? [normalizedError.status, normalizedError.statusText] : [500, \"\"];\n      let retryRedirect;\n      let reactHeaders = new Headers();\n      const html = await renderHTML(\n        () => {\n          const decoded = Promise.resolve(\n            createFromReadableStream(createStream())\n          );\n          const payloadPromise = decoded.then(\n            (payload) => Object.assign(payload, {\n              status,\n              errors: deepestRenderedBoundaryId ? {\n                [deepestRenderedBoundaryId]: normalizedError\n              } : {}\n            })\n          );\n          return Object.defineProperties(payloadPromise, {\n            _deepestRenderedBoundaryId: {\n              get() {\n                return deepestRenderedBoundaryId;\n              },\n              set(boundaryId) {\n                deepestRenderedBoundaryId = boundaryId;\n              }\n            },\n            formState: {\n              get() {\n                return payloadPromise.then(\n                  (payload) => payload.type === \"render\" ? payload.formState : void 0\n                );\n              }\n            }\n          });\n        },\n        {\n          onError(error2) {\n            if (typeof error2 === \"object\" && error2 && \"digest\" in error2 && typeof error2.digest === \"string\") {\n              retryRedirect = decodeRedirectErrorDigest(error2.digest);\n              if (retryRedirect) {\n                return error2.digest;\n              }\n              let routeErrorResponse = decodeRouteErrorResponseDigest(\n                error2.digest\n              );\n              if (routeErrorResponse) {\n                status = routeErrorResponse.status;\n                statusText = routeErrorResponse.statusText;\n                return error2.digest;\n              }\n            }\n          },\n          onHeaders(headers2) {\n            for (const [key, value] of headers2) {\n              reactHeaders.append(key, value);\n            }\n          }\n        }\n      );\n      const headers = new Headers(reactHeaders);\n      for (const [key, value] of serverResponse.headers) {\n        headers.append(key, value);\n      }\n      headers.set(\"Content-Type\", \"text/html; charset=utf-8\");\n      if (retryRedirect) {\n        headers.set(\"Location\", retryRedirect.location);\n        return new Response(html, {\n          status: retryRedirect.status,\n          headers\n        });\n      }\n      const retryRedirectTransform = new TransformStream({\n        flush(controller) {\n          if (retryRedirect) {\n            controller.enqueue(\n              new TextEncoder().encode(\n                `<meta http-equiv=\"refresh\" content=\"0;url=${escapeHtml(retryRedirect.location)}\"/>`\n              )\n            );\n          }\n        }\n      });\n      if (!hydrate) {\n        return new Response(html.pipeThrough(retryRedirectTransform), {\n          status,\n          statusText,\n          headers\n        });\n      }\n      if (!serverResponseB?.body) {\n        throw new Error(\"Failed to clone server response\");\n      }\n      const body2 = html.pipeThrough(injectRSCPayload(serverResponseB.body)).pipeThrough(retryRedirectTransform);\n      return new Response(body2, {\n        status,\n        statusText,\n        headers\n      });\n    } catch (error2) {\n    }\n    throw error;\n  }\n}\nfunction RSCStaticRouter({ getPayload }) {\n  const decoded = getPayload();\n  const payload = useSafe(decoded);\n  if (payload.type === \"redirect\") {\n    throw new Response(null, {\n      status: payload.status,\n      headers: {\n        Location: payload.location\n      }\n    });\n  }\n  if (payload.type !== \"render\") return null;\n  let patchedLoaderData = { ...payload.loaderData };\n  for (const match of payload.matches) {\n    if (shouldHydrateRouteLoader(\n      match.id,\n      match.clientLoader,\n      match.hasLoader,\n      false\n    ) && (match.hydrateFallbackElement || !match.hasLoader)) {\n      delete patchedLoaderData[match.id];\n    }\n  }\n  const context = {\n    get _deepestRenderedBoundaryId() {\n      return decoded._deepestRenderedBoundaryId ?? null;\n    },\n    set _deepestRenderedBoundaryId(boundaryId) {\n      decoded._deepestRenderedBoundaryId = boundaryId;\n    },\n    actionData: payload.actionData,\n    actionHeaders: {},\n    basename: payload.basename,\n    errors: payload.errors,\n    loaderData: patchedLoaderData,\n    loaderHeaders: {},\n    location: payload.location,\n    statusCode: 200,\n    matches: payload.matches.map((match) => ({\n      params: match.params,\n      pathname: match.pathname,\n      pathnameBase: match.pathnameBase,\n      route: {\n        id: match.id,\n        action: match.hasAction || !!match.clientAction,\n        handle: match.handle,\n        hasErrorBoundary: match.hasErrorBoundary,\n        loader: match.hasLoader || !!match.clientLoader,\n        index: match.index,\n        path: match.path,\n        shouldRevalidate: match.shouldRevalidate\n      }\n    }))\n  };\n  const router = createStaticRouter(\n    payload.matches.reduceRight((previous, match) => {\n      const route = {\n        id: match.id,\n        action: match.hasAction || !!match.clientAction,\n        element: match.element,\n        errorElement: match.errorElement,\n        handle: match.handle,\n        hasErrorBoundary: !!match.errorElement,\n        hydrateFallbackElement: match.hydrateFallbackElement,\n        index: match.index,\n        loader: match.hasLoader || !!match.clientLoader,\n        path: match.path,\n        shouldRevalidate: match.shouldRevalidate\n      };\n      if (previous.length > 0) {\n        route.children = previous;\n      }\n      return [route];\n    }, []),\n    context\n  );\n  const frameworkContext = {\n    future: {\n      // These flags have no runtime impact so can always be false.  If we add\n      // flags that drive runtime behavior they'll need to be proxied through.\n      v8_middleware: false,\n      unstable_trailingSlashAwareDataRequests: true,\n      // always on for RSC\n      v8_passThroughRequests: true\n      // always on for RSC\n    },\n    isSpaMode: false,\n    ssr: true,\n    criticalCss: \"\",\n    manifest: {\n      routes: {},\n      version: \"1\",\n      url: \"\",\n      entry: {\n        module: \"\",\n        imports: []\n      }\n    },\n    routeDiscovery: payload.routeDiscovery.mode === \"initial\" ? { mode: \"initial\", manifestPath: defaultManifestPath } : {\n      mode: \"lazy\",\n      manifestPath: payload.routeDiscovery.manifestPath || defaultManifestPath\n    },\n    routeModules: createRSCRouteModules(payload)\n  };\n  return /* @__PURE__ */ React4.createElement(RSCRouterContext.Provider, { value: true }, /* @__PURE__ */ React4.createElement(RSCRouterGlobalErrorBoundary, { location: payload.location }, /* @__PURE__ */ React4.createElement(FrameworkContext.Provider, { value: frameworkContext }, /* @__PURE__ */ React4.createElement(\n    StaticRouterProvider,\n    {\n      context,\n      router,\n      hydrate: false,\n      nonce: payload.nonce\n    }\n  ))));\n}\nfunction isReactServerRequest(url) {\n  return url.pathname.endsWith(\".rsc\");\n}\nfunction isManifestRequest(url) {\n  return url.pathname.endsWith(\".manifest\");\n}\n\n// lib/dom/ssr/errors.ts\nfunction deserializeErrors(errors) {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized = {};\n  for (let [key, val] of entries) {\n    if (val && val.__type === \"RouteErrorResponse\") {\n      serialized[key] = new ErrorResponseImpl(\n        val.status,\n        val.statusText,\n        val.data,\n        val.internal === true\n      );\n    } else if (val && val.__type === \"Error\") {\n      if (val.__subType) {\n        let ErrorConstructor = window[val.__subType];\n        if (typeof ErrorConstructor === \"function\") {\n          try {\n            let error = new ErrorConstructor(val.message);\n            error.stack = val.stack;\n            serialized[key] = error;\n          } catch (e) {\n          }\n        }\n      }\n      if (serialized[key] == null) {\n        let error = new Error(val.message);\n        error.stack = val.stack;\n        serialized[key] = error;\n      }\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\n\n// lib/dom/ssr/hydration.tsx\nfunction getHydrationData({\n  state,\n  routes,\n  getRouteInfo,\n  location,\n  basename,\n  isSpaMode\n}) {\n  let hydrationData = {\n    ...state,\n    loaderData: { ...state.loaderData }\n  };\n  let initialMatches = matchRoutes(routes, location, basename);\n  if (initialMatches) {\n    for (let match of initialMatches) {\n      let routeId = match.route.id;\n      let routeInfo = getRouteInfo(routeId);\n      if (shouldHydrateRouteLoader(\n        routeId,\n        routeInfo.clientLoader,\n        routeInfo.hasLoader,\n        isSpaMode\n      ) && (routeInfo.hasHydrateFallback || !routeInfo.hasLoader)) {\n        delete hydrationData.loaderData[routeId];\n      } else if (!routeInfo.hasLoader) {\n        hydrationData.loaderData[routeId] = null;\n      }\n    }\n  }\n  return hydrationData;\n}\n\nexport {\n  ServerRouter,\n  createRoutesStub,\n  createCookie,\n  isCookie,\n  ServerMode,\n  setDevServerHooks,\n  createRequestHandler,\n  createSession,\n  isSession,\n  createSessionStorage,\n  createCookieSessionStorage,\n  createMemorySessionStorage,\n  href,\n  RSCRouterGlobalErrorBoundary,\n  RSCDefaultRootErrorBoundary,\n  populateRSCRouteModules,\n  routeRSCServerRequest,\n  RSCStaticRouter,\n  deserializeErrors,\n  getHydrationData\n};\n","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var n = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","export var ALIGN_VALUES = ['justify', 'left', 'right'];\nexport var DEFAULT_LABELKEY = 'label';\nexport var SIZES = ['lg', 'sm'];","import { DEFAULT_LABELKEY } from '../constants';\nexport default function getStringLabelKey(labelKey) {\n  return typeof labelKey === 'string' ? labelKey : DEFAULT_LABELKEY;\n}","/**\n * Check if an object has the given property in a type-safe way.\n */\nexport default function hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}","var idCounter = 0;\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isFunction(value) {\n  return typeof value === 'function';\n}\nexport function isString(value) {\n  return typeof value === 'string';\n}\nexport function noop() {}\nexport function pick(obj, keys) {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  var result = {};\n  keys.forEach(function (key) {\n    result[key] = obj[key];\n  });\n  return result;\n}\nexport function uniqueId(prefix) {\n  idCounter += 1;\n  return (prefix == null ? '' : String(prefix)) + idCounter;\n}","import invariant from 'invariant';\nimport getStringLabelKey from './getStringLabelKey';\nimport hasOwnProperty from './hasOwnProperty';\nimport { isFunction, isString } from './nodash';\n/**\n * Retrieves the display string from an option. Options can be the string\n * themselves, or an object with a defined display string. Anything else throws\n * an error.\n */\nfunction getOptionLabel(option, labelKey) {\n  // Handle internally created options first.\n  if (!isString(option) && (hasOwnProperty(option, 'paginationOption') || hasOwnProperty(option, 'customOption'))) {\n    return option[getStringLabelKey(labelKey)];\n  }\n  var optionLabel;\n  if (isFunction(labelKey)) {\n    optionLabel = labelKey(option);\n  } else if (isString(option)) {\n    optionLabel = option;\n  } else {\n    // `option` is an object and `labelKey` is a string.\n    optionLabel = option[labelKey];\n  }\n  !isString(optionLabel) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'One or more options does not have a valid label string. Check the ' + '`labelKey` prop to ensure that it matches the correct option key and ' + 'provides a string for filtering and display.') : invariant(false) : void 0;\n  return optionLabel;\n}\nexport default getOptionLabel;","import getOptionLabel from './getOptionLabel';\nimport { isFunction } from './nodash';\nfunction addCustomOption(results, props) {\n  var allowNew = props.allowNew,\n    labelKey = props.labelKey,\n    text = props.text;\n  if (!allowNew || !text.trim()) {\n    return false;\n  }\n\n  // If the consumer has provided a callback, use that to determine whether or\n  // not to add the custom option.\n  if (isFunction(allowNew)) {\n    return allowNew(results, props);\n  }\n\n  // By default, don't add the custom option if there is an exact text match\n  // with an existing option.\n  return !results.some(function (o) {\n    return getOptionLabel(o, labelKey) === text;\n  });\n}\nexport default addCustomOption;","import { isString } from './nodash';\nexport default function getOptionProperty(option, key) {\n  if (isString(option)) {\n    return undefined;\n  }\n  return option[key];\n}","// prettier-ignore\n\nvar map = [{\n  base: 'A',\n  letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n  base: 'AA',\n  letters: \"\\uA732\"\n}, {\n  base: 'AE',\n  letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n  base: 'AO',\n  letters: \"\\uA734\"\n}, {\n  base: 'AU',\n  letters: \"\\uA736\"\n}, {\n  base: 'AV',\n  letters: \"\\uA738\\uA73A\"\n}, {\n  base: 'AY',\n  letters: \"\\uA73C\"\n}, {\n  base: 'B',\n  letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n  base: 'C',\n  letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n  base: 'D',\n  letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\xD0\"\n}, {\n  base: 'DZ',\n  letters: \"\\u01F1\\u01C4\"\n}, {\n  base: 'Dz',\n  letters: \"\\u01F2\\u01C5\"\n}, {\n  base: 'E',\n  letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n  base: 'F',\n  letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n  base: 'G',\n  letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n  base: 'H',\n  letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n  base: 'I',\n  letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n  base: 'J',\n  letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n  base: 'K',\n  letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n  base: 'L',\n  letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n  base: 'LJ',\n  letters: \"\\u01C7\"\n}, {\n  base: 'Lj',\n  letters: \"\\u01C8\"\n}, {\n  base: 'M',\n  letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n  base: 'N',\n  letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n  base: 'NJ',\n  letters: \"\\u01CA\"\n}, {\n  base: 'Nj',\n  letters: \"\\u01CB\"\n}, {\n  base: 'O',\n  letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n  base: 'OI',\n  letters: \"\\u01A2\"\n}, {\n  base: 'OO',\n  letters: \"\\uA74E\"\n}, {\n  base: 'OU',\n  letters: \"\\u0222\"\n}, {\n  base: 'OE',\n  letters: \"\\x8C\\u0152\"\n}, {\n  base: 'oe',\n  letters: \"\\x9C\\u0153\"\n}, {\n  base: 'P',\n  letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n  base: 'Q',\n  letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n  base: 'R',\n  letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n  base: 'S',\n  letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n  base: 'T',\n  letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n  base: 'TZ',\n  letters: \"\\uA728\"\n}, {\n  base: 'U',\n  letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n  base: 'V',\n  letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n  base: 'VY',\n  letters: \"\\uA760\"\n}, {\n  base: 'W',\n  letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n  base: 'X',\n  letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n  base: 'Y',\n  letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n  base: 'Z',\n  letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n  base: 'a',\n  letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n  base: 'aa',\n  letters: \"\\uA733\"\n}, {\n  base: 'ae',\n  letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n  base: 'ao',\n  letters: \"\\uA735\"\n}, {\n  base: 'au',\n  letters: \"\\uA737\"\n}, {\n  base: 'av',\n  letters: \"\\uA739\\uA73B\"\n}, {\n  base: 'ay',\n  letters: \"\\uA73D\"\n}, {\n  base: 'b',\n  letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n  base: 'c',\n  letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n  base: 'd',\n  letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n  base: 'dz',\n  letters: \"\\u01F3\\u01C6\"\n}, {\n  base: 'e',\n  letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n  base: 'f',\n  letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n  base: 'g',\n  letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n  base: 'h',\n  letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n  base: 'hv',\n  letters: \"\\u0195\"\n}, {\n  base: 'i',\n  letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n  base: 'j',\n  letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n  base: 'k',\n  letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n  base: 'l',\n  letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n  base: 'lj',\n  letters: \"\\u01C9\"\n}, {\n  base: 'm',\n  letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n  base: 'n',\n  letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n  base: 'nj',\n  letters: \"\\u01CC\"\n}, {\n  base: 'o',\n  letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n  base: 'oi',\n  letters: \"\\u01A3\"\n}, {\n  base: 'ou',\n  letters: \"\\u0223\"\n}, {\n  base: 'oo',\n  letters: \"\\uA74F\"\n}, {\n  base: 'p',\n  letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n  base: 'q',\n  letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n  base: 'r',\n  letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n  base: 's',\n  letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n  base: 't',\n  letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n  base: 'tz',\n  letters: \"\\uA729\"\n}, {\n  base: 'u',\n  letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n  base: 'v',\n  letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n  base: 'vy',\n  letters: \"\\uA761\"\n}, {\n  base: 'w',\n  letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n  base: 'x',\n  letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n  base: 'y',\n  letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n  base: 'z',\n  letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}].reduce(function (acc, _ref) {\n  var base = _ref.base,\n    letters = _ref.letters;\n  letters.split('').forEach(function (letter) {\n    acc[letter] = base;\n  });\n  return acc;\n}, {});\n\n// Combining marks\nvar latin = \"\\u0300-\\u036F\";\nvar japanese = \"\\u3099\\u309A\";\nexport default function stripDiacritics(str) {\n  return str.normalize('NFD')\n  // Remove combining diacritics\n  .replace(new RegExp(\"[\".concat(latin).concat(japanese, \"]\"), 'g'), '')\n  /* eslint-disable-next-line no-control-regex */.replace(/[^\\u0000-\\u007E]/g, function (a) {\n    return map[a] || a;\n  });\n}","import warning from 'warning';\nvar warned = {};\n\n/**\n * Copied from: https://github.com/ReactTraining/react-router/blob/master/modules/routerWarning.js\n */\nexport default function warn(falseToWarn, message) {\n  // Only issue deprecation warnings once.\n  if (!falseToWarn && message.indexOf('deprecated') !== -1) {\n    if (warned[message]) {\n      return;\n    }\n    warned[message] = true;\n  }\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n  warning.apply(void 0, [falseToWarn, \"[react-bootstrap-typeahead] \".concat(message)].concat(args));\n}\nexport function resetWarned() {\n  warned = {};\n}","import isEqual from 'fast-deep-equal';\nimport getOptionProperty from './getOptionProperty';\nimport { isFunction, isString } from './nodash';\nimport stripDiacritics from './stripDiacritics';\nimport warn from './warn';\nfunction isMatch(input, string, props) {\n  var searchStr = input;\n  var str = string;\n  if (!props.caseSensitive) {\n    searchStr = searchStr.toLowerCase();\n    str = str.toLowerCase();\n  }\n  if (props.ignoreDiacritics) {\n    searchStr = stripDiacritics(searchStr);\n    str = stripDiacritics(str);\n  }\n  return str.indexOf(searchStr) !== -1;\n}\n\n/**\n * Default algorithm for filtering results.\n */\nexport default function defaultFilterBy(option, props) {\n  var filterBy = props.filterBy,\n    labelKey = props.labelKey,\n    multiple = props.multiple,\n    selected = props.selected,\n    text = props.text;\n\n  // Don't show selected options in the menu for the multi-select case.\n  if (multiple && selected.some(function (o) {\n    return isEqual(o, option);\n  })) {\n    return false;\n  }\n  if (isFunction(labelKey)) {\n    return isMatch(text, labelKey(option), props);\n  }\n  var fields = filterBy.slice();\n  if (isString(labelKey)) {\n    // Add the `labelKey` field to the list of fields if it isn't already there.\n    if (fields.indexOf(labelKey) === -1) {\n      fields.unshift(labelKey);\n    }\n  }\n  if (isString(option)) {\n    warn(fields.length <= 1, 'You cannot filter by properties when `option` is a string.');\n    return isMatch(text, option, props);\n  }\n  return fields.some(function (field) {\n    var value = getOptionProperty(option, field);\n    if (!isString(value)) {\n      warn(false, 'Fields passed to `filterBy` should have string values. Value will ' + 'be converted to a string; results may be unexpected.');\n      value = String(value);\n    }\n    return isMatch(text, value, props);\n  });\n}","/**\n * Check if an input type is selectable, based on WHATWG spec.\n *\n * See:\n *  - https://stackoverflow.com/questions/21177489/selectionstart-selectionend-on-input-type-number-no-longer-allowed-in-chrome/24175357\n *  - https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n */\nexport default function isSelectable(inputNode) {\n  return inputNode.selectionStart != null;\n}","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport default function getDisplayName(Component) {\n  return Component.displayName || Component.name || 'Component';\n}","import invariant from 'invariant';\nimport stripDiacritics from './stripDiacritics';\nvar CASE_INSENSITIVE = 'i';\nvar COMBINING_MARKS = /[\\u0300-\\u036F]/;\n// Export for testing.\nexport function escapeStringRegexp(str) {\n  !(typeof str === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`escapeStringRegexp` expected a string.') : invariant(false) : void 0;\n\n  // Escape characters with special meaning either inside or outside character\n  // sets. Use a simple backslash escape when it’s always valid, and a \\unnnn\n  // escape when the simpler form would be disallowed by Unicode patterns’\n  // stricter grammar.\n  return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\nexport default function getMatchBounds(subject, str) {\n  var search = new RegExp(escapeStringRegexp(stripDiacritics(str)), CASE_INSENSITIVE);\n  var matches = search.exec(stripDiacritics(subject));\n  if (!matches) {\n    return null;\n  }\n  var start = matches.index;\n  var matchLength = matches[0].length;\n\n  // Account for combining marks, which changes the indices.\n  if (COMBINING_MARKS.test(subject)) {\n    // Starting at the beginning of the subject string, check for the number of\n    // combining marks and increment the start index whenever one is found.\n    for (var ii = 0; ii <= start; ii++) {\n      if (COMBINING_MARKS.test(subject[ii])) {\n        start += 1;\n      }\n    }\n\n    // Similarly, increment the length of the match string if it contains a\n    // combining mark.\n    for (var _ii = start; _ii <= start + matchLength; _ii++) {\n      if (COMBINING_MARKS.test(subject[_ii])) {\n        matchLength += 1;\n      }\n    }\n  }\n  return {\n    end: start + matchLength,\n    start: start\n  };\n}","import getMatchBounds from './getMatchBounds';\nimport getOptionLabel from './getOptionLabel';\nimport hasOwnProperty from './hasOwnProperty';\nimport { isString } from './nodash';\nfunction getHintText(_ref) {\n  var activeIndex = _ref.activeIndex,\n    initialItem = _ref.initialItem,\n    isFocused = _ref.isFocused,\n    isMenuShown = _ref.isMenuShown,\n    labelKey = _ref.labelKey,\n    multiple = _ref.multiple,\n    selected = _ref.selected,\n    text = _ref.text;\n  // Don't display a hint under the following conditions:\n  if (\n  // No text entered.\n  !text ||\n  // The input is not focused.\n  !isFocused ||\n  // The menu is hidden.\n  !isMenuShown ||\n  // No item in the menu.\n  !initialItem ||\n  // The initial item is a custom option.\n  !isString(initialItem) && hasOwnProperty(initialItem, 'customOption') ||\n  // The initial item is disabled\n  !isString(initialItem) && initialItem.disabled ||\n  // One of the menu items is active.\n  activeIndex > -1 ||\n  // There's already a selection in single-select mode.\n  !!selected.length && !multiple) {\n    return '';\n  }\n  var initialItemStr = getOptionLabel(initialItem, labelKey);\n  var bounds = getMatchBounds(initialItemStr.toLowerCase(), text.toLowerCase());\n  if (!(bounds && bounds.start === 0)) {\n    return '';\n  }\n\n  // Text matching is case- and accent-insensitive, so to display the hint\n  // correctly, splice the input string with the hint string.\n  return text + initialItemStr.slice(bounds.end, initialItemStr.length);\n}\nexport default getHintText;","export default function getMenuItemId() {\n  var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  var position = arguments.length > 1 ? arguments[1] : undefined;\n  return \"\".concat(id, \"-item-\").concat(position);\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"activeIndex\", \"id\", \"isFocused\", \"isMenuShown\", \"multiple\", \"onClick\", \"onFocus\", \"placeholder\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport cx from 'classnames';\nimport getMenuItemId from './getMenuItemId';\nimport hasOwnProperty from './hasOwnProperty';\nvar getInputProps = function getInputProps(_ref) {\n  var activeIndex = _ref.activeIndex,\n    id = _ref.id,\n    isFocused = _ref.isFocused,\n    isMenuShown = _ref.isMenuShown,\n    multiple = _ref.multiple,\n    onClick = _ref.onClick,\n    onFocus = _ref.onFocus,\n    placeholder = _ref.placeholder,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return function () {\n    var _cx;\n    var inputProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var className = hasOwnProperty(inputProps, 'className') ? String(inputProps.className) : undefined;\n    return _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n      // These props can be overridden by values in `inputProps`.\n      autoComplete: 'off',\n      placeholder: placeholder,\n      type: 'text'\n    }, inputProps), props), {}, {\n      'aria-activedescendant': activeIndex >= 0 ? getMenuItemId(id, activeIndex) : undefined,\n      'aria-autocomplete': 'both',\n      'aria-expanded': isMenuShown,\n      'aria-haspopup': 'listbox',\n      'aria-multiselectable': multiple || undefined,\n      'aria-owns': isMenuShown ? id : undefined,\n      className: cx((_cx = {}, _defineProperty(_cx, className || '', !multiple), _defineProperty(_cx, \"focus\", isFocused), _cx))\n    }, multiple && {\n      inputClassName: className\n    }), {}, {\n      onClick: onClick,\n      onFocus: onFocus,\n      role: 'combobox'\n    });\n  };\n};\nexport default getInputProps;","import getOptionLabel from './getOptionLabel';\nfunction getInputText(props) {\n  var activeItem = props.activeItem,\n    labelKey = props.labelKey,\n    multiple = props.multiple,\n    selected = props.selected,\n    text = props.text;\n  if (activeItem) {\n    // Display the input value if the pagination item is active.\n    return getOptionLabel(activeItem, labelKey);\n  }\n  if (!multiple && selected.length && selected[0]) {\n    return getOptionLabel(selected[0], labelKey);\n  }\n  return text;\n}\nexport default getInputText;","import getOptionProperty from './getOptionProperty';\nfunction getIsOnlyResult(props) {\n  var allowNew = props.allowNew,\n    highlightOnlyResult = props.highlightOnlyResult,\n    results = props.results;\n  if (!highlightOnlyResult || allowNew) {\n    return false;\n  }\n  return results.length === 1 && !getOptionProperty(results[0], 'disabled');\n}\nexport default getIsOnlyResult;","/**\n * Truncates the result set based on `maxResults` and returns the new set.\n */\nfunction getTruncatedOptions(options, maxResults) {\n  if (!maxResults || maxResults >= options.length) {\n    return options;\n  }\n  return options.slice(0, maxResults);\n}\nexport default getTruncatedOptions;","import getOptionProperty from './getOptionProperty';\nexport function isDisabledOption(index, items) {\n  var option = items[index];\n  return !!option && !!getOptionProperty(option, 'disabled');\n}\nexport function skipDisabledOptions(currentIndex, key, items) {\n  var newIndex = currentIndex;\n  while (isDisabledOption(newIndex, items)) {\n    newIndex += key === 'ArrowUp' ? -1 : 1;\n  }\n  return newIndex;\n}\nexport default function getUpdatedActiveIndex(currentIndex, key, items) {\n  var newIndex = currentIndex;\n\n  // Increment or decrement index based on user keystroke.\n  newIndex += key === 'ArrowUp' ? -1 : 1;\n\n  // Skip over any disabled options.\n  newIndex = skipDisabledOptions(newIndex, key, items);\n\n  // If we've reached the end, go back to the beginning or vice-versa.\n  if (newIndex === items.length) {\n    newIndex = -1;\n  } else if (newIndex === -2) {\n    newIndex = items.length - 1;\n\n    // Skip over any disabled options.\n    newIndex = skipDisabledOptions(newIndex, key, items);\n  }\n  return newIndex;\n}","/**\n * Prevent the main input from blurring when a menu item or the clear button is\n * clicked. (#226 & #310)\n */\nexport default function preventInputBlur(e) {\n  e.preventDefault();\n}","export function isSizeLarge(size) {\n  return size === 'lg';\n}\nexport function isSizeSmall(size) {\n  return size === 'sm';\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"className\", \"isInvalid\", \"isValid\", \"size\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport cx from 'classnames';\nimport { isSizeLarge, isSizeSmall } from './size';\n/**\n * Returns Bootstrap classnames from `size` and validation props, along\n * with pass-through props.\n */\nexport default function propsWithBsClassName(_ref) {\n  var className = _ref.className,\n    isInvalid = _ref.isInvalid,\n    isValid = _ref.isValid,\n    size = _ref.size,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return _objectSpread(_objectSpread({}, props), {}, {\n    className: cx('form-control', 'rbt-input', {\n      'form-control-lg': isSizeLarge(size),\n      'form-control-sm': isSizeSmall(size),\n      'is-invalid': isInvalid,\n      'is-valid': isValid\n    }, className)\n  });\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport { SIZES } from './constants';\nimport { isFunction, warn } from './utils';\nvar INPUT_PROPS_BLACKLIST = [{\n  alt: 'onBlur',\n  prop: 'onBlur'\n}, {\n  alt: 'onInputChange',\n  prop: 'onChange'\n}, {\n  alt: 'onFocus',\n  prop: 'onFocus'\n}, {\n  alt: 'onKeyDown',\n  prop: 'onKeyDown'\n}];\nexport var sizeType = PropTypes.oneOf(SIZES);\n/**\n * Allows additional warnings or messaging related to prop validation.\n */\nexport function checkPropType(validator, callback) {\n  return function (props, propName, componentName) {\n    PropTypes.checkPropTypes(_defineProperty({}, propName, validator), props, 'prop', componentName);\n    isFunction(callback) && callback(props, propName, componentName);\n  };\n}\nexport function caseSensitiveType(props) {\n  var caseSensitive = props.caseSensitive,\n    filterBy = props.filterBy;\n  warn(!caseSensitive || typeof filterBy !== 'function', 'Your `filterBy` function will override the `caseSensitive` prop.');\n}\nexport function deprecated(validator, reason) {\n  return function (props, propName, componentName) {\n    if (props[propName] != null) {\n      warn(false, \"The `\".concat(propName, \"` prop is deprecated. \").concat(reason));\n    }\n    return PropTypes.checkPropTypes(_defineProperty({}, propName, validator), props, 'prop', componentName);\n  };\n}\nexport function defaultInputValueType(props) {\n  var defaultInputValue = props.defaultInputValue,\n    defaultSelected = props.defaultSelected,\n    multiple = props.multiple,\n    selected = props.selected;\n  var name = defaultSelected.length ? 'defaultSelected' : 'selected';\n  warn(!(!multiple && defaultInputValue && (defaultSelected.length || selected && selected.length)), \"`defaultInputValue` will be overridden by the value from `\".concat(name, \"`.\"));\n}\nexport function defaultSelectedType(props) {\n  var defaultSelected = props.defaultSelected,\n    multiple = props.multiple;\n  warn(multiple || defaultSelected.length <= 1, 'You are passing multiple options to the `defaultSelected` prop of a ' + 'Typeahead in single-select mode. The selections will be truncated to a ' + 'single selection.');\n}\nexport function highlightOnlyResultType(_ref) {\n  var allowNew = _ref.allowNew,\n    highlightOnlyResult = _ref.highlightOnlyResult;\n  warn(!(highlightOnlyResult && allowNew), '`highlightOnlyResult` will not work with `allowNew`.');\n}\nexport function ignoreDiacriticsType(props) {\n  var filterBy = props.filterBy,\n    ignoreDiacritics = props.ignoreDiacritics;\n  warn(ignoreDiacritics || typeof filterBy !== 'function', 'Your `filterBy` function will override the `ignoreDiacritics` prop.');\n}\nexport function inputPropsType(_ref2) {\n  var inputProps = _ref2.inputProps;\n  if (!(inputProps && Object.prototype.toString.call(inputProps) === '[object Object]')) {\n    return;\n  }\n\n  // Blacklisted properties.\n  INPUT_PROPS_BLACKLIST.forEach(function (_ref3) {\n    var alt = _ref3.alt,\n      prop = _ref3.prop;\n    var msg = alt ? \" Use the top-level `\".concat(alt, \"` prop instead.\") : null;\n    warn(!inputProps[prop], \"The `\".concat(prop, \"` property of `inputProps` will be ignored.\").concat(msg));\n  });\n}\nexport function isRequiredForA11y(props, propName, componentName) {\n  warn(props[propName] != null, \"The prop `\".concat(propName, \"` is required to make `\").concat(componentName, \"` \") + 'accessible for users of assistive technologies such as screen readers.');\n}\nexport function labelKeyType(_ref4) {\n  var allowNew = _ref4.allowNew,\n    labelKey = _ref4.labelKey;\n  warn(!(isFunction(labelKey) && allowNew), '`labelKey` must be a string when `allowNew={true}`.');\n}\nexport var optionType = PropTypes.oneOfType([PropTypes.object, PropTypes.string]);\nexport function selectedType(_ref5) {\n  var multiple = _ref5.multiple,\n    onChange = _ref5.onChange,\n    selected = _ref5.selected;\n  warn(multiple || !selected || selected.length <= 1, 'You are passing multiple options to the `selected` prop of a Typeahead ' + 'in single-select mode. This may lead to unexpected behaviors or errors.');\n  warn(!selected || selected && isFunction(onChange), 'You provided a `selected` prop without an `onChange` handler. If you ' + 'want the typeahead to be uncontrolled, use `defaultSelected`. ' + 'Otherwise, set `onChange`.');\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"allowNew\", \"delay\", \"emptyLabel\", \"isLoading\", \"minLength\", \"onInputChange\", \"onSearch\", \"options\", \"promptText\", \"searchText\", \"useCache\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport debounce from 'lodash.debounce';\nimport PropTypes from 'prop-types';\nimport React, { forwardRef, useCallback, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport { optionType } from '../propTypes';\nimport { getDisplayName, isFunction, warn } from '../utils';\nvar propTypes = {\n  /**\n   * Delay, in milliseconds, before performing search.\n   */\n  delay: PropTypes.number,\n  /**\n   * Whether or not a request is currently pending. Necessary for the\n   * container to know when new results are available.\n   */\n  isLoading: PropTypes.bool.isRequired,\n  /**\n   * Number of input characters that must be entered before showing results.\n   */\n  minLength: PropTypes.number,\n  /**\n   * Callback to perform when the search is executed.\n   */\n  onSearch: PropTypes.func.isRequired,\n  /**\n   * Options to be passed to the typeahead. Will typically be the query\n   * results, but can also be initial default options.\n   */\n  options: PropTypes.arrayOf(optionType),\n  /**\n   * Message displayed in the menu when there is no user input.\n   */\n  promptText: PropTypes.node,\n  /**\n   * Message displayed in the menu while the request is pending.\n   */\n  searchText: PropTypes.node,\n  /**\n   * Whether or not the component should cache query results.\n   */\n  useCache: PropTypes.bool\n};\n/**\n * Logic that encapsulates common behavior and functionality around\n * asynchronous searches, including:\n *\n *  - Debouncing user input\n *  - Optional query caching\n *  - Search prompt and empty results behaviors\n */\nexport function useAsync(props) {\n  var allowNew = props.allowNew,\n    _props$delay = props.delay,\n    delay = _props$delay === void 0 ? 200 : _props$delay,\n    emptyLabel = props.emptyLabel,\n    isLoading = props.isLoading,\n    _props$minLength = props.minLength,\n    minLength = _props$minLength === void 0 ? 2 : _props$minLength,\n    onInputChange = props.onInputChange,\n    onSearch = props.onSearch,\n    _props$options = props.options,\n    options = _props$options === void 0 ? [] : _props$options,\n    _props$promptText = props.promptText,\n    promptText = _props$promptText === void 0 ? 'Type to search...' : _props$promptText,\n    _props$searchText = props.searchText,\n    searchText = _props$searchText === void 0 ? 'Searching...' : _props$searchText,\n    _props$useCache = props.useCache,\n    useCache = _props$useCache === void 0 ? true : _props$useCache,\n    otherProps = _objectWithoutProperties(props, _excluded);\n  var cacheRef = useRef({});\n  var handleSearchDebouncedRef = useRef(null);\n  var queryRef = useRef(props.defaultInputValue || '');\n  var forceUpdate = useForceUpdate();\n  var prevProps = usePrevious(props);\n  var handleSearch = useCallback(function (query) {\n    queryRef.current = query;\n    if (!query || minLength && query.length < minLength) {\n      return;\n    }\n\n    // Use cached results, if applicable.\n    if (useCache && cacheRef.current[query]) {\n      // Re-render the component with the cached results.\n      forceUpdate();\n      return;\n    }\n\n    // Perform the search.\n    onSearch(query);\n  }, [forceUpdate, minLength, onSearch, useCache]);\n\n  // Set the debounced search function.\n  useEffect(function () {\n    handleSearchDebouncedRef.current = debounce(handleSearch, delay);\n    return function () {\n      handleSearchDebouncedRef.current && handleSearchDebouncedRef.current.cancel();\n    };\n  }, [delay, handleSearch]);\n  useEffect(function () {\n    // Ensure that we've gone from a loading to a completed state. Otherwise\n    // an empty response could get cached if the component updates during the\n    // request (eg: if the parent re-renders for some reason).\n    if (!isLoading && prevProps && prevProps.isLoading && useCache) {\n      cacheRef.current[queryRef.current] = options;\n    }\n  });\n  var getEmptyLabel = function getEmptyLabel() {\n    if (!queryRef.current.length) {\n      return promptText;\n    }\n    if (isLoading) {\n      return searchText;\n    }\n    return emptyLabel;\n  };\n  var handleInputChange = useCallback(function (query, e) {\n    onInputChange && onInputChange(query, e);\n    handleSearchDebouncedRef.current && handleSearchDebouncedRef.current(query);\n  }, [onInputChange]);\n  var cachedQuery = cacheRef.current[queryRef.current];\n  return _objectSpread(_objectSpread({}, otherProps), {}, {\n    // Disable custom selections during a search if `allowNew` isn't a function.\n    allowNew: isFunction(allowNew) ? allowNew : allowNew && !isLoading,\n    emptyLabel: getEmptyLabel(),\n    isLoading: isLoading,\n    minLength: minLength,\n    onInputChange: handleInputChange,\n    options: useCache && cachedQuery ? cachedQuery : options\n  });\n}\n\n/* istanbul ignore next */\nexport function withAsync(Component) {\n  warn(false, 'Warning: `withAsync` is deprecated and will be removed in the next ' + 'major version. Use `useAsync` instead.');\n  var AsyncTypeahead = /*#__PURE__*/forwardRef(function (props, ref) {\n    return /*#__PURE__*/React.createElement(Component, _extends({}, props, useAsync(props), {\n      ref: ref\n    }));\n  });\n  AsyncTypeahead.displayName = \"withAsync(\".concat(getDisplayName(Component), \")\");\n  // @ts-ignore\n  AsyncTypeahead.propTypes = propTypes;\n  return AsyncTypeahead;\n}","import { useReducer } from 'react';\n\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n *  forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\nexport default function useForceUpdate() {\n  // The toggling state value is designed to defeat React optimizations for skipping\n  // updates when they are strictly equal to the last state value\n  const [, dispatch] = useReducer(state => !state, false);\n  return dispatch;\n}","import { useEffect, useRef } from 'react';\n\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n *   const lastProps = usePrevious(props)\n *\n *   if (lastProps.foo !== props.foo)\n *     resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\nexport default function usePrevious(value) {\n  const ref = useRef(null);\n  useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n}","function _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nexport { _createClass as default };","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","function _getPrototypeOf(t) {\n  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","import { createContext, useContext } from 'react';\nimport { noop } from '../utils';\nexport var defaultContext = {\n  activeIndex: -1,\n  hintText: '',\n  id: '',\n  initialItem: null,\n  inputNode: null,\n  isOnlyResult: false,\n  onActiveItemChange: noop,\n  onAdd: noop,\n  onInitialItemChange: noop,\n  onMenuItemClick: noop,\n  setItem: noop\n};\nexport var TypeaheadContext = /*#__PURE__*/createContext(defaultContext);\nexport var useTypeaheadContext = function useTypeaheadContext() {\n  return useContext(TypeaheadContext);\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport React, { useEffect, useRef } from 'react';\nimport { TypeaheadContext } from './Context';\nimport { defaultSelectHint, getHintText, getInputProps, getInputText, getIsOnlyResult, isFunction, pick } from '../utils';\nvar inputPropKeys = ['activeIndex', 'disabled', 'id', 'inputRef', 'isFocused', 'isMenuShown', 'multiple', 'onBlur', 'onChange', 'onClick', 'onFocus', 'onKeyDown', 'placeholder'];\nvar propKeys = ['activeIndex', 'hideMenu', 'isMenuShown', 'labelKey', 'onClear', 'onHide', 'onRemove', 'results', 'selected', 'text', 'toggleMenu'];\nvar contextKeys = ['activeIndex', 'id', 'initialItem', 'inputNode', 'onActiveItemChange', 'onAdd', 'onInitialItemChange', 'onMenuItemClick', 'setItem'];\nvar TypeaheadManager = function TypeaheadManager(props) {\n  var allowNew = props.allowNew,\n    children = props.children,\n    initialItem = props.initialItem,\n    isMenuShown = props.isMenuShown,\n    onAdd = props.onAdd,\n    onInitialItemChange = props.onInitialItemChange,\n    onKeyDown = props.onKeyDown,\n    onMenuToggle = props.onMenuToggle,\n    results = props.results,\n    selectHint = props.selectHint;\n  var hintText = getHintText(props);\n  useEffect(function () {\n    // Clear the initial item when there are no results.\n    if (!(allowNew || results.length)) {\n      onInitialItemChange();\n    }\n  });\n  var isInitialRender = useRef(true);\n  useEffect(function () {\n    if (isInitialRender.current) {\n      isInitialRender.current = false;\n      return;\n    }\n    onMenuToggle(isMenuShown);\n  }, [isMenuShown, onMenuToggle]);\n  var handleKeyDown = function handleKeyDown(e) {\n    onKeyDown(e);\n    if (!initialItem) {\n      return;\n    }\n    var addOnlyResult = e.key === 'Enter' && getIsOnlyResult(props);\n    var shouldSelectHint = hintText && defaultSelectHint(e, selectHint);\n    if (addOnlyResult || shouldSelectHint) {\n      onAdd(initialItem);\n    }\n  };\n  var childProps = _objectSpread(_objectSpread({}, pick(props, propKeys)), {}, {\n    getInputProps: getInputProps(_objectSpread(_objectSpread({}, pick(props, inputPropKeys)), {}, {\n      onKeyDown: handleKeyDown,\n      value: getInputText(props)\n    }))\n  });\n  var contextValue = _objectSpread(_objectSpread({}, pick(props, contextKeys)), {}, {\n    hintText: hintText,\n    isOnlyResult: getIsOnlyResult(props)\n  });\n  return /*#__PURE__*/React.createElement(TypeaheadContext.Provider, {\n    value: contextValue\n  }, isFunction(children) ? children(childProps) : children);\n};\nexport default TypeaheadManager;","import isSelectable from './isSelectable';\nexport default function defaultSelectHint(e, selectHint) {\n  var shouldSelectHint = false;\n  if (e.key === 'ArrowRight') {\n    // For selectable input types (\"text\", \"search\"), only select the hint if\n    // it's at the end of the input value. For non-selectable types (\"email\",\n    // \"number\"), always select the hint.\n    shouldSelectHint = isSelectable(e.currentTarget) ? e.currentTarget.selectionStart === e.currentTarget.value.length : true;\n  }\n  if (e.key === 'Tab') {\n    // Prevent input from blurring on TAB.\n    e.preventDefault();\n    shouldSelectHint = true;\n  }\n  return selectHint ? selectHint(shouldSelectHint, e) : shouldSelectHint;\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { getOptionLabel } from '../utils';\nexport function getInitialState(props) {\n  var defaultInputValue = props.defaultInputValue,\n    defaultOpen = props.defaultOpen,\n    defaultSelected = props.defaultSelected,\n    maxResults = props.maxResults,\n    multiple = props.multiple;\n  var selected = props.selected ? props.selected.slice() : defaultSelected.slice();\n  var text = defaultInputValue;\n  if (!multiple && selected.length) {\n    // Set the text if an initial selection is passed in.\n    text = getOptionLabel(selected[0], props.labelKey);\n    if (selected.length > 1) {\n      // Limit to 1 selection in single-select mode.\n      selected = selected.slice(0, 1);\n    }\n  }\n  return {\n    activeIndex: -1,\n    activeItem: undefined,\n    initialItem: undefined,\n    isFocused: false,\n    selected: selected,\n    showMenu: defaultOpen,\n    shownResults: maxResults,\n    text: text\n  };\n}\nexport function clearTypeahead(state, props) {\n  return _objectSpread(_objectSpread({}, getInitialState(props)), {}, {\n    isFocused: state.isFocused,\n    selected: [],\n    text: ''\n  });\n}\nexport function clickOrFocusInput(state) {\n  return _objectSpread(_objectSpread({}, state), {}, {\n    isFocused: true,\n    showMenu: true\n  });\n}\nexport function hideMenu(state, props) {\n  var _getInitialState = getInitialState(props),\n    activeIndex = _getInitialState.activeIndex,\n    activeItem = _getInitialState.activeItem,\n    initialItem = _getInitialState.initialItem,\n    shownResults = _getInitialState.shownResults;\n  return _objectSpread(_objectSpread({}, state), {}, {\n    activeIndex: activeIndex,\n    activeItem: activeItem,\n    initialItem: initialItem,\n    showMenu: false,\n    shownResults: shownResults\n  });\n}\nexport function toggleMenu(state, props) {\n  return state.showMenu ? hideMenu(state, props) : _objectSpread(_objectSpread({}, state), {}, {\n    showMenu: true\n  });\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"onChange\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport isEqual from 'fast-deep-equal';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TypeaheadManager from './TypeaheadManager';\nimport { clearTypeahead, clickOrFocusInput, getInitialState, hideMenu, toggleMenu } from './TypeaheadState';\nimport { caseSensitiveType, checkPropType, defaultInputValueType, defaultSelectedType, highlightOnlyResultType, ignoreDiacriticsType, isRequiredForA11y, labelKeyType, optionType, selectedType } from '../propTypes';\nimport { addCustomOption, defaultFilterBy, getOptionLabel, getOptionProperty, getStringLabelKey, getUpdatedActiveIndex, getTruncatedOptions, isFunction, isShown, isString, noop, uniqueId, validateSelectedPropChange } from '../utils';\nimport { DEFAULT_LABELKEY } from '../constants';\nvar propTypes = {\n  /**\n   * Allows the creation of new selections on the fly. Note that any new items\n   * will be added to the list of selections, but not the list of original\n   * options unless handled as such by `Typeahead`'s parent.\n   *\n   * If a function is specified, it will be used to determine whether a custom\n   * option should be included. The return value should be true or false.\n   */\n  allowNew: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n  /**\n   * Autofocus the input when the component initially mounts.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Whether or not filtering should be case-sensitive.\n   */\n  caseSensitive: checkPropType(PropTypes.bool, caseSensitiveType),\n  /**\n   * The initial value displayed in the text input.\n   */\n  defaultInputValue: checkPropType(PropTypes.string, defaultInputValueType),\n  /**\n   * Whether or not the menu is displayed upon initial render.\n   */\n  defaultOpen: PropTypes.bool,\n  /**\n   * Specify any pre-selected options. Use only if you want the component to\n   * be uncontrolled.\n   */\n  defaultSelected: checkPropType(PropTypes.arrayOf(optionType), defaultSelectedType),\n  /**\n   * Either an array of fields in `option` to search, or a custom filtering\n   * callback.\n   */\n  filterBy: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]),\n  /**\n   * Highlights the menu item if there is only one result and allows selecting\n   * that item by hitting enter. Does not work with `allowNew`.\n   */\n  highlightOnlyResult: checkPropType(PropTypes.bool, highlightOnlyResultType),\n  /**\n   * An html id attribute, required for assistive technologies such as screen\n   * readers.\n   */\n  id: checkPropType(PropTypes.oneOfType([PropTypes.number, PropTypes.string]), isRequiredForA11y),\n  /**\n   * Whether the filter should ignore accents and other diacritical marks.\n   */\n  ignoreDiacritics: checkPropType(PropTypes.bool, ignoreDiacriticsType),\n  /**\n   * Specify the option key to use for display or a function returning the\n   * display string. By default, the selector will use the `label` key.\n   */\n  labelKey: checkPropType(PropTypes.oneOfType([PropTypes.string, PropTypes.func]), labelKeyType),\n  /**\n   * Maximum number of results to display by default. Mostly done for\n   * performance reasons so as not to render too many DOM nodes in the case of\n   * large data sets.\n   */\n  maxResults: PropTypes.number,\n  /**\n   * Number of input characters that must be entered before showing results.\n   */\n  minLength: PropTypes.number,\n  /**\n   * Whether or not multiple selections are allowed.\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Invoked when the input is blurred. Receives an event.\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Invoked whenever items are added or removed. Receives an array of the\n   * selected options.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Invoked when the input is focused. Receives an event.\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Invoked when the input value changes. Receives the string value of the\n   * input.\n   */\n  onInputChange: PropTypes.func,\n  /**\n   * Invoked when a key is pressed. Receives an event.\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * Invoked when menu visibility changes.\n   */\n  onMenuToggle: PropTypes.func,\n  /**\n   * Invoked when the pagination menu item is clicked. Receives an event.\n   */\n  onPaginate: PropTypes.func,\n  /**\n   * Whether or not the menu should be displayed. `undefined` allows the\n   * component to control visibility, while `true` and `false` show and hide\n   * the menu, respectively.\n   */\n  open: PropTypes.bool,\n  /**\n   * Full set of options, including pre-selected options. Must either be an\n   * array of objects (recommended) or strings.\n   */\n  options: PropTypes.arrayOf(optionType).isRequired,\n  /**\n   * Give user the ability to display additional results if the number of\n   * results exceeds `maxResults`.\n   */\n  paginate: PropTypes.bool,\n  /**\n   * The selected option(s) displayed in the input. Use this prop if you want\n   * to control the component via its parent.\n   */\n  selected: checkPropType(PropTypes.arrayOf(optionType), selectedType)\n};\nvar defaultProps = {\n  allowNew: false,\n  autoFocus: false,\n  caseSensitive: false,\n  defaultInputValue: '',\n  defaultOpen: false,\n  defaultSelected: [],\n  filterBy: [],\n  highlightOnlyResult: false,\n  ignoreDiacritics: true,\n  labelKey: DEFAULT_LABELKEY,\n  maxResults: 100,\n  minLength: 0,\n  multiple: false,\n  onBlur: noop,\n  onFocus: noop,\n  onInputChange: noop,\n  onKeyDown: noop,\n  onMenuToggle: noop,\n  onPaginate: noop,\n  paginate: true\n};\n/**\n * Manually trigger the input's change event.\n * https://stackoverflow.com/questions/23892547/what-is-the-best-way-to-trigger-onchange-event-in-react-js/46012210#46012210\n */\nfunction triggerInputChange(input, value) {\n  var inputValue = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value');\n  inputValue && inputValue.set && inputValue.set.call(input, value);\n  var e = new Event('input', {\n    bubbles: true\n  });\n  input.dispatchEvent(e);\n}\nvar Typeahead = /*#__PURE__*/function (_React$Component) {\n  _inherits(Typeahead, _React$Component);\n  var _super = _createSuper(Typeahead);\n  function Typeahead() {\n    var _this;\n    _classCallCheck(this, Typeahead);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"state\", getInitialState(_this.props));\n    _defineProperty(_assertThisInitialized(_this), \"inputNode\", null);\n    _defineProperty(_assertThisInitialized(_this), \"isMenuShown\", false);\n    // Keeps track of actual items displayed in the menu, after sorting,\n    // truncating, grouping, etc.\n    _defineProperty(_assertThisInitialized(_this), \"items\", []);\n    _defineProperty(_assertThisInitialized(_this), \"blur\", function () {\n      _this.inputNode && _this.inputNode.blur();\n      _this.hideMenu();\n    });\n    _defineProperty(_assertThisInitialized(_this), \"clear\", function () {\n      _this.setState(clearTypeahead);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"focus\", function () {\n      _this.inputNode && _this.inputNode.focus();\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getInput\", function () {\n      return _this.inputNode;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"inputRef\", function (inputNode) {\n      _this.inputNode = inputNode;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"setItem\", function (item, position) {\n      _this.items[position] = item;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"hideMenu\", function () {\n      _this.setState(hideMenu);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"toggleMenu\", function () {\n      _this.setState(toggleMenu);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleActiveIndexChange\", function (activeIndex) {\n      _this.setState(function (state) {\n        return {\n          activeIndex: activeIndex,\n          activeItem: activeIndex >= 0 ? state.activeItem : undefined\n        };\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleActiveItemChange\", function (activeItem) {\n      // Don't update the active item if it hasn't changed.\n      if (!isEqual(activeItem, _this.state.activeItem)) {\n        _this.setState({\n          activeItem: activeItem\n        });\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleBlur\", function (e) {\n      e.persist();\n      _this.setState({\n        isFocused: false\n      }, function () {\n        return _this.props.onBlur(e);\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleChange\", function (selected) {\n      _this.props.onChange && _this.props.onChange(selected);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleClear\", function () {\n      _this.inputNode && triggerInputChange(_this.inputNode, '');\n      _this.setState(clearTypeahead, function () {\n        // Change handler is automatically triggered for single selections but\n        // not multi-selections.\n        if (_this.props.multiple) {\n          _this._handleChange([]);\n        }\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleClick\", function (e) {\n      var _this$props$inputProp;\n      e.persist();\n      var onClick = (_this$props$inputProp = _this.props.inputProps) === null || _this$props$inputProp === void 0 ? void 0 : _this$props$inputProp.onClick;\n      _this.setState(clickOrFocusInput, function () {\n        return isFunction(onClick) && onClick(e);\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleFocus\", function (e) {\n      e.persist();\n      _this.setState(clickOrFocusInput, function () {\n        return _this.props.onFocus(e);\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleInitialItemChange\", function (initialItem) {\n      // Don't update the initial item if it hasn't changed.\n      if (!isEqual(initialItem, _this.state.initialItem)) {\n        _this.setState({\n          initialItem: initialItem\n        });\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleInputChange\", function (e) {\n      e.persist();\n      var text = e.currentTarget.value;\n      var _this$props = _this.props,\n        multiple = _this$props.multiple,\n        onInputChange = _this$props.onInputChange;\n\n      // Clear selections when the input value changes in single-select mode.\n      var shouldClearSelections = _this.state.selected.length && !multiple;\n      _this.setState(function (state, props) {\n        var _getInitialState = getInitialState(props),\n          activeIndex = _getInitialState.activeIndex,\n          activeItem = _getInitialState.activeItem,\n          shownResults = _getInitialState.shownResults;\n        return {\n          activeIndex: activeIndex,\n          activeItem: activeItem,\n          selected: shouldClearSelections ? [] : state.selected,\n          showMenu: true,\n          shownResults: shownResults,\n          text: text\n        };\n      }, function () {\n        onInputChange(text, e);\n        shouldClearSelections && _this._handleChange([]);\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleKeyDown\", function (e) {\n      var activeItem = _this.state.activeItem;\n\n      // Skip most actions when the menu is hidden.\n      if (!_this.isMenuShown) {\n        if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n          _this.setState({\n            showMenu: true\n          });\n        }\n        _this.props.onKeyDown(e);\n        return;\n      }\n      switch (e.key) {\n        case 'ArrowUp':\n        case 'ArrowDown':\n          // Prevent input cursor from going to the beginning when pressing up.\n          e.preventDefault();\n          _this._handleActiveIndexChange(getUpdatedActiveIndex(_this.state.activeIndex, e.key, _this.items));\n          break;\n        case 'Enter':\n          // Prevent form submission while menu is open.\n          e.preventDefault();\n          activeItem && _this._handleMenuItemSelect(activeItem, e);\n          break;\n        case 'Escape':\n        case 'Tab':\n          // ESC simply hides the menu. TAB will blur the input and move focus to\n          // the next item; hide the menu so it doesn't gain focus.\n          _this.hideMenu();\n          break;\n        default:\n          break;\n      }\n      _this.props.onKeyDown(e);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleMenuItemSelect\", function (option, e) {\n      if (getOptionProperty(option, 'paginationOption')) {\n        _this._handlePaginate(e);\n      } else {\n        _this._handleSelectionAdd(option);\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handlePaginate\", function (e) {\n      e.persist();\n      _this.setState(function (state, props) {\n        return {\n          shownResults: state.shownResults + props.maxResults\n        };\n      }, function () {\n        return _this.props.onPaginate(e, _this.state.shownResults);\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleSelectionAdd\", function (option) {\n      var _this$props2 = _this.props,\n        multiple = _this$props2.multiple,\n        labelKey = _this$props2.labelKey;\n      var selected;\n      var selection = option;\n      var text;\n\n      // Add a unique id to the custom selection. Avoid doing this in `render` so\n      // the id doesn't increment every time.\n      if (!isString(selection) && selection.customOption) {\n        selection = _objectSpread(_objectSpread({}, selection), {}, {\n          id: uniqueId('new-id-')\n        });\n      }\n      if (multiple) {\n        // If multiple selections are allowed, add the new selection to the\n        // existing selections.\n        selected = _this.state.selected.concat(selection);\n        text = '';\n      } else {\n        // If only a single selection is allowed, replace the existing selection\n        // with the new one.\n        selected = [selection];\n        text = getOptionLabel(selection, labelKey);\n      }\n      _this.setState(function (state, props) {\n        return _objectSpread(_objectSpread({}, hideMenu(state, props)), {}, {\n          initialItem: selection,\n          selected: selected,\n          text: text\n        });\n      }, function () {\n        return _this._handleChange(selected);\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_handleSelectionRemove\", function (selection) {\n      var selected = _this.state.selected.filter(function (option) {\n        return !isEqual(option, selection);\n      });\n\n      // Make sure the input stays focused after the item is removed.\n      _this.focus();\n      _this.setState(function (state, props) {\n        return _objectSpread(_objectSpread({}, hideMenu(state, props)), {}, {\n          selected: selected\n        });\n      }, function () {\n        return _this._handleChange(selected);\n      });\n    });\n    return _this;\n  }\n  _createClass(Typeahead, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.autoFocus && this.focus();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var _this$props3 = this.props,\n        labelKey = _this$props3.labelKey,\n        multiple = _this$props3.multiple,\n        selected = _this$props3.selected;\n      validateSelectedPropChange(selected, prevProps.selected);\n\n      // Sync selections in state with those in props.\n      if (selected && !isEqual(selected, prevState.selected)) {\n        this.setState({\n          selected: selected\n        });\n        if (!multiple) {\n          this.setState({\n            text: selected.length ? getOptionLabel(selected[0], labelKey) : ''\n          });\n        }\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props4 = this.props,\n        onChange = _this$props4.onChange,\n        props = _objectWithoutProperties(_this$props4, _excluded);\n      var mergedPropsAndState = _objectSpread(_objectSpread({}, props), this.state);\n      var filterBy = mergedPropsAndState.filterBy,\n        labelKey = mergedPropsAndState.labelKey,\n        options = mergedPropsAndState.options,\n        paginate = mergedPropsAndState.paginate,\n        shownResults = mergedPropsAndState.shownResults,\n        text = mergedPropsAndState.text;\n      this.isMenuShown = isShown(mergedPropsAndState);\n      this.items = []; // Reset items on re-render.\n\n      var results = [];\n      if (this.isMenuShown) {\n        var cb = isFunction(filterBy) ? filterBy : defaultFilterBy;\n        results = options.filter(function (option) {\n          return cb(option, mergedPropsAndState);\n        });\n\n        // This must come before results are truncated.\n        var shouldPaginate = paginate && results.length > shownResults;\n\n        // Truncate results if necessary.\n        results = getTruncatedOptions(results, shownResults);\n\n        // Add the custom option if necessary.\n        if (addCustomOption(results, mergedPropsAndState)) {\n          results.push(_defineProperty({\n            customOption: true\n          }, getStringLabelKey(labelKey), text));\n        }\n\n        // Add the pagination item if necessary.\n        if (shouldPaginate) {\n          var _results$push2;\n          results.push((_results$push2 = {}, _defineProperty(_results$push2, getStringLabelKey(labelKey), ''), _defineProperty(_results$push2, \"paginationOption\", true), _results$push2));\n        }\n      }\n      return /*#__PURE__*/React.createElement(TypeaheadManager, _extends({}, mergedPropsAndState, {\n        hideMenu: this.hideMenu,\n        inputNode: this.inputNode,\n        inputRef: this.inputRef,\n        isMenuShown: this.isMenuShown,\n        onActiveItemChange: this._handleActiveItemChange,\n        onAdd: this._handleSelectionAdd,\n        onBlur: this._handleBlur,\n        onChange: this._handleInputChange,\n        onClear: this._handleClear,\n        onClick: this._handleClick,\n        onFocus: this._handleFocus,\n        onHide: this.hideMenu,\n        onInitialItemChange: this._handleInitialItemChange,\n        onKeyDown: this._handleKeyDown,\n        onMenuItemClick: this._handleMenuItemSelect,\n        onRemove: this._handleSelectionRemove,\n        results: results,\n        setItem: this.setItem,\n        toggleMenu: this.toggleMenu\n      }));\n    }\n  }]);\n  return Typeahead;\n}(React.Component);\n_defineProperty(Typeahead, \"propTypes\", propTypes);\n_defineProperty(Typeahead, \"defaultProps\", defaultProps);\nexport default Typeahead;","import warn from './warn';\nexport default function validateSelectedPropChange(prevSelected, selected) {\n  var uncontrolledToControlled = !prevSelected && selected;\n  var controlledToUncontrolled = prevSelected && !selected;\n  var from, to, precedent;\n  if (uncontrolledToControlled) {\n    from = 'uncontrolled';\n    to = 'controlled';\n    precedent = 'an';\n  } else {\n    from = 'controlled';\n    to = 'uncontrolled';\n    precedent = 'a';\n  }\n  var message = \"You are changing \".concat(precedent, \" \").concat(from, \" typeahead to be \").concat(to, \". \") + \"Input elements should not switch from \".concat(from, \" to \").concat(to, \" (or vice versa). \") + 'Decide between using a controlled or uncontrolled element for the ' + 'lifetime of the component.';\n  warn(!(uncontrolledToControlled || controlledToUncontrolled), message);\n}","export default function isShown(_ref) {\n  var open = _ref.open,\n    minLength = _ref.minLength,\n    showMenu = _ref.showMenu,\n    text = _ref.text;\n  // If menu visibility is controlled via props, that value takes precedence.\n  if (open || open === false) {\n    return open;\n  }\n  if (text.length < minLength) {\n    return false;\n  }\n  return showMenu;\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"className\", \"label\", \"onClick\", \"onKeyDown\", \"size\"];\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { isSizeLarge, isSizeSmall } from '../../utils';\nimport { sizeType } from '../../propTypes';\nvar propTypes = {\n  label: PropTypes.string,\n  onClick: PropTypes.func,\n  onKeyDown: PropTypes.func,\n  size: sizeType\n};\n/**\n * ClearButton\n *\n * http://getbootstrap.com/css/#helper-classes-close\n */\nvar ClearButton = function ClearButton(_ref) {\n  var className = _ref.className,\n    _ref$label = _ref.label,\n    label = _ref$label === void 0 ? 'Clear' : _ref$label,\n    _onClick = _ref.onClick,\n    _onKeyDown = _ref.onKeyDown,\n    size = _ref.size,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n    \"aria-label\": label,\n    className: cx('close', 'btn-close', 'rbt-close', {\n      'rbt-close-lg': isSizeLarge(size),\n      'rbt-close-sm': isSizeSmall(size)\n    }, className),\n    onClick: function onClick(e) {\n      e.stopPropagation();\n      _onClick && _onClick(e);\n    },\n    onKeyDown: function onKeyDown(e) {\n      // Prevent browser from navigating back.\n      if (e.key === 'Backspace') {\n        e.preventDefault();\n      }\n      _onKeyDown && _onKeyDown(e);\n    },\n    type: \"button\"\n  }), /*#__PURE__*/React.createElement(\"span\", {\n    \"aria-hidden\": \"true\",\n    className: \"rbt-close-content\"\n  }, \"\\xD7\"), /*#__PURE__*/React.createElement(\"span\", {\n    className: \"sr-only visually-hidden\"\n  }, label));\n};\nClearButton.propTypes = propTypes;\nexport default ClearButton;","import PropTypes from 'prop-types';\nimport React from 'react';\nvar propTypes = {\n  label: PropTypes.string\n};\nvar Loader = function Loader(_ref) {\n  var _ref$label = _ref.label,\n    label = _ref$label === void 0 ? 'Loading...' : _ref$label;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: \"rbt-loader spinner-border spinner-border-sm\",\n    role: \"status\"\n  }, /*#__PURE__*/React.createElement(\"span\", {\n    className: \"sr-only visually-hidden\"\n  }, label));\n};\nLoader.propTypes = propTypes;\nexport default Loader;","function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nexport { _arrayLikeToArray as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n  return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nexport { _iterableToArrayLimit as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import * as React from 'react';\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n  return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n  if (typeof fn === 'function') {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return fn.apply(void 0, args);\n  }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n  // if its a function call it\n  if (typeof ref === 'function') {\n    return safeInvoke(ref, node);\n  } // otherwise we should treat it as a ref object\n  else if (ref != null) {\n      ref.current = node;\n    }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n  return entries.reduce(function (acc, _ref) {\n    var key = _ref[0],\n        value = _ref[1];\n    acc[key] = value;\n    return acc;\n  }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var prevOptions = React.useRef(null);\n  var optionsWithDefaults = {\n    onFirstUpdate: options.onFirstUpdate,\n    placement: options.placement || 'bottom',\n    strategy: options.strategy || 'absolute',\n    modifiers: options.modifiers || EMPTY_MODIFIERS\n  };\n\n  var _React$useState = React.useState({\n    styles: {\n      popper: {\n        position: optionsWithDefaults.strategy,\n        left: '0',\n        top: '0'\n      },\n      arrow: {\n        position: 'absolute'\n      }\n    },\n    attributes: {}\n  }),\n      state = _React$useState[0],\n      setState = _React$useState[1];\n\n  var updateStateModifier = React.useMemo(function () {\n    return {\n      name: 'updateState',\n      enabled: true,\n      phase: 'write',\n      fn: function fn(_ref) {\n        var state = _ref.state;\n        var elements = Object.keys(state.elements);\n        ReactDOM.flushSync(function () {\n          setState({\n            styles: fromEntries(elements.map(function (element) {\n              return [element, state.styles[element] || {}];\n            })),\n            attributes: fromEntries(elements.map(function (element) {\n              return [element, state.attributes[element]];\n            }))\n          });\n        });\n      },\n      requires: ['computeStyles']\n    };\n  }, []);\n  var popperOptions = React.useMemo(function () {\n    var newOptions = {\n      onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n      placement: optionsWithDefaults.placement,\n      strategy: optionsWithDefaults.strategy,\n      modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n        name: 'applyStyles',\n        enabled: false\n      }])\n    };\n\n    if (isEqual(prevOptions.current, newOptions)) {\n      return prevOptions.current || newOptions;\n    } else {\n      prevOptions.current = newOptions;\n      return newOptions;\n    }\n  }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n  var popperInstanceRef = React.useRef();\n  useIsomorphicLayoutEffect(function () {\n    if (popperInstanceRef.current) {\n      popperInstanceRef.current.setOptions(popperOptions);\n    }\n  }, [popperOptions]);\n  useIsomorphicLayoutEffect(function () {\n    if (referenceElement == null || popperElement == null) {\n      return;\n    }\n\n    var createPopper = options.createPopper || defaultCreatePopper;\n    var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n    popperInstanceRef.current = popperInstance;\n    return function () {\n      popperInstance.destroy();\n      popperInstanceRef.current = null;\n    };\n  }, [referenceElement, popperElement, options.createPopper]);\n  return {\n    state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n    styles: state.styles,\n    attributes: state.attributes,\n    update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n    forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n  };\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { useEffect, useState } from 'react';\nimport { usePopper } from 'react-popper';\nvar setPopperWidth = {\n  enabled: true,\n  fn: function fn(data) {\n    // eslint-disable-next-line no-param-reassign\n    data.state.styles.popper.width = \"\".concat(data.state.rects.reference.width, \"px\");\n  },\n  name: 'setPopperWidth',\n  phase: 'write'\n};\nexport function getModifiers(props) {\n  var modifiers = [{\n    enabled: !!props.flip,\n    name: 'flip'\n  }, {\n    name: 'preventOverflow',\n    options: {\n      mainAxis: false\n    }\n  }];\n  if (props.align !== 'right' && props.align !== 'left') {\n    modifiers.push(setPopperWidth);\n  }\n  return modifiers;\n}\nexport function getPlacement(props) {\n  var x = props.align === 'right' ? 'end' : 'start';\n  var y = props.dropup ? 'top' : 'bottom';\n  return \"\".concat(y, \"-\").concat(x);\n}\nexport function useOverlay(referenceElement, options) {\n  var _useState = useState(null),\n    _useState2 = _slicedToArray(_useState, 2),\n    popperElement = _useState2[0],\n    attachRef = _useState2[1];\n  var _usePopper = usePopper(referenceElement, popperElement, {\n      modifiers: getModifiers(options),\n      placement: getPlacement(options),\n      strategy: options.positionFixed ? 'fixed' : 'absolute'\n    }),\n    attributes = _usePopper.attributes,\n    styles = _usePopper.styles,\n    forceUpdate = _usePopper.forceUpdate;\n  var refElementHeight = referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetHeight;\n\n  // Re-position the popper if the height of the reference element changes.\n  // Exclude `forceUpdate` from dependencies since it changes with each render.\n  useEffect(function () {\n    forceUpdate && forceUpdate();\n  }, [refElementHeight]); // eslint-disable-line\n\n  return _objectSpread(_objectSpread({}, attributes.popper), {}, {\n    innerRef: attachRef,\n    style: styles.popper\n  });\n}\nexport default useOverlay;","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"referenceElement\", \"isMenuShown\"];\nimport PropTypes from 'prop-types';\nimport useOverlay from './useOverlay';\nimport { ALIGN_VALUES } from '../../constants';\nimport { noop } from '../../utils';\n\n// `Element` is not defined during server-side rendering, so shim it here.\n/* istanbul ignore next */\nvar SafeElement = typeof Element === 'undefined' ? noop : Element;\nvar propTypes = {\n  /**\n   * Specify menu alignment. The default value is `justify`, which makes the\n   * menu as wide as the input and truncates long values. Specifying `left`\n   * or `right` will align the menu to that side and the width will be\n   * determined by the length of menu item values.\n   */\n  align: PropTypes.oneOf(ALIGN_VALUES),\n  children: PropTypes.func.isRequired,\n  /**\n   * Specify whether the menu should appear above the input.\n   */\n  dropup: PropTypes.bool,\n  /**\n   * Whether or not to automatically adjust the position of the menu when it\n   * reaches the viewport boundaries.\n   */\n  flip: PropTypes.bool,\n  isMenuShown: PropTypes.bool,\n  positionFixed: PropTypes.bool,\n  // @ts-ignore\n  referenceElement: PropTypes.instanceOf(SafeElement)\n};\nvar Overlay = function Overlay(_ref) {\n  var referenceElement = _ref.referenceElement,\n    isMenuShown = _ref.isMenuShown,\n    props = _objectWithoutProperties(_ref, _excluded);\n  var overlayProps = useOverlay(referenceElement, props);\n  if (!isMenuShown) {\n    return null;\n  }\n  return props.children(overlayProps);\n};\nOverlay.propTypes = propTypes;\nexport default Overlay;","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n  var options = {\n    get passive() {\n      return optionsSupported = true;\n    },\n\n    get once() {\n      // eslint-disable-next-line no-multi-assign\n      return onceSupported = optionsSupported = true;\n    }\n\n  };\n\n  if (canUseDOM) {\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, true);\n  }\n} catch (e) {\n  /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n  if (options && typeof options !== 'boolean' && !onceSupported) {\n    var once = options.once,\n        capture = options.capture;\n    var wrappedHandler = handler;\n\n    if (!onceSupported && once) {\n      wrappedHandler = handler.__once || function onceHandler(event) {\n        this.removeEventListener(eventName, onceHandler, capture);\n        handler.call(this, event);\n      };\n\n      handler.__once = wrappedHandler;\n    }\n\n    node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n  }\n\n  node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n  var capture = options && typeof options !== 'boolean' ? options.capture : options;\n  node.removeEventListener(eventName, handler, capture);\n\n  if (handler.__once) {\n    node.removeEventListener(eventName, handler.__once, capture);\n  }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n  addEventListener(node, eventName, handler, options);\n  return function () {\n    removeEventListener(node, eventName, handler, options);\n  };\n}\n\nexport default listen;","import { useEffect, useRef } from 'react';\n\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\nfunction useCommittedRef(value) {\n  const ref = useRef(value);\n  useEffect(() => {\n    ref.current = value;\n  }, [value]);\n  return ref;\n}\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n  const ref = useCommittedRef(fn);\n  return useCallback(function (...args) {\n    return ref.current && ref.current(...args);\n  }, [ref]);\n}","import ownerDocument from 'dom-helpers/ownerDocument';\nimport safeFindDOMNode from './safeFindDOMNode';\nexport default (function (componentOrElement) {\n  return ownerDocument(safeFindDOMNode(componentOrElement));\n});","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n  if (componentOrElement && 'setState' in componentOrElement) {\n    return ReactDOM.findDOMNode(componentOrElement);\n  }\n\n  return componentOrElement != null ? componentOrElement : null;\n}","import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport ownerDocument from './ownerDocument';\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n  return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar getRefTarget = function getRefTarget(ref) {\n  return ref && ('current' in ref ? ref.current : ref);\n};\n\n/**\n * The `useRootClose` hook registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref  The element boundary\n * @param {function} onRootClose\n * @param {object=}  options\n * @param {boolean=} options.disabled\n * @param {string=}  options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\nfunction useRootClose(ref, onRootClose, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      disabled = _ref.disabled,\n      _ref$clickTrigger = _ref.clickTrigger,\n      clickTrigger = _ref$clickTrigger === void 0 ? 'click' : _ref$clickTrigger;\n\n  var preventMouseRootCloseRef = useRef(false);\n  var onClose = onRootClose || noop;\n  var handleMouseCapture = useCallback(function (e) {\n    var _e$composedPath$;\n\n    var currentTarget = getRefTarget(ref);\n    warning(!!currentTarget, 'RootClose captured a close event but does not have a ref to compare it to. ' + 'useRootClose(), should be passed a ref that resolves to a DOM node');\n    preventMouseRootCloseRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, (_e$composedPath$ = e.composedPath == null ? void 0 : e.composedPath()[0]) != null ? _e$composedPath$ : e.target);\n  }, [ref]);\n  var handleMouse = useEventCallback(function (e) {\n    if (!preventMouseRootCloseRef.current) {\n      onClose(e);\n    }\n  });\n  var handleKeyUp = useEventCallback(function (e) {\n    if (e.keyCode === escapeKeyCode) {\n      onClose(e);\n    }\n  });\n  useEffect(function () {\n    if (disabled || ref == null) return undefined; // Store the current event to avoid triggering handlers immediately\n    // https://github.com/facebook/react/issues/20074\n\n    var currentEvent = window.event;\n    var doc = ownerDocument(getRefTarget(ref)); // Use capture for this listener so it fires before React's listener, to\n    // avoid false positives in the contains() check below if the target DOM\n    // element is removed in the React mouse callback.\n\n    var removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n    var removeMouseListener = listen(doc, clickTrigger, function (e) {\n      // skip if this event is the same as the one running when we added the handlers\n      if (e === currentEvent) {\n        currentEvent = undefined;\n        return;\n      }\n\n      handleMouse(e);\n    });\n    var removeKeyupListener = listen(doc, 'keyup', function (e) {\n      // skip if this event is the same as the one running when we added the handlers\n      if (e === currentEvent) {\n        currentEvent = undefined;\n        return;\n      }\n\n      handleKeyUp(e);\n    });\n    var mobileSafariHackListeners = [];\n\n    if ('ontouchstart' in doc.documentElement) {\n      mobileSafariHackListeners = [].slice.call(doc.body.children).map(function (el) {\n        return listen(el, 'mousemove', noop);\n      });\n    }\n\n    return function () {\n      removeMouseCaptureListener();\n      removeMouseListener();\n      removeKeyupListener();\n      mobileSafariHackListeners.forEach(function (remove) {\n        return remove();\n      });\n    };\n  }, [ref, disabled, clickTrigger, handleMouseCapture, handleMouse, handleKeyUp]);\n}\n\nexport default useRootClose;","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n  // HTML DOM and SVG DOM may have different support levels,\n  // so we need to check on context instead of a document root element.\n  if (context.contains) return context.contains(node);\n  if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","import { useRef } from 'react';\nimport _useRootClose from 'react-overlays/useRootClose';\nfunction useRootClose(onRootClose, options) {\n  var rootElementRef = useRef(null);\n  _useRootClose(rootElementRef.current, onRootClose, options);\n  return rootElementRef;\n}\nexport default useRootClose;","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"onRootClose\"];\nimport useRootClose from './useRootClose';\nfunction RootClose(_ref) {\n  var children = _ref.children,\n    onRootClose = _ref.onRootClose,\n    props = _objectWithoutProperties(_ref, _excluded);\n  var rootRef = useRootClose(onRootClose, props);\n  return children(rootRef);\n}\nexport default RootClose;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"onBlur\", \"onClick\", \"onFocus\", \"onRemove\", \"option\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport useRootClose from \"react-overlays/useRootClose\";\nimport { getDisplayName, isFunction, warn } from '../utils';\nimport { optionType } from '../propTypes';\nvar propTypes = {\n  onBlur: PropTypes.func,\n  onClick: PropTypes.func,\n  onFocus: PropTypes.func,\n  onRemove: PropTypes.func,\n  option: optionType.isRequired\n};\nexport function useToken(_ref) {\n  var onBlur = _ref.onBlur,\n    onClick = _ref.onClick,\n    onFocus = _ref.onFocus,\n    onRemove = _ref.onRemove,\n    option = _ref.option,\n    props = _objectWithoutProperties(_ref, _excluded);\n  var _useState = useState(false),\n    _useState2 = _slicedToArray(_useState, 2),\n    active = _useState2[0],\n    setActive = _useState2[1];\n  var _useState3 = useState(null),\n    _useState4 = _slicedToArray(_useState3, 2),\n    rootElement = _useState4[0],\n    attachRef = _useState4[1];\n  var handleBlur = function handleBlur(e) {\n    setActive(false);\n    onBlur && onBlur(e);\n  };\n  var handleClick = function handleClick(e) {\n    setActive(true);\n    onClick && onClick(e);\n  };\n  var handleFocus = function handleFocus(e) {\n    setActive(true);\n    onFocus && onFocus(e);\n  };\n  var handleRemove = function handleRemove() {\n    onRemove && onRemove(option);\n  };\n  var handleKeyDown = function handleKeyDown(e) {\n    if (e.key === 'Backspace' && active) {\n      // Prevent browser from going back.\n      e.preventDefault();\n      handleRemove();\n    }\n  };\n  useRootClose(rootElement, handleBlur, _objectSpread(_objectSpread({}, props), {}, {\n    disabled: !active\n  }));\n  return {\n    active: active,\n    onBlur: handleBlur,\n    onClick: handleClick,\n    onFocus: handleFocus,\n    onKeyDown: handleKeyDown,\n    onRemove: isFunction(onRemove) ? handleRemove : undefined,\n    ref: attachRef\n  };\n}\n\n/* istanbul ignore next */\nexport function withToken(Component) {\n  warn(false, 'Warning: `withToken` is deprecated and will be removed in the next ' + 'major version. Use `useToken` instead.');\n  var displayName = \"withToken(\".concat(getDisplayName(Component), \")\");\n  var WrappedToken = function WrappedToken(props) {\n    return /*#__PURE__*/React.createElement(Component, _extends({}, props, useToken(props)));\n  };\n  WrappedToken.displayName = displayName;\n  WrappedToken.propTypes = propTypes;\n  return WrappedToken;\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"active\", \"children\", \"className\", \"onRemove\", \"tabIndex\"],\n  _excluded2 = [\"children\", \"option\", \"readOnly\"],\n  _excluded3 = [\"ref\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport cx from 'classnames';\nimport React, { forwardRef } from 'react';\nimport ClearButton from '../ClearButton';\nimport { useToken } from '../../behaviors/token';\nimport { isFunction } from '../../utils';\nvar InteractiveToken = /*#__PURE__*/forwardRef(function (_ref, ref) {\n  var active = _ref.active,\n    children = _ref.children,\n    className = _ref.className,\n    onRemove = _ref.onRemove,\n    tabIndex = _ref.tabIndex,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n    className: cx('rbt-token', 'rbt-token-removeable', {\n      'rbt-token-active': !!active\n    }, className),\n    ref: ref,\n    tabIndex: tabIndex || 0\n  }), children, /*#__PURE__*/React.createElement(ClearButton, {\n    className: \"rbt-token-remove-button\",\n    label: \"Remove\",\n    onClick: onRemove,\n    tabIndex: -1\n  }));\n});\nvar StaticToken = function StaticToken(_ref2) {\n  var children = _ref2.children,\n    className = _ref2.className,\n    disabled = _ref2.disabled,\n    href = _ref2.href;\n  var classnames = cx('rbt-token', {\n    'rbt-token-disabled': disabled\n  }, className);\n  if (href && !disabled) {\n    return /*#__PURE__*/React.createElement(\"a\", {\n      className: classnames,\n      href: href\n    }, children);\n  }\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: classnames\n  }, children);\n};\n/**\n * Individual token component, generally displayed within the\n * `TypeaheadInputMulti` component, but can also be rendered on its own.\n */\nvar Token = function Token(_ref3) {\n  var children = _ref3.children,\n    option = _ref3.option,\n    readOnly = _ref3.readOnly,\n    props = _objectWithoutProperties(_ref3, _excluded2);\n  var _useToken = useToken(_objectSpread(_objectSpread({}, props), {}, {\n      option: option\n    })),\n    ref = _useToken.ref,\n    tokenProps = _objectWithoutProperties(_useToken, _excluded3);\n  var child = /*#__PURE__*/React.createElement(\"div\", {\n    className: \"rbt-token-label\"\n  }, children);\n  return !props.disabled && !readOnly && isFunction(tokenProps.onRemove) ? /*#__PURE__*/React.createElement(InteractiveToken, _extends({}, props, tokenProps, {\n    ref: ref\n  }), child) : /*#__PURE__*/React.createElement(StaticToken, props, child);\n};\nexport default Token;","import React, { useEffect, useRef } from 'react';\nimport { useTypeaheadContext } from '../../core/Context';\n\n// IE doesn't seem to get the composite computed value (eg: 'padding',\n// 'borderStyle', etc.), so generate these from the individual values.\nfunction interpolateStyle(styles, attr) {\n  var subattr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n  // Title-case the sub-attribute.\n  if (subattr) {\n    /* eslint-disable-next-line no-param-reassign */\n    subattr = subattr.replace(subattr[0], subattr[0].toUpperCase());\n  }\n  return ['Top', 'Right', 'Bottom', 'Left'].map(function (dir) {\n    return styles[\"\".concat(attr).concat(dir).concat(subattr)];\n  }).join(' ');\n}\nfunction copyStyles(inputNode, hintNode) {\n  var inputStyle = window.getComputedStyle(inputNode);\n\n  /* eslint-disable no-param-reassign */\n  hintNode.style.borderStyle = interpolateStyle(inputStyle, 'border', 'style');\n  hintNode.style.borderWidth = interpolateStyle(inputStyle, 'border', 'width');\n  hintNode.style.fontSize = inputStyle.fontSize;\n  hintNode.style.fontWeight = inputStyle.fontWeight;\n  hintNode.style.height = inputStyle.height;\n  hintNode.style.lineHeight = inputStyle.lineHeight;\n  hintNode.style.margin = interpolateStyle(inputStyle, 'margin');\n  hintNode.style.padding = interpolateStyle(inputStyle, 'padding');\n  /* eslint-enable no-param-reassign */\n}\n\nexport var useHint = function useHint() {\n  var _useTypeaheadContext = useTypeaheadContext(),\n    hintText = _useTypeaheadContext.hintText,\n    inputNode = _useTypeaheadContext.inputNode;\n  var hintRef = useRef(null);\n  useEffect(function () {\n    // Scroll hint input when the text input is scrolling.\n    var handleInputScroll = function handleInputScroll() {\n      if (hintRef.current && inputNode) {\n        hintRef.current.scrollLeft = inputNode.scrollLeft;\n      }\n    };\n    inputNode === null || inputNode === void 0 || inputNode.addEventListener('scroll', handleInputScroll);\n    return function () {\n      inputNode === null || inputNode === void 0 || inputNode.removeEventListener('scroll', handleInputScroll);\n    };\n  }, [inputNode]);\n  useEffect(function () {\n    if (inputNode && hintRef.current) {\n      copyStyles(inputNode, hintRef.current);\n    }\n  });\n  return {\n    hintRef: hintRef,\n    hintText: hintText\n  };\n};\nvar Hint = function Hint(_ref) {\n  var children = _ref.children,\n    className = _ref.className;\n  var _useHint = useHint(),\n    hintRef = _useHint.hintRef,\n    hintText = _useHint.hintText;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: className,\n    style: {\n      display: 'flex',\n      flex: 1,\n      height: '100%',\n      position: 'relative'\n    }\n  }, children, /*#__PURE__*/React.createElement(\"input\", {\n    \"aria-hidden\": true,\n    className: \"rbt-input-hint\",\n    ref: hintRef,\n    readOnly: true,\n    style: {\n      backgroundColor: 'transparent',\n      borderColor: 'transparent',\n      boxShadow: 'none',\n      color: 'rgba(0, 0, 0, 0.54)',\n      left: 0,\n      pointerEvents: 'none',\n      position: 'absolute',\n      top: 0,\n      width: '100%'\n    },\n    tabIndex: -1,\n    value: hintText\n  }));\n};\nexport default Hint;","import _extends from \"@babel/runtime/helpers/extends\";\nimport cx from 'classnames';\nimport React, { forwardRef } from 'react';\nvar Input = /*#__PURE__*/forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(\"input\", _extends({}, props, {\n    className: cx('rbt-input-main', props.className),\n    ref: ref\n  }));\n});\nexport default Input;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"children\", \"className\", \"inputClassName\", \"inputRef\", \"referenceElementRef\", \"selected\"];\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n\nimport cx from 'classnames';\nimport React from 'react';\nimport Hint from '../Hint';\nimport Input from '../Input';\nimport { isSelectable, propsWithBsClassName } from '../../utils';\nfunction TypeaheadInputMulti(props) {\n  var wrapperRef = React.useRef(null);\n  var inputElem = React.useRef(null);\n  var _propsWithBsClassName = propsWithBsClassName(props),\n    children = _propsWithBsClassName.children,\n    className = _propsWithBsClassName.className,\n    inputClassName = _propsWithBsClassName.inputClassName,\n    inputRef = _propsWithBsClassName.inputRef,\n    referenceElementRef = _propsWithBsClassName.referenceElementRef,\n    selected = _propsWithBsClassName.selected,\n    rest = _objectWithoutProperties(_propsWithBsClassName, _excluded);\n  function getInputRef(input) {\n    inputElem.current = input;\n    props.inputRef(input);\n  }\n\n  /**\n   * Forward click or focus events on the container element to the input.\n   */\n  function handleContainerClickOrFocus(e) {\n    // Don't focus the input if it's disabled.\n    if (props.disabled) {\n      e.currentTarget.blur();\n      return;\n    }\n    var inputNode = inputElem.current;\n    if (!inputNode ||\n    // Ignore if the clicked element is a child of the container, ie: a token\n    // or the input itself.\n    e.currentTarget.contains(e.target) && e.currentTarget !== e.target) {\n      return;\n    }\n    if (isSelectable(inputNode)) {\n      // Move cursor to the end if the user clicks outside the actual input.\n      inputNode.selectionStart = inputNode.value.length;\n    }\n    inputNode.focus();\n  }\n  function handleKeyDown(e) {\n    if (e.key === 'Backspace' && selected.length && !props.value) {\n      var _wrapperRef$current;\n      // Prevent browser from going back.\n      e.preventDefault();\n\n      // If the input is selected and there is no text, focus the last\n      // token when the user hits backspace.\n\n      var wrapperChildren = (_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.children;\n      if (wrapperChildren !== null && wrapperChildren !== void 0 && wrapperChildren.length) {\n        var lastToken = wrapperChildren[wrapperChildren.length - 2];\n        lastToken === null || lastToken === void 0 || lastToken.focus();\n      }\n    }\n    props.onKeyDown && props.onKeyDown(e);\n  }\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: cx('rbt-input-multi', {\n      disabled: props.disabled\n    }, className),\n    onClick: handleContainerClickOrFocus,\n    onFocus: handleContainerClickOrFocus,\n    ref: referenceElementRef,\n    tabIndex: -1\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: \"rbt-input-wrapper\",\n    ref: wrapperRef\n  }, children, /*#__PURE__*/React.createElement(Hint, null, /*#__PURE__*/React.createElement(Input, _extends({}, rest, {\n    className: inputClassName,\n    onKeyDown: handleKeyDown,\n    ref: getInputRef,\n    style: {\n      backgroundColor: 'transparent',\n      border: 0,\n      boxShadow: 'none',\n      cursor: 'inherit',\n      outline: 'none',\n      padding: 0,\n      width: '100%',\n      zIndex: 1\n    }\n  })))));\n}\nexport default TypeaheadInputMulti;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"inputRef\", \"referenceElementRef\"];\nimport React from 'react';\nimport Hint from '../Hint';\nimport Input from '../Input';\nimport { propsWithBsClassName } from '../../utils';\nvar TypeaheadInputSingle = function TypeaheadInputSingle(_ref) {\n  var inputRef = _ref.inputRef,\n    referenceElementRef = _ref.referenceElementRef,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return /*#__PURE__*/React.createElement(Hint, null, /*#__PURE__*/React.createElement(Input, _extends({}, propsWithBsClassName(props), {\n    ref: function ref(node) {\n      inputRef(node);\n      referenceElementRef(node);\n    }\n  })));\n};\nexport default TypeaheadInputSingle;","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { getMatchBounds } from '../../utils';\nvar propTypes = {\n  children: PropTypes.string.isRequired,\n  highlightClassName: PropTypes.string,\n  search: PropTypes.string.isRequired\n};\n/**\n * Stripped-down version of https://github.com/helior/react-highlighter\n *\n * Results are already filtered by the time the component is used internally so\n * we can safely ignore case and diacritical marks for the purposes of matching.\n */\nvar Highlighter = function Highlighter(_ref) {\n  var children = _ref.children,\n    _ref$highlightClassNa = _ref.highlightClassName,\n    highlightClassName = _ref$highlightClassNa === void 0 ? 'rbt-highlight-text' : _ref$highlightClassNa,\n    search = _ref.search;\n  if (!search || !children) {\n    return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n  }\n  var matchCount = 0;\n  var remaining = children;\n  var highlighterChildren = [];\n  while (remaining) {\n    var bounds = getMatchBounds(remaining, search);\n\n    // No match anywhere in the remaining string, stop.\n    if (!bounds) {\n      highlighterChildren.push(remaining);\n      break;\n    }\n\n    // Capture the string that leads up to a match.\n    var nonMatch = remaining.slice(0, bounds.start);\n    if (nonMatch) {\n      highlighterChildren.push(nonMatch);\n    }\n\n    // Capture the matching string.\n    var match = remaining.slice(bounds.start, bounds.end);\n    highlighterChildren.push( /*#__PURE__*/React.createElement(\"mark\", {\n      className: highlightClassName,\n      key: matchCount\n    }, match));\n    matchCount += 1;\n\n    // And if there's anything left over, continue the loop.\n    remaining = remaining.slice(bounds.end);\n  }\n  return /*#__PURE__*/React.createElement(React.Fragment, null, highlighterChildren);\n};\nHighlighter.propTypes = propTypes;\nexport default Highlighter;","const t=t=>\"object\"==typeof t&&null!=t&&1===t.nodeType,e=(t,e)=>(!e||\"hidden\"!==t)&&(\"visible\"!==t&&\"clip\"!==t),n=(t,n)=>{if(t.clientHeight<t.scrollHeight||t.clientWidth<t.scrollWidth){const o=getComputedStyle(t,null);return e(o.overflowY,n)||e(o.overflowX,n)||(t=>{const e=(t=>{if(!t.ownerDocument||!t.ownerDocument.defaultView)return null;try{return t.ownerDocument.defaultView.frameElement}catch(t){return null}})(t);return!!e&&(e.clientHeight<t.scrollHeight||e.clientWidth<t.scrollWidth)})(t)}return!1},o=(t,e,n,o,l,r,i,s)=>r<t&&i>e||r>t&&i<e?0:r<=t&&s<=n||i>=e&&s>=n?r-t-o:i>e&&s<n||r<t&&s>n?i-e+l:0,l=t=>{const e=t.parentElement;return null==e?t.getRootNode().host||null:e},r=(e,r)=>{var i,s,d,h;if(\"undefined\"==typeof document)return[];const{scrollMode:c,block:f,inline:u,boundary:a,skipOverflowHiddenElements:g}=r,p=\"function\"==typeof a?a:t=>t!==a;if(!t(e))throw new TypeError(\"Invalid target\");const m=document.scrollingElement||document.documentElement,w=[];let W=e;for(;t(W)&&p(W);){if(W=l(W),W===m){w.push(W);break}null!=W&&W===document.body&&n(W)&&!n(document.documentElement)||null!=W&&n(W,g)&&w.push(W)}const b=null!=(s=null==(i=window.visualViewport)?void 0:i.width)?s:innerWidth,H=null!=(h=null==(d=window.visualViewport)?void 0:d.height)?h:innerHeight,{scrollX:y,scrollY:M}=window,{height:v,width:E,top:x,right:C,bottom:I,left:R}=e.getBoundingClientRect(),{top:T,right:B,bottom:F,left:V}=(t=>{const e=window.getComputedStyle(t);return{top:parseFloat(e.scrollMarginTop)||0,right:parseFloat(e.scrollMarginRight)||0,bottom:parseFloat(e.scrollMarginBottom)||0,left:parseFloat(e.scrollMarginLeft)||0}})(e);let k=\"start\"===f||\"nearest\"===f?x-T:\"end\"===f?I+F:x+v/2-T+F,D=\"center\"===u?R+E/2-V+B:\"end\"===u?C+B:R-V;const L=[];for(let t=0;t<w.length;t++){const e=w[t],{height:l,width:r,top:i,right:s,bottom:d,left:h}=e.getBoundingClientRect();if(\"if-needed\"===c&&x>=0&&R>=0&&I<=H&&C<=b&&(e===m&&!n(e)||x>=i&&I<=d&&R>=h&&C<=s))return L;const a=getComputedStyle(e),g=parseInt(a.borderLeftWidth,10),p=parseInt(a.borderTopWidth,10),W=parseInt(a.borderRightWidth,10),T=parseInt(a.borderBottomWidth,10);let B=0,F=0;const V=\"offsetWidth\"in e?e.offsetWidth-e.clientWidth-g-W:0,S=\"offsetHeight\"in e?e.offsetHeight-e.clientHeight-p-T:0,X=\"offsetWidth\"in e?0===e.offsetWidth?0:r/e.offsetWidth:0,Y=\"offsetHeight\"in e?0===e.offsetHeight?0:l/e.offsetHeight:0;if(m===e)B=\"start\"===f?k:\"end\"===f?k-H:\"nearest\"===f?o(M,M+H,H,p,T,M+k,M+k+v,v):k-H/2,F=\"start\"===u?D:\"center\"===u?D-b/2:\"end\"===u?D-b:o(y,y+b,b,g,W,y+D,y+D+E,E),B=Math.max(0,B+M),F=Math.max(0,F+y);else{B=\"start\"===f?k-i-p:\"end\"===f?k-d+T+S:\"nearest\"===f?o(i,d,l,p,T+S,k,k+v,v):k-(i+l/2)+S/2,F=\"start\"===u?D-h-g:\"center\"===u?D-(h+r/2)+V/2:\"end\"===u?D-s+W+V:o(h,s,r,g,W+V,D,D+E,E);const{scrollLeft:t,scrollTop:n}=e;B=0===Y?0:Math.max(0,Math.min(n+B/Y,e.scrollHeight-l/Y+S)),F=0===X?0:Math.max(0,Math.min(t+F/X,e.scrollWidth-r/X+V)),k+=n-B,D+=t-F}L.push({el:e,top:B,left:F})}return L};export{r as compute};//# sourceMappingURL=index.js.map\n","import{compute as t}from\"compute-scroll-into-view\";const o=t=>!1===t?{block:\"end\",inline:\"nearest\"}:(t=>t===Object(t)&&0!==Object.keys(t).length)(t)?t:{block:\"start\",inline:\"nearest\"};function e(e,r){if(!e.isConnected||!(t=>{let o=t;for(;o&&o.parentNode;){if(o.parentNode===document)return!0;o=o.parentNode instanceof ShadowRoot?o.parentNode.host:o.parentNode}return!1})(e))return;const n=(t=>{const o=window.getComputedStyle(t);return{top:parseFloat(o.scrollMarginTop)||0,right:parseFloat(o.scrollMarginRight)||0,bottom:parseFloat(o.scrollMarginBottom)||0,left:parseFloat(o.scrollMarginLeft)||0}})(e);if((t=>\"object\"==typeof t&&\"function\"==typeof t.behavior)(r))return r.behavior(t(e,r));const l=\"boolean\"==typeof r||null==r?void 0:r.behavior;for(const{el:a,top:i,left:s}of t(e,o(r))){const t=i-n.top+n.bottom,o=s-n.left+n.right;a.scroll({top:t,left:o,behavior:l})}}export{e as default};//# sourceMappingURL=index.js.map\n","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"label\", \"onClick\", \"option\", \"position\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { useTypeaheadContext } from '../core/Context';\nimport { getDisplayName, getMenuItemId, preventInputBlur, warn } from '../utils';\nimport { optionType } from '../propTypes';\nvar propTypes = {\n  option: optionType.isRequired,\n  position: PropTypes.number\n};\nexport function useItem(_ref) {\n  var label = _ref.label,\n    onClick = _ref.onClick,\n    option = _ref.option,\n    position = _ref.position,\n    props = _objectWithoutProperties(_ref, _excluded);\n  var _useTypeaheadContext = useTypeaheadContext(),\n    activeIndex = _useTypeaheadContext.activeIndex,\n    id = _useTypeaheadContext.id,\n    isOnlyResult = _useTypeaheadContext.isOnlyResult,\n    onActiveItemChange = _useTypeaheadContext.onActiveItemChange,\n    onInitialItemChange = _useTypeaheadContext.onInitialItemChange,\n    onMenuItemClick = _useTypeaheadContext.onMenuItemClick,\n    setItem = _useTypeaheadContext.setItem;\n  var itemRef = useRef(null);\n  useEffect(function () {\n    if (position === 0) {\n      onInitialItemChange(option);\n    }\n  });\n  useEffect(function () {\n    if (position === activeIndex) {\n      onActiveItemChange(option);\n\n      // Automatically scroll the menu as the user keys through it.\n      var node = itemRef.current;\n      node && scrollIntoView(node, {\n        boundary: node.parentNode,\n        scrollMode: 'if-needed'\n      });\n    }\n  }, [activeIndex, onActiveItemChange, option, position]);\n  var handleClick = useCallback(function (e) {\n    onMenuItemClick(option, e);\n    onClick && onClick(e);\n  }, [onClick, onMenuItemClick, option]);\n  var active = isOnlyResult || activeIndex === position;\n\n  // Update the item's position in the item stack.\n  setItem(option, position);\n  return _objectSpread(_objectSpread({}, props), {}, {\n    active: active,\n    'aria-label': label,\n    'aria-selected': active,\n    id: getMenuItemId(id, position),\n    onClick: handleClick,\n    onMouseDown: preventInputBlur,\n    ref: itemRef,\n    role: 'option'\n  });\n}\n\n/* istanbul ignore next */\nexport function withItem(Component) {\n  warn(false, 'Warning: `withItem` is deprecated and will be removed in the next ' + 'major version. Use `useItem` instead.');\n  var WrappedMenuItem = function WrappedMenuItem(props) {\n    return /*#__PURE__*/React.createElement(Component, _extends({}, props, useItem(props)));\n  };\n  WrappedMenuItem.displayName = \"withItem(\".concat(getDisplayName(Component), \")\");\n  WrappedMenuItem.propTypes = propTypes;\n  return WrappedMenuItem;\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"active\", \"children\", \"className\", \"disabled\", \"onClick\"];\nimport cx from 'classnames';\nimport React, { forwardRef } from 'react';\nimport { useItem } from '../../behaviors/item';\nexport var BaseMenuItem = /*#__PURE__*/forwardRef(function (_ref, ref) {\n  var active = _ref.active,\n    children = _ref.children,\n    className = _ref.className,\n    disabled = _ref.disabled,\n    _onClick = _ref.onClick,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return /*#__PURE__*/React.createElement(\"a\", _extends({}, props, {\n    className: cx('dropdown-item', {\n      active: active,\n      disabled: disabled\n    }, className),\n    href: props.href || '#',\n    onClick: function onClick(e) {\n      e.preventDefault();\n      !disabled && _onClick && _onClick(e);\n    },\n    ref: ref\n  }), children);\n});\nexport default function MenuItem(props) {\n  return /*#__PURE__*/React.createElement(BaseMenuItem, useItem(props));\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nvar _excluded = [\"emptyLabel\", \"innerRef\", \"maxHeight\", \"style\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { Children } from 'react';\nimport { BaseMenuItem } from '../MenuItem';\nimport { preventInputBlur } from '../../utils';\nimport { checkPropType, isRequiredForA11y } from '../../propTypes';\nvar MenuDivider = function MenuDivider() {\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: \"dropdown-divider\",\n    role: \"separator\"\n  });\n};\nvar MenuHeader = function MenuHeader(props) {\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line jsx-a11y/role-has-required-aria-props\n    React.createElement(\"div\", _extends({}, props, {\n      className: \"dropdown-header\",\n      role: \"heading\"\n    }))\n  );\n};\nvar propTypes = {\n  'aria-label': PropTypes.string,\n  /**\n   * Message to display in the menu if there are no valid results.\n   */\n  emptyLabel: PropTypes.node,\n  /**\n   * Needed for accessibility.\n   */\n  id: checkPropType(PropTypes.oneOfType([PropTypes.number, PropTypes.string]), isRequiredForA11y),\n  /**\n   * Maximum height of the dropdown menu.\n   */\n  maxHeight: PropTypes.string\n};\n/**\n * Menu component that handles empty state when passed a set of results.\n */\nvar Menu = function Menu(_ref) {\n  var _ref$emptyLabel = _ref.emptyLabel,\n    emptyLabel = _ref$emptyLabel === void 0 ? 'No matches found.' : _ref$emptyLabel,\n    innerRef = _ref.innerRef,\n    _ref$maxHeight = _ref.maxHeight,\n    maxHeight = _ref$maxHeight === void 0 ? '300px' : _ref$maxHeight,\n    style = _ref.style,\n    props = _objectWithoutProperties(_ref, _excluded);\n  var children = Children.count(props.children) === 0 ? /*#__PURE__*/React.createElement(BaseMenuItem, {\n    disabled: true,\n    role: \"option\"\n  }, emptyLabel) : props.children;\n  return (\n    /*#__PURE__*/\n    /* eslint-disable jsx-a11y/interactive-supports-focus */\n    React.createElement(\"div\", _extends({}, props, {\n      \"aria-label\": props['aria-label'] || 'menu-options',\n      className: cx('rbt-menu', 'dropdown-menu', 'show', props.className),\n      onMouseDown:\n      // Prevent input from blurring when clicking on the menu scrollbar.\n      preventInputBlur,\n      ref: innerRef,\n      role: \"listbox\",\n      style: _objectSpread(_objectSpread({}, style), {}, {\n        display: 'block',\n        maxHeight: maxHeight,\n        overflow: 'auto'\n      })\n    }), children)\n    /* eslint-enable jsx-a11y/interactive-supports-focus */\n  );\n};\n\nMenu.propTypes = propTypes;\nMenu.Divider = MenuDivider;\nMenu.Header = MenuHeader;\nexport default Menu;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"labelKey\", \"newSelectionPrefix\", \"options\", \"paginationText\", \"renderMenuItemChildren\", \"text\"];\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Highlighter from '../Highlighter';\nimport Menu from '../Menu';\nimport MenuItem from '../MenuItem';\nimport { getOptionLabel, getOptionProperty, isString } from '../../utils';\nvar propTypes = {\n  /**\n   * Provides the ability to specify a prefix before the user-entered text to\n   * indicate that the selection will be new. No-op unless `allowNew={true}`.\n   */\n  newSelectionPrefix: PropTypes.node,\n  /**\n   * Prompt displayed when large data sets are paginated.\n   */\n  paginationText: PropTypes.node,\n  /**\n   * Provides a hook for customized rendering of menu item contents.\n   */\n  renderMenuItemChildren: PropTypes.func\n};\nfunction renderMenuItemChildrenFn(option, props) {\n  return /*#__PURE__*/React.createElement(Highlighter, {\n    search: props.text\n  }, getOptionLabel(option, props.labelKey));\n}\nvar TypeaheadMenu = function TypeaheadMenu(props) {\n  var labelKey = props.labelKey,\n    _props$newSelectionPr = props.newSelectionPrefix,\n    newSelectionPrefix = _props$newSelectionPr === void 0 ? 'New selection: ' : _props$newSelectionPr,\n    options = props.options,\n    _props$paginationText = props.paginationText,\n    paginationText = _props$paginationText === void 0 ? 'Display additional results...' : _props$paginationText,\n    _props$renderMenuItem = props.renderMenuItemChildren,\n    renderMenuItemChildren = _props$renderMenuItem === void 0 ? renderMenuItemChildrenFn : _props$renderMenuItem,\n    text = props.text,\n    menuProps = _objectWithoutProperties(props, _excluded);\n  var renderMenuItem = function renderMenuItem(option, position) {\n    var label = getOptionLabel(option, labelKey);\n    var menuItemProps = {\n      disabled: !!getOptionProperty(option, 'disabled'),\n      label: label,\n      option: option,\n      position: position\n    };\n    if (getOptionProperty(option, 'customOption')) {\n      return /*#__PURE__*/React.createElement(MenuItem, _extends({}, menuItemProps, {\n        className: \"rbt-menu-custom-option\",\n        key: position,\n        label: label\n      }), newSelectionPrefix, /*#__PURE__*/React.createElement(Highlighter, {\n        search: text\n      }, label));\n    }\n    if (getOptionProperty(option, 'paginationOption')) {\n      return /*#__PURE__*/React.createElement(React.Fragment, {\n        key: \"pagination-option-divider\"\n      }, /*#__PURE__*/React.createElement(Menu.Divider, null), /*#__PURE__*/React.createElement(MenuItem, _extends({}, menuItemProps, {\n        className: \"rbt-menu-pagination-option\",\n        label:\n        // TODO: Fix how (aria-)labels are passed to `MenuItem`.\n        // `paginationText` can be a ReactNode.\n        isString(paginationText) ? paginationText : ''\n      }), paginationText));\n    }\n    return /*#__PURE__*/React.createElement(MenuItem, _extends({}, menuItemProps, {\n      key: position\n    }), renderMenuItemChildren(option, props, position));\n  };\n  return /*#__PURE__*/React.createElement(Menu, _extends({}, menuProps, {\n    key:\n    // Force a re-render if the text changes to ensure that menu\n    // positioning updates correctly.\n    text\n  }), options.map(renderMenuItem));\n};\nTypeaheadMenu.propTypes = propTypes;\nexport default TypeaheadMenu;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { forwardRef } from 'react';\nimport Typeahead from '../../core/Typeahead';\nimport ClearButton from '../ClearButton';\nimport Loader from '../Loader';\nimport Overlay from '../Overlay';\nimport RootClose from '../RootClose';\nimport Token from '../Token/Token';\nimport TypeaheadInputMulti from '../TypeaheadInputMulti';\nimport TypeaheadInputSingle from '../TypeaheadInputSingle';\nimport TypeaheadMenu from '../TypeaheadMenu';\nimport { getOptionLabel, isFunction, isSizeLarge, pick, preventInputBlur } from '../../utils';\nimport { checkPropType, inputPropsType, sizeType } from '../../propTypes';\nvar propTypes = {\n  /**\n   * Displays a button to clear the input when there are selections.\n   */\n  clearButton: PropTypes.bool,\n  /**\n   * Props to be applied directly to the input. `onBlur`, `onChange`,\n   * `onFocus`, and `onKeyDown` are ignored.\n   */\n  inputProps: checkPropType(PropTypes.object, inputPropsType),\n  /**\n   * Bootstrap 4 only. Adds the `is-invalid` classname to the `form-control`.\n   */\n  isInvalid: PropTypes.bool,\n  /**\n   * Indicate whether an asynchronous data fetch is happening.\n   */\n  isLoading: PropTypes.bool,\n  /**\n   * Bootstrap 4 only. Adds the `is-valid` classname to the `form-control`.\n   */\n  isValid: PropTypes.bool,\n  /**\n   * Callback for custom input rendering.\n   */\n  renderInput: PropTypes.func,\n  /**\n   * Callback for custom menu rendering.\n   */\n  renderMenu: PropTypes.func,\n  /**\n   * Callback for custom menu rendering.\n   */\n  renderToken: PropTypes.func,\n  /**\n   * Specifies the size of the input.\n   */\n  size: sizeType\n};\nvar defaultProps = {\n  isLoading: false\n};\nvar defaultRenderMenu = function defaultRenderMenu(results, menuProps, props) {\n  return /*#__PURE__*/React.createElement(TypeaheadMenu, _extends({}, menuProps, {\n    labelKey: props.labelKey,\n    options: results,\n    text: props.text\n  }));\n};\nvar defaultRenderToken = function defaultRenderToken(option, props, idx) {\n  return /*#__PURE__*/React.createElement(Token, {\n    disabled: props.disabled,\n    key: idx,\n    onRemove: props.onRemove,\n    option: option,\n    tabIndex: props.tabIndex\n  }, getOptionLabel(option, props.labelKey));\n};\nvar overlayPropKeys = ['align', 'dropup', 'flip', 'positionFixed'];\nfunction getOverlayProps(props) {\n  return pick(props, overlayPropKeys);\n}\nvar TypeaheadComponent = /*#__PURE__*/function (_React$Component) {\n  _inherits(TypeaheadComponent, _React$Component);\n  var _super = _createSuper(TypeaheadComponent);\n  function TypeaheadComponent() {\n    var _this;\n    _classCallCheck(this, TypeaheadComponent);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _defineProperty(_assertThisInitialized(_this), \"_referenceElement\", null);\n    _defineProperty(_assertThisInitialized(_this), \"referenceElementRef\", function (referenceElement) {\n      _this._referenceElement = referenceElement;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_renderInput\", function (inputProps, props) {\n      var _this$props = _this.props,\n        isInvalid = _this$props.isInvalid,\n        isValid = _this$props.isValid,\n        multiple = _this$props.multiple,\n        renderInput = _this$props.renderInput,\n        renderToken = _this$props.renderToken,\n        size = _this$props.size;\n      if (isFunction(renderInput)) {\n        return renderInput(inputProps, props);\n      }\n      var commonProps = _objectSpread(_objectSpread({}, inputProps), {}, {\n        isInvalid: isInvalid,\n        isValid: isValid,\n        size: size\n      });\n      if (!multiple) {\n        return /*#__PURE__*/React.createElement(TypeaheadInputSingle, commonProps);\n      }\n      var labelKey = props.labelKey,\n        onRemove = props.onRemove,\n        selected = props.selected;\n      return /*#__PURE__*/React.createElement(TypeaheadInputMulti, _extends({}, commonProps, {\n        placeholder: selected.length ? '' : inputProps.placeholder,\n        selected: selected\n      }), selected.map(function (option, idx) {\n        return (renderToken || defaultRenderToken)(option, _objectSpread(_objectSpread({}, commonProps), {}, {\n          labelKey: labelKey,\n          onRemove: onRemove\n        }), idx);\n      }));\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_renderMenu\", function (results, menuProps, props) {\n      var _this$props2 = _this.props,\n        emptyLabel = _this$props2.emptyLabel,\n        id = _this$props2.id,\n        maxHeight = _this$props2.maxHeight,\n        newSelectionPrefix = _this$props2.newSelectionPrefix,\n        paginationText = _this$props2.paginationText,\n        renderMenu = _this$props2.renderMenu,\n        renderMenuItemChildren = _this$props2.renderMenuItemChildren;\n      return (renderMenu || defaultRenderMenu)(results, _objectSpread(_objectSpread({}, menuProps), {}, {\n        emptyLabel: emptyLabel,\n        id: id,\n        maxHeight: maxHeight,\n        newSelectionPrefix: newSelectionPrefix,\n        paginationText: paginationText,\n        renderMenuItemChildren: renderMenuItemChildren\n      }), props);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"_renderAux\", function (_ref) {\n      var onClear = _ref.onClear,\n        selected = _ref.selected;\n      var _this$props3 = _this.props,\n        clearButton = _this$props3.clearButton,\n        disabled = _this$props3.disabled,\n        isLoading = _this$props3.isLoading,\n        size = _this$props3.size;\n      var content;\n      if (isLoading) {\n        content = /*#__PURE__*/React.createElement(Loader, null);\n      } else if (clearButton && !disabled && selected.length) {\n        content = /*#__PURE__*/React.createElement(ClearButton, {\n          onClick: onClear,\n          onMouseDown: preventInputBlur,\n          size: size\n        });\n      }\n      return content ? /*#__PURE__*/React.createElement(\"div\", {\n        className: cx('rbt-aux', {\n          'rbt-aux-lg': isSizeLarge(size)\n        })\n      }, content) : null;\n    });\n    return _this;\n  }\n  _createClass(TypeaheadComponent, [{\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n      var _this$props4 = this.props,\n        children = _this$props4.children,\n        className = _this$props4.className,\n        instanceRef = _this$props4.instanceRef,\n        open = _this$props4.open,\n        options = _this$props4.options,\n        style = _this$props4.style;\n      return /*#__PURE__*/React.createElement(Typeahead, _extends({}, this.props, {\n        options: options,\n        ref: instanceRef\n      }), function (props) {\n        var hideMenu = props.hideMenu,\n          isMenuShown = props.isMenuShown,\n          results = props.results;\n        var auxContent = _this2._renderAux(props);\n        return /*#__PURE__*/React.createElement(RootClose, {\n          disabled: open || !isMenuShown,\n          onRootClose: hideMenu\n        }, function (ref) {\n          return /*#__PURE__*/React.createElement(\"div\", {\n            className: cx('rbt', {\n              'has-aux': !!auxContent,\n              'is-invalid': _this2.props.isInvalid,\n              'is-valid': _this2.props.isValid\n            }, className),\n            ref: ref,\n            style: _objectSpread(_objectSpread({}, style), {}, {\n              outline: 'none',\n              position: 'relative'\n            }),\n            tabIndex: -1\n          }, _this2._renderInput(_objectSpread(_objectSpread({}, props.getInputProps(_this2.props.inputProps)), {}, {\n            referenceElementRef: _this2.referenceElementRef\n          }), props), /*#__PURE__*/React.createElement(Overlay, _extends({}, getOverlayProps(_this2.props), {\n            isMenuShown: isMenuShown,\n            referenceElement: _this2._referenceElement\n          }), function (menuProps) {\n            return _this2._renderMenu(results, menuProps, props);\n          }), auxContent, isFunction(children) ? children(props) : children);\n        });\n      });\n    }\n  }]);\n  return TypeaheadComponent;\n}(React.Component);\n_defineProperty(TypeaheadComponent, \"propTypes\", propTypes);\n_defineProperty(TypeaheadComponent, \"defaultProps\", defaultProps);\nexport default /*#__PURE__*/forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(TypeaheadComponent, _extends({}, props, {\n    instanceRef: ref\n  }));\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport React, { forwardRef } from 'react';\nimport { useAsync } from '../../behaviors/async';\nimport TypeaheadComponent from '../Typeahead';\nvar AsyncTypeahead = /*#__PURE__*/forwardRef(function (props, ref) {\n  return /*#__PURE__*/React.createElement(TypeaheadComponent, _extends({}, useAsync(props), {\n    ref: ref\n  }));\n});\nexport default AsyncTypeahead;","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& 'dotAll' in RegExp.prototype\n\t\t\t&& 'hasIndices' in RegExp.prototype\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdescriptor.get.call(o);\n\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Get Cluster\n *\n * @name getCluster\n * @param {FeatureCollection} geojson GeoJSON Features\n * @param {*} filter Filter used on GeoJSON properties to get Cluster\n * @returns {FeatureCollection} Single Cluster filtered by GeoJSON Properties\n * @example\n * var geojson = turf.featureCollection([\n *     turf.point([0, 0], {'marker-symbol': 'circle'}),\n *     turf.point([2, 4], {'marker-symbol': 'star'}),\n *     turf.point([3, 6], {'marker-symbol': 'star'}),\n *     turf.point([5, 1], {'marker-symbol': 'square'}),\n *     turf.point([4, 2], {'marker-symbol': 'circle'})\n * ]);\n *\n * // Create a cluster using K-Means (adds `cluster` to GeoJSON properties)\n * var clustered = turf.clustersKmeans(geojson);\n *\n * // Retrieve first cluster (0)\n * var cluster = turf.getCluster(clustered, {cluster: 0});\n * //= cluster\n *\n * // Retrieve cluster based on custom properties\n * turf.getCluster(clustered, {'marker-symbol': 'circle'}).length;\n * //= 2\n * turf.getCluster(clustered, {'marker-symbol': 'square'}).length;\n * //= 1\n */\nfunction getCluster(geojson, filter) {\n    // Validation\n    if (!geojson)\n        throw new Error(\"geojson is required\");\n    if (geojson.type !== \"FeatureCollection\")\n        throw new Error(\"geojson must be a FeatureCollection\");\n    if (filter === undefined || filter === null)\n        throw new Error(\"filter is required\");\n    // Filter Features\n    var features = [];\n    meta_1.featureEach(geojson, function (feature) {\n        if (applyFilter(feature.properties, filter))\n            features.push(feature);\n    });\n    return helpers_1.featureCollection(features);\n}\nexports.getCluster = getCluster;\n/**\n * Callback for clusterEach\n *\n * @callback clusterEachCallback\n * @param {FeatureCollection} [cluster] The current cluster being processed.\n * @param {*} [clusterValue] Value used to create cluster being processed.\n * @param {number} [currentIndex] The index of the current element being processed in the array.Starts at index 0\n * @returns {void}\n */\n/**\n * clusterEach\n *\n * @name clusterEach\n * @param {FeatureCollection} geojson GeoJSON Features\n * @param {string|number} property GeoJSON property key/value used to create clusters\n * @param {Function} callback a method that takes (cluster, clusterValue, currentIndex)\n * @returns {void}\n * @example\n * var geojson = turf.featureCollection([\n *     turf.point([0, 0]),\n *     turf.point([2, 4]),\n *     turf.point([3, 6]),\n *     turf.point([5, 1]),\n *     turf.point([4, 2])\n * ]);\n *\n * // Create a cluster using K-Means (adds `cluster` to GeoJSON properties)\n * var clustered = turf.clustersKmeans(geojson);\n *\n * // Iterate over each cluster\n * turf.clusterEach(clustered, 'cluster', function (cluster, clusterValue, currentIndex) {\n *     //= cluster\n *     //= clusterValue\n *     //= currentIndex\n * })\n *\n * // Calculate the total number of clusters\n * var total = 0\n * turf.clusterEach(clustered, 'cluster', function () {\n *     total++;\n * });\n *\n * // Create an Array of all the values retrieved from the 'cluster' property\n * var values = []\n * turf.clusterEach(clustered, 'cluster', function (cluster, clusterValue) {\n *     values.push(clusterValue);\n * });\n */\nfunction clusterEach(geojson, property, callback) {\n    // Validation\n    if (!geojson)\n        throw new Error(\"geojson is required\");\n    if (geojson.type !== \"FeatureCollection\")\n        throw new Error(\"geojson must be a FeatureCollection\");\n    if (property === undefined || property === null)\n        throw new Error(\"property is required\");\n    // Create clusters based on property values\n    var bins = createBins(geojson, property);\n    var values = Object.keys(bins);\n    for (var index = 0; index < values.length; index++) {\n        var value = values[index];\n        var bin = bins[value];\n        var features = [];\n        for (var i = 0; i < bin.length; i++) {\n            features.push(geojson.features[bin[i]]);\n        }\n        callback(helpers_1.featureCollection(features), value, index);\n    }\n}\nexports.clusterEach = clusterEach;\n/**\n * Callback for clusterReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback clusterReduceCallback\n * @param {*} [previousValue] The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {FeatureCollection} [cluster] The current cluster being processed.\n * @param {*} [clusterValue] Value used to create cluster being processed.\n * @param {number} [currentIndex] The index of the current element being processed in the\n * array. Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n */\n/**\n * Reduce clusters in GeoJSON Features, similar to Array.reduce()\n *\n * @name clusterReduce\n * @param {FeatureCollection} geojson GeoJSON Features\n * @param {string|number} property GeoJSON property key/value used to create clusters\n * @param {Function} callback a method that takes (previousValue, cluster, clusterValue, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var geojson = turf.featureCollection([\n *     turf.point([0, 0]),\n *     turf.point([2, 4]),\n *     turf.point([3, 6]),\n *     turf.point([5, 1]),\n *     turf.point([4, 2])\n * ]);\n *\n * // Create a cluster using K-Means (adds `cluster` to GeoJSON properties)\n * var clustered = turf.clustersKmeans(geojson);\n *\n * // Iterate over each cluster and perform a calculation\n * var initialValue = 0\n * turf.clusterReduce(clustered, 'cluster', function (previousValue, cluster, clusterValue, currentIndex) {\n *     //=previousValue\n *     //=cluster\n *     //=clusterValue\n *     //=currentIndex\n *     return previousValue++;\n * }, initialValue);\n *\n * // Calculate the total number of clusters\n * var total = turf.clusterReduce(clustered, 'cluster', function (previousValue) {\n *     return previousValue++;\n * }, 0);\n *\n * // Create an Array of all the values retrieved from the 'cluster' property\n * var values = turf.clusterReduce(clustered, 'cluster', function (previousValue, cluster, clusterValue) {\n *     return previousValue.concat(clusterValue);\n * }, []);\n */\nfunction clusterReduce(geojson, property, callback, initialValue) {\n    var previousValue = initialValue;\n    clusterEach(geojson, property, function (cluster, clusterValue, currentIndex) {\n        if (currentIndex === 0 && initialValue === undefined)\n            previousValue = cluster;\n        else\n            previousValue = callback(previousValue, cluster, clusterValue, currentIndex);\n    });\n    return previousValue;\n}\nexports.clusterReduce = clusterReduce;\n/**\n * Create Bins\n *\n * @private\n * @param {FeatureCollection} geojson GeoJSON Features\n * @param {string|number} property Property values are used to create bins\n * @returns {Object} bins with Feature IDs\n * @example\n * var geojson = turf.featureCollection([\n *     turf.point([0, 0], {cluster: 0, foo: 'null'}),\n *     turf.point([2, 4], {cluster: 1, foo: 'bar'}),\n *     turf.point([5, 1], {0: 'foo'}),\n *     turf.point([3, 6], {cluster: 1}),\n * ]);\n * createBins(geojson, 'cluster');\n * //= { '0': [ 0 ], '1': [ 1, 3 ] }\n */\nfunction createBins(geojson, property) {\n    var bins = {};\n    meta_1.featureEach(geojson, function (feature, i) {\n        var properties = feature.properties || {};\n        if (Object.prototype.hasOwnProperty.call(properties, String(property))) {\n            var value = properties[property];\n            if (Object.prototype.hasOwnProperty.call(bins, value))\n                bins[value].push(i);\n            else\n                bins[value] = [i];\n        }\n    });\n    return bins;\n}\nexports.createBins = createBins;\n/**\n * Apply Filter\n *\n * @private\n * @param {*} properties Properties\n * @param {*} filter Filter\n * @returns {boolean} applied Filter to properties\n */\nfunction applyFilter(properties, filter) {\n    if (properties === undefined)\n        return false;\n    var filterType = typeof filter;\n    // String & Number\n    if (filterType === \"number\" || filterType === \"string\")\n        return Object.prototype.hasOwnProperty.call(properties, filter);\n    // Array\n    else if (Array.isArray(filter)) {\n        for (var i = 0; i < filter.length; i++) {\n            if (!applyFilter(properties, filter[i]))\n                return false;\n        }\n        return true;\n        // Object\n    }\n    else {\n        return propertiesContainsFilter(properties, filter);\n    }\n}\nexports.applyFilter = applyFilter;\n/**\n * Properties contains filter (does not apply deepEqual operations)\n *\n * @private\n * @param {*} properties Properties\n * @param {Object} filter Filter\n * @returns {boolean} does filter equal Properties\n * @example\n * propertiesContainsFilter({foo: 'bar', cluster: 0}, {cluster: 0})\n * //= true\n * propertiesContainsFilter({foo: 'bar', cluster: 0}, {cluster: 1})\n * //= false\n */\nfunction propertiesContainsFilter(properties, filter) {\n    var keys = Object.keys(filter);\n    for (var i = 0; i < keys.length; i++) {\n        var key = keys[i];\n        if (properties[key] !== filter[key])\n            return false;\n    }\n    return true;\n}\nexports.propertiesContainsFilter = propertiesContainsFilter;\n/**\n * Filter Properties\n *\n * @private\n * @param {*} properties Properties\n * @param {Array<string>} keys Used to filter Properties\n * @returns {*} filtered Properties\n * @example\n * filterProperties({foo: 'bar', cluster: 0}, ['cluster'])\n * //= {cluster: 0}\n */\nfunction filterProperties(properties, keys) {\n    if (!keys)\n        return {};\n    if (!keys.length)\n        return {};\n    var newProperties = {};\n    for (var i = 0; i < keys.length; i++) {\n        var key = keys[i];\n        if (Object.prototype.hasOwnProperty.call(properties, key))\n            newProperties[key] = properties[key];\n    }\n    return newProperties;\n}\nexports.filterProperties = filterProperties;\n","export var hasOwnProperty = Object.prototype.hasOwnProperty;\n","export default function(size, hash, equal, keyType, keyEmpty, valueType) {\n  if (arguments.length === 3) {\n    keyType = valueType = Array;\n    keyEmpty = null;\n  }\n\n  var keystore = new keyType(size = 1 << Math.max(4, Math.ceil(Math.log(size) / Math.LN2))),\n      valstore = new valueType(size),\n      mask = size - 1;\n\n  for (var i = 0; i < size; ++i) {\n    keystore[i] = keyEmpty;\n  }\n\n  function set(key, value) {\n    var index = hash(key) & mask,\n        matchKey = keystore[index],\n        collisions = 0;\n    while (matchKey != keyEmpty) {\n      if (equal(matchKey, key)) return valstore[index] = value;\n      if (++collisions >= size) throw new Error(\"full hashmap\");\n      matchKey = keystore[index = (index + 1) & mask];\n    }\n    keystore[index] = key;\n    valstore[index] = value;\n    return value;\n  }\n\n  function maybeSet(key, value) {\n    var index = hash(key) & mask,\n        matchKey = keystore[index],\n        collisions = 0;\n    while (matchKey != keyEmpty) {\n      if (equal(matchKey, key)) return valstore[index];\n      if (++collisions >= size) throw new Error(\"full hashmap\");\n      matchKey = keystore[index = (index + 1) & mask];\n    }\n    keystore[index] = key;\n    valstore[index] = value;\n    return value;\n  }\n\n  function get(key, missingValue) {\n    var index = hash(key) & mask,\n        matchKey = keystore[index],\n        collisions = 0;\n    while (matchKey != keyEmpty) {\n      if (equal(matchKey, key)) return valstore[index];\n      if (++collisions >= size) break;\n      matchKey = keystore[index = (index + 1) & mask];\n    }\n    return missingValue;\n  }\n\n  function keys() {\n    var keys = [];\n    for (var i = 0, n = keystore.length; i < n; ++i) {\n      var matchKey = keystore[i];\n      if (matchKey != keyEmpty) keys.push(matchKey);\n    }\n    return keys;\n  }\n\n  return {\n    set: set,\n    maybeSet: maybeSet, // set if unset\n    get: get,\n    keys: keys\n  };\n}\n","export default function(pointA, pointB) {\n  return pointA[0] === pointB[0] && pointA[1] === pointB[1];\n}\n","// TODO if quantized, use simpler Int32 hashing?\n\nvar buffer = new ArrayBuffer(16),\n    floats = new Float64Array(buffer),\n    uints = new Uint32Array(buffer);\n\nexport default function(point) {\n  floats[0] = point[0];\n  floats[1] = point[1];\n  var hash = uints[0] ^ uints[1];\n  hash = hash << 5 ^ hash >> 7 ^ uints[2] ^ uints[3];\n  return hash & 0x7fffffff;\n}\n","import hashset from \"./hash/hashset.js\";\nimport hashmap from \"./hash/hashmap.js\";\nimport equalPoint from \"./hash/point-equal.js\";\nimport hashPoint from \"./hash/point-hash.js\";\n\n// Given an extracted (pre-)topology, identifies all of the junctions. These are\n// the points at which arcs (lines or rings) will need to be cut so that each\n// arc is represented uniquely.\n//\n// A junction is a point where at least one arc deviates from another arc going\n// through the same point. For example, consider the point B. If there is a arc\n// through ABC and another arc through CBA, then B is not a junction because in\n// both cases the adjacent point pairs are {A,C}. However, if there is an\n// additional arc ABD, then {A,D} != {A,C}, and thus B becomes a junction.\n//\n// For a closed ring ABCA, the first point A’s adjacent points are the second\n// and last point {B,C}. For a line, the first and last point are always\n// considered junctions, even if the line is closed; this ensures that a closed\n// line is never rotated.\nexport default function(topology) {\n  var coordinates = topology.coordinates,\n      lines = topology.lines,\n      rings = topology.rings,\n      indexes = index(),\n      visitedByIndex = new Int32Array(coordinates.length),\n      leftByIndex = new Int32Array(coordinates.length),\n      rightByIndex = new Int32Array(coordinates.length),\n      junctionByIndex = new Int8Array(coordinates.length),\n      junctionCount = 0, // upper bound on number of junctions\n      i, n,\n      previousIndex,\n      currentIndex,\n      nextIndex;\n\n  for (i = 0, n = coordinates.length; i < n; ++i) {\n    visitedByIndex[i] = leftByIndex[i] = rightByIndex[i] = -1;\n  }\n\n  for (i = 0, n = lines.length; i < n; ++i) {\n    var line = lines[i],\n        lineStart = line[0],\n        lineEnd = line[1];\n    currentIndex = indexes[lineStart];\n    nextIndex = indexes[++lineStart];\n    ++junctionCount, junctionByIndex[currentIndex] = 1; // start\n    while (++lineStart <= lineEnd) {\n      sequence(i, previousIndex = currentIndex, currentIndex = nextIndex, nextIndex = indexes[lineStart]);\n    }\n    ++junctionCount, junctionByIndex[nextIndex] = 1; // end\n  }\n\n  for (i = 0, n = coordinates.length; i < n; ++i) {\n    visitedByIndex[i] = -1;\n  }\n\n  for (i = 0, n = rings.length; i < n; ++i) {\n    var ring = rings[i],\n        ringStart = ring[0] + 1,\n        ringEnd = ring[1];\n    previousIndex = indexes[ringEnd - 1];\n    currentIndex = indexes[ringStart - 1];\n    nextIndex = indexes[ringStart];\n    sequence(i, previousIndex, currentIndex, nextIndex);\n    while (++ringStart <= ringEnd) {\n      sequence(i, previousIndex = currentIndex, currentIndex = nextIndex, nextIndex = indexes[ringStart]);\n    }\n  }\n\n  function sequence(i, previousIndex, currentIndex, nextIndex) {\n    if (visitedByIndex[currentIndex] === i) return; // ignore self-intersection\n    visitedByIndex[currentIndex] = i;\n    var leftIndex = leftByIndex[currentIndex];\n    if (leftIndex >= 0) {\n      var rightIndex = rightByIndex[currentIndex];\n      if ((leftIndex !== previousIndex || rightIndex !== nextIndex)\n        && (leftIndex !== nextIndex || rightIndex !== previousIndex)) {\n        ++junctionCount, junctionByIndex[currentIndex] = 1;\n      }\n    } else {\n      leftByIndex[currentIndex] = previousIndex;\n      rightByIndex[currentIndex] = nextIndex;\n    }\n  }\n\n  function index() {\n    var indexByPoint = hashmap(coordinates.length * 1.4, hashIndex, equalIndex, Int32Array, -1, Int32Array),\n        indexes = new Int32Array(coordinates.length);\n\n    for (var i = 0, n = coordinates.length; i < n; ++i) {\n      indexes[i] = indexByPoint.maybeSet(i, i);\n    }\n\n    return indexes;\n  }\n\n  function hashIndex(i) {\n    return hashPoint(coordinates[i]);\n  }\n\n  function equalIndex(i, j) {\n    return equalPoint(coordinates[i], coordinates[j]);\n  }\n\n  visitedByIndex = leftByIndex = rightByIndex = null;\n\n  var junctionByPoint = hashset(junctionCount * 1.4, hashPoint, equalPoint), j;\n\n  // Convert back to a standard hashset by point for caller convenience.\n  for (i = 0, n = coordinates.length; i < n; ++i) {\n    if (junctionByIndex[j = indexes[i]]) {\n      junctionByPoint.add(coordinates[j]);\n    }\n  }\n\n  return junctionByPoint;\n}\n","export default function(size, hash, equal, type, empty) {\n  if (arguments.length === 3) {\n    type = Array;\n    empty = null;\n  }\n\n  var store = new type(size = 1 << Math.max(4, Math.ceil(Math.log(size) / Math.LN2))),\n      mask = size - 1;\n\n  for (var i = 0; i < size; ++i) {\n    store[i] = empty;\n  }\n\n  function add(value) {\n    var index = hash(value) & mask,\n        match = store[index],\n        collisions = 0;\n    while (match != empty) {\n      if (equal(match, value)) return true;\n      if (++collisions >= size) throw new Error(\"full hashset\");\n      match = store[index = (index + 1) & mask];\n    }\n    store[index] = value;\n    return true;\n  }\n\n  function has(value) {\n    var index = hash(value) & mask,\n        match = store[index],\n        collisions = 0;\n    while (match != empty) {\n      if (equal(match, value)) return true;\n      if (++collisions >= size) break;\n      match = store[index = (index + 1) & mask];\n    }\n    return false;\n  }\n\n  function values() {\n    var values = [];\n    for (var i = 0, n = store.length; i < n; ++i) {\n      var match = store[i];\n      if (match != empty) values.push(match);\n    }\n    return values;\n  }\n\n  return {\n    add: add,\n    has: has,\n    values: values\n  };\n}\n","import join from \"./join.js\";\n\n// Given an extracted (pre-)topology, cuts (or rotates) arcs so that all shared\n// point sequences are identified. The topology can then be subsequently deduped\n// to remove exact duplicate arcs.\nexport default function(topology) {\n  var junctions = join(topology),\n      coordinates = topology.coordinates,\n      lines = topology.lines,\n      rings = topology.rings,\n      next,\n      i, n;\n\n  for (i = 0, n = lines.length; i < n; ++i) {\n    var line = lines[i],\n        lineMid = line[0],\n        lineEnd = line[1];\n    while (++lineMid < lineEnd) {\n      if (junctions.has(coordinates[lineMid])) {\n        next = {0: lineMid, 1: line[1]};\n        line[1] = lineMid;\n        line = line.next = next;\n      }\n    }\n  }\n\n  for (i = 0, n = rings.length; i < n; ++i) {\n    var ring = rings[i],\n        ringStart = ring[0],\n        ringMid = ringStart,\n        ringEnd = ring[1],\n        ringFixed = junctions.has(coordinates[ringStart]);\n    while (++ringMid < ringEnd) {\n      if (junctions.has(coordinates[ringMid])) {\n        if (ringFixed) {\n          next = {0: ringMid, 1: ring[1]};\n          ring[1] = ringMid;\n          ring = ring.next = next;\n        } else { // For the first junction, we can rotate rather than cut.\n          rotateArray(coordinates, ringStart, ringEnd, ringEnd - ringMid);\n          coordinates[ringEnd] = coordinates[ringStart];\n          ringFixed = true;\n          ringMid = ringStart; // restart; we may have skipped junctions\n        }\n      }\n    }\n  }\n\n  return topology;\n}\n\nfunction rotateArray(array, start, end, offset) {\n  reverse(array, start, end);\n  reverse(array, start, start + offset);\n  reverse(array, start + offset, end);\n}\n\nfunction reverse(array, start, end) {\n  for (var mid = start + ((end-- - start) >> 1), t; start < mid; ++start, --end) {\n    t = array[start], array[start] = array[end], array[end] = t;\n  }\n}\n","// Given a hash of GeoJSON objects, returns a hash of GeoJSON geometry objects.\n// Any null input geometry objects are represented as {type: null} in the output.\n// Any feature.{id,properties,bbox} are transferred to the output geometry object.\n// Each output geometry object is a shallow copy of the input (e.g., properties, coordinates)!\nexport default function(inputs) {\n  var outputs = {}, key;\n  for (key in inputs) outputs[key] = geomifyObject(inputs[key]);\n  return outputs;\n}\n\nfunction geomifyObject(input) {\n  return input == null ? {type: null}\n      : (input.type === \"FeatureCollection\" ? geomifyFeatureCollection\n      : input.type === \"Feature\" ? geomifyFeature\n      : geomifyGeometry)(input);\n}\n\nfunction geomifyFeatureCollection(input) {\n  var output = {type: \"GeometryCollection\", geometries: input.features.map(geomifyFeature)};\n  if (input.bbox != null) output.bbox = input.bbox;\n  return output;\n}\n\nfunction geomifyFeature(input) {\n  var output = geomifyGeometry(input.geometry), key; // eslint-disable-line no-unused-vars\n  if (input.id != null) output.id = input.id;\n  if (input.bbox != null) output.bbox = input.bbox;\n  for (key in input.properties) { output.properties = input.properties; break; }\n  return output;\n}\n\nfunction geomifyGeometry(input) {\n  if (input == null) return {type: null};\n  var output = input.type === \"GeometryCollection\" ? {type: \"GeometryCollection\", geometries: input.geometries.map(geomifyGeometry)}\n      : input.type === \"Point\" || input.type === \"MultiPoint\" ? {type: input.type, coordinates: input.coordinates}\n      : {type: input.type, arcs: input.coordinates}; // TODO Check for unknown types?\n  if (input.bbox != null) output.bbox = input.bbox;\n  return output;\n}\n","import bounds from \"./bounds.js\";\nimport cut from \"./cut.js\";\nimport dedup from \"./dedup.js\";\nimport delta from \"./delta.js\";\nimport extract from \"./extract.js\";\nimport geometry from \"./geometry.js\";\nimport hashmap from \"./hash/hashmap.js\";\nimport {hasOwnProperty} from \"./object.js\";\nimport prequantize from \"./prequantize.js\";\n\n// Constructs the TopoJSON Topology for the specified hash of features.\n// Each object in the specified hash must be a GeoJSON object,\n// meaning FeatureCollection, a Feature or a geometry object.\nexport default function(objects, quantization) {\n  var bbox = bounds(objects = geometry(objects)),\n      transform = quantization > 0 && bbox && prequantize(objects, bbox, quantization),\n      topology = dedup(cut(extract(objects))),\n      coordinates = topology.coordinates,\n      indexByArc = hashmap(topology.arcs.length * 1.4, hashArc, equalArc);\n\n  objects = topology.objects; // for garbage collection\n  topology.bbox = bbox;\n  topology.arcs = topology.arcs.map(function(arc, i) {\n    indexByArc.set(arc, i);\n    return coordinates.slice(arc[0], arc[1] + 1);\n  });\n\n  delete topology.coordinates;\n  coordinates = null;\n\n  function indexGeometry(geometry) {\n    if (geometry && hasOwnProperty.call(indexGeometryType, geometry.type)) indexGeometryType[geometry.type](geometry);\n  }\n\n  var indexGeometryType = {\n    GeometryCollection: function(o) { o.geometries.forEach(indexGeometry); },\n    LineString: function(o) { o.arcs = indexArcs(o.arcs); },\n    MultiLineString: function(o) { o.arcs = o.arcs.map(indexArcs); },\n    Polygon: function(o) { o.arcs = o.arcs.map(indexArcs); },\n    MultiPolygon: function(o) { o.arcs = o.arcs.map(indexMultiArcs); }\n  };\n\n  function indexArcs(arc) {\n    var indexes = [];\n    do {\n      var index = indexByArc.get(arc);\n      indexes.push(arc[0] < arc[1] ? index : ~index);\n    } while (arc = arc.next);\n    return indexes;\n  }\n\n  function indexMultiArcs(arcs) {\n    return arcs.map(indexArcs);\n  }\n\n  for (var key in objects) {\n    indexGeometry(objects[key]);\n  }\n\n  if (transform) {\n    topology.transform = transform;\n    topology.arcs = delta(topology.arcs);\n  }\n\n  return topology;\n}\n\nfunction hashArc(arc) {\n  var i = arc[0], j = arc[1], t;\n  if (j < i) t = i, i = j, j = t;\n  return i + 31 * j;\n}\n\nfunction equalArc(arcA, arcB) {\n  var ia = arcA[0], ja = arcA[1],\n      ib = arcB[0], jb = arcB[1], t;\n  if (ja < ia) t = ia, ia = ja, ja = t;\n  if (jb < ib) t = ib, ib = jb, jb = t;\n  return ia === ib && ja === jb;\n}\n","import {hasOwnProperty} from \"./object.js\";\n\n// Computes the bounding box of the specified hash of GeoJSON objects.\nexport default function(objects) {\n  var x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  function boundGeometry(geometry) {\n    if (geometry != null && hasOwnProperty.call(boundGeometryType, geometry.type)) boundGeometryType[geometry.type](geometry);\n  }\n\n  var boundGeometryType = {\n    GeometryCollection: function(o) { o.geometries.forEach(boundGeometry); },\n    Point: function(o) { boundPoint(o.coordinates); },\n    MultiPoint: function(o) { o.coordinates.forEach(boundPoint); },\n    LineString: function(o) { boundLine(o.arcs); },\n    MultiLineString: function(o) { o.arcs.forEach(boundLine); },\n    Polygon: function(o) { o.arcs.forEach(boundLine); },\n    MultiPolygon: function(o) { o.arcs.forEach(boundMultiLine); }\n  };\n\n  function boundPoint(coordinates) {\n    var x = coordinates[0],\n        y = coordinates[1];\n    if (x < x0) x0 = x;\n    if (x > x1) x1 = x;\n    if (y < y0) y0 = y;\n    if (y > y1) y1 = y;\n  }\n\n  function boundLine(coordinates) {\n    coordinates.forEach(boundPoint);\n  }\n\n  function boundMultiLine(coordinates) {\n    coordinates.forEach(boundLine);\n  }\n\n  for (var key in objects) {\n    boundGeometry(objects[key]);\n  }\n\n  return x1 >= x0 && y1 >= y0 ? [x0, y0, x1, y1] : undefined;\n}\n","import {hasOwnProperty} from \"./object.js\";\n\nexport default function(objects, bbox, n) {\n  var x0 = bbox[0],\n      y0 = bbox[1],\n      x1 = bbox[2],\n      y1 = bbox[3],\n      kx = x1 - x0 ? (n - 1) / (x1 - x0) : 1,\n      ky = y1 - y0 ? (n - 1) / (y1 - y0) : 1;\n\n  function quantizePoint(input) {\n    return [Math.round((input[0] - x0) * kx), Math.round((input[1] - y0) * ky)];\n  }\n\n  function quantizePoints(input, m) {\n    var i = -1,\n        j = 0,\n        n = input.length,\n        output = new Array(n), // pessimistic\n        pi,\n        px,\n        py,\n        x,\n        y;\n\n    while (++i < n) {\n      pi = input[i];\n      x = Math.round((pi[0] - x0) * kx);\n      y = Math.round((pi[1] - y0) * ky);\n      if (x !== px || y !== py) output[j++] = [px = x, py = y]; // non-coincident points\n    }\n\n    output.length = j;\n    while (j < m) j = output.push([output[0][0], output[0][1]]);\n    return output;\n  }\n\n  function quantizeLine(input) {\n    return quantizePoints(input, 2);\n  }\n\n  function quantizeRing(input) {\n    return quantizePoints(input, 4);\n  }\n\n  function quantizePolygon(input) {\n    return input.map(quantizeRing);\n  }\n\n  function quantizeGeometry(o) {\n    if (o != null && hasOwnProperty.call(quantizeGeometryType, o.type)) quantizeGeometryType[o.type](o);\n  }\n\n  var quantizeGeometryType = {\n    GeometryCollection: function(o) { o.geometries.forEach(quantizeGeometry); },\n    Point: function(o) { o.coordinates = quantizePoint(o.coordinates); },\n    MultiPoint: function(o) { o.coordinates = o.coordinates.map(quantizePoint); },\n    LineString: function(o) { o.arcs = quantizeLine(o.arcs); },\n    MultiLineString: function(o) { o.arcs = o.arcs.map(quantizeLine); },\n    Polygon: function(o) { o.arcs = quantizePolygon(o.arcs); },\n    MultiPolygon: function(o) { o.arcs = o.arcs.map(quantizePolygon); }\n  };\n\n  for (var key in objects) {\n    quantizeGeometry(objects[key]);\n  }\n\n  return {\n    scale: [1 / kx, 1 / ky],\n    translate: [x0, y0]\n  };\n}\n","import hashmap from \"./hash/hashmap.js\";\nimport equalPoint from \"./hash/point-equal.js\";\nimport hashPoint from \"./hash/point-hash.js\";\n\n// Given a cut topology, combines duplicate arcs.\nexport default function(topology) {\n  var coordinates = topology.coordinates,\n      lines = topology.lines, line,\n      rings = topology.rings, ring,\n      arcCount = lines.length + rings.length,\n      i, n;\n\n  delete topology.lines;\n  delete topology.rings;\n\n  // Count the number of (non-unique) arcs to initialize the hashmap safely.\n  for (i = 0, n = lines.length; i < n; ++i) {\n    line = lines[i]; while (line = line.next) ++arcCount;\n  }\n  for (i = 0, n = rings.length; i < n; ++i) {\n    ring = rings[i]; while (ring = ring.next) ++arcCount;\n  }\n\n  var arcsByEnd = hashmap(arcCount * 2 * 1.4, hashPoint, equalPoint),\n      arcs = topology.arcs = [];\n\n  for (i = 0, n = lines.length; i < n; ++i) {\n    line = lines[i];\n    do {\n      dedupLine(line);\n    } while (line = line.next);\n  }\n\n  for (i = 0, n = rings.length; i < n; ++i) {\n    ring = rings[i];\n    if (ring.next) { // arc is no longer closed\n      do {\n        dedupLine(ring);\n      } while (ring = ring.next);\n    } else {\n      dedupRing(ring);\n    }\n  }\n\n  function dedupLine(arc) {\n    var startPoint,\n        endPoint,\n        startArcs, startArc,\n        endArcs, endArc,\n        i, n;\n\n    // Does this arc match an existing arc in order?\n    if (startArcs = arcsByEnd.get(startPoint = coordinates[arc[0]])) {\n      for (i = 0, n = startArcs.length; i < n; ++i) {\n        startArc = startArcs[i];\n        if (equalLine(startArc, arc)) {\n          arc[0] = startArc[0];\n          arc[1] = startArc[1];\n          return;\n        }\n      }\n    }\n\n    // Does this arc match an existing arc in reverse order?\n    if (endArcs = arcsByEnd.get(endPoint = coordinates[arc[1]])) {\n      for (i = 0, n = endArcs.length; i < n; ++i) {\n        endArc = endArcs[i];\n        if (reverseEqualLine(endArc, arc)) {\n          arc[1] = endArc[0];\n          arc[0] = endArc[1];\n          return;\n        }\n      }\n    }\n\n    if (startArcs) startArcs.push(arc); else arcsByEnd.set(startPoint, [arc]);\n    if (endArcs) endArcs.push(arc); else arcsByEnd.set(endPoint, [arc]);\n    arcs.push(arc);\n  }\n\n  function dedupRing(arc) {\n    var endPoint,\n        endArcs,\n        endArc,\n        i, n;\n\n    // Does this arc match an existing line in order, or reverse order?\n    // Rings are closed, so their start point and end point is the same.\n    if (endArcs = arcsByEnd.get(endPoint = coordinates[arc[0]])) {\n      for (i = 0, n = endArcs.length; i < n; ++i) {\n        endArc = endArcs[i];\n        if (equalRing(endArc, arc)) {\n          arc[0] = endArc[0];\n          arc[1] = endArc[1];\n          return;\n        }\n        if (reverseEqualRing(endArc, arc)) {\n          arc[0] = endArc[1];\n          arc[1] = endArc[0];\n          return;\n        }\n      }\n    }\n\n    // Otherwise, does this arc match an existing ring in order, or reverse order?\n    if (endArcs = arcsByEnd.get(endPoint = coordinates[arc[0] + findMinimumOffset(arc)])) {\n      for (i = 0, n = endArcs.length; i < n; ++i) {\n        endArc = endArcs[i];\n        if (equalRing(endArc, arc)) {\n          arc[0] = endArc[0];\n          arc[1] = endArc[1];\n          return;\n        }\n        if (reverseEqualRing(endArc, arc)) {\n          arc[0] = endArc[1];\n          arc[1] = endArc[0];\n          return;\n        }\n      }\n    }\n\n    if (endArcs) endArcs.push(arc); else arcsByEnd.set(endPoint, [arc]);\n    arcs.push(arc);\n  }\n\n  function equalLine(arcA, arcB) {\n    var ia = arcA[0], ib = arcB[0],\n        ja = arcA[1], jb = arcB[1];\n    if (ia - ja !== ib - jb) return false;\n    for (; ia <= ja; ++ia, ++ib) if (!equalPoint(coordinates[ia], coordinates[ib])) return false;\n    return true;\n  }\n\n  function reverseEqualLine(arcA, arcB) {\n    var ia = arcA[0], ib = arcB[0],\n        ja = arcA[1], jb = arcB[1];\n    if (ia - ja !== ib - jb) return false;\n    for (; ia <= ja; ++ia, --jb) if (!equalPoint(coordinates[ia], coordinates[jb])) return false;\n    return true;\n  }\n\n  function equalRing(arcA, arcB) {\n    var ia = arcA[0], ib = arcB[0],\n        ja = arcA[1], jb = arcB[1],\n        n = ja - ia;\n    if (n !== jb - ib) return false;\n    var ka = findMinimumOffset(arcA),\n        kb = findMinimumOffset(arcB);\n    for (var i = 0; i < n; ++i) {\n      if (!equalPoint(coordinates[ia + (i + ka) % n], coordinates[ib + (i + kb) % n])) return false;\n    }\n    return true;\n  }\n\n  function reverseEqualRing(arcA, arcB) {\n    var ia = arcA[0], ib = arcB[0],\n        ja = arcA[1], jb = arcB[1],\n        n = ja - ia;\n    if (n !== jb - ib) return false;\n    var ka = findMinimumOffset(arcA),\n        kb = n - findMinimumOffset(arcB);\n    for (var i = 0; i < n; ++i) {\n      if (!equalPoint(coordinates[ia + (i + ka) % n], coordinates[jb - (i + kb) % n])) return false;\n    }\n    return true;\n  }\n\n  // Rings are rotated to a consistent, but arbitrary, start point.\n  // This is necessary to detect when a ring and a rotated copy are dupes.\n  function findMinimumOffset(arc) {\n    var start = arc[0],\n        end = arc[1],\n        mid = start,\n        minimum = mid,\n        minimumPoint = coordinates[mid];\n    while (++mid < end) {\n      var point = coordinates[mid];\n      if (point[0] < minimumPoint[0] || point[0] === minimumPoint[0] && point[1] < minimumPoint[1]) {\n        minimum = mid;\n        minimumPoint = point;\n      }\n    }\n    return minimum - start;\n  }\n\n  return topology;\n}\n","import {hasOwnProperty} from \"./object.js\";\n\n// Extracts the lines and rings from the specified hash of geometry objects.\n//\n// Returns an object with three properties:\n//\n// * coordinates - shared buffer of [x, y] coordinates\n// * lines - lines extracted from the hash, of the form [start, end]\n// * rings - rings extracted from the hash, of the form [start, end]\n//\n// For each ring or line, start and end represent inclusive indexes into the\n// coordinates buffer. For rings (and closed lines), coordinates[start] equals\n// coordinates[end].\n//\n// For each line or polygon geometry in the input hash, including nested\n// geometries as in geometry collections, the `coordinates` array is replaced\n// with an equivalent `arcs` array that, for each line (for line string\n// geometries) or ring (for polygon geometries), points to one of the above\n// lines or rings.\nexport default function(objects) {\n  var index = -1,\n      lines = [],\n      rings = [],\n      coordinates = [];\n\n  function extractGeometry(geometry) {\n    if (geometry && hasOwnProperty.call(extractGeometryType, geometry.type)) extractGeometryType[geometry.type](geometry);\n  }\n\n  var extractGeometryType = {\n    GeometryCollection: function(o) { o.geometries.forEach(extractGeometry); },\n    LineString: function(o) { o.arcs = extractLine(o.arcs); },\n    MultiLineString: function(o) { o.arcs = o.arcs.map(extractLine); },\n    Polygon: function(o) { o.arcs = o.arcs.map(extractRing); },\n    MultiPolygon: function(o) { o.arcs = o.arcs.map(extractMultiRing); }\n  };\n\n  function extractLine(line) {\n    for (var i = 0, n = line.length; i < n; ++i) coordinates[++index] = line[i];\n    var arc = {0: index - n + 1, 1: index};\n    lines.push(arc);\n    return arc;\n  }\n\n  function extractRing(ring) {\n    for (var i = 0, n = ring.length; i < n; ++i) coordinates[++index] = ring[i];\n    var arc = {0: index - n + 1, 1: index};\n    rings.push(arc);\n    return arc;\n  }\n\n  function extractMultiRing(rings) {\n    return rings.map(extractRing);\n  }\n\n  for (var key in objects) {\n    extractGeometry(objects[key]);\n  }\n\n  return {\n    type: \"Topology\",\n    coordinates: coordinates,\n    lines: lines,\n    rings: rings,\n    objects: objects\n  };\n}\n","// Given an array of arcs in absolute (but already quantized!) coordinates,\n// converts to fixed-point delta encoding.\n// This is a destructive operation that modifies the given arcs!\nexport default function(arcs) {\n  var i = -1,\n      n = arcs.length;\n\n  while (++i < n) {\n    var arc = arcs[i],\n        j = 0,\n        k = 1,\n        m = arc.length,\n        point = arc[0],\n        x0 = point[0],\n        y0 = point[1],\n        x1,\n        y1;\n\n    while (++j < m) {\n      point = arc[j], x1 = point[0], y1 = point[1];\n      if (x1 !== x0 || y1 !== y0) arc[k++] = [x1 - x0, y1 - y0], x0 = x1, y0 = y1;\n    }\n\n    if (k === 1) arc[k++] = [0, 0]; // Each arc must be an array of two or more positions.\n\n    arc.length = k;\n  }\n\n  return arcs;\n}\n","'use strict';\n\nvar explode = require('@turf/explode');\nvar centroid = require('@turf/center');\nvar nearestPoint = require('@turf/nearest-point');\nvar booleanPointInPolygon = require('@turf/boolean-point-in-polygon');\nvar helpers = require('@turf/helpers');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar explode__default = /*#__PURE__*/_interopDefaultLegacy(explode);\nvar centroid__default = /*#__PURE__*/_interopDefaultLegacy(centroid);\nvar nearestPoint__default = /*#__PURE__*/_interopDefaultLegacy(nearestPoint);\nvar booleanPointInPolygon__default = /*#__PURE__*/_interopDefaultLegacy(booleanPointInPolygon);\n\n/**\n * Takes a Feature or FeatureCollection and returns a {@link Point} guaranteed to be on the surface of the feature.\n *\n * * Given a {@link Polygon}, the point will be in the area of the polygon\n * * Given a {@link LineString}, the point will be along the string\n * * Given a {@link Point}, the point will the same as the input\n *\n * @name pointOnFeature\n * @param {GeoJSON} geojson any Feature or FeatureCollection\n * @returns {Feature<Point>} a point on the surface of `input`\n * @example\n * var polygon = turf.polygon([[\n *   [116, -36],\n *   [131, -32],\n *   [146, -43],\n *   [155, -25],\n *   [133, -9],\n *   [111, -22],\n *   [116, -36]\n * ]]);\n *\n * var pointOnPolygon = turf.pointOnFeature(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, pointOnPolygon];\n */\nfunction pointOnFeature(geojson) {\n  // normalize\n  var fc = normalize(geojson);\n\n  // get centroid\n  var cent = centroid__default['default'](fc);\n\n  // check to see if centroid is on surface\n  var onSurface = false;\n  var i = 0;\n  while (!onSurface && i < fc.features.length) {\n    var geom = fc.features[i].geometry;\n    var x, y, x1, y1, x2, y2, k;\n    var onLine = false;\n    if (geom.type === \"Point\") {\n      if (\n        cent.geometry.coordinates[0] === geom.coordinates[0] &&\n        cent.geometry.coordinates[1] === geom.coordinates[1]\n      ) {\n        onSurface = true;\n      }\n    } else if (geom.type === \"MultiPoint\") {\n      var onMultiPoint = false;\n      k = 0;\n      while (!onMultiPoint && k < geom.coordinates.length) {\n        if (\n          cent.geometry.coordinates[0] === geom.coordinates[k][0] &&\n          cent.geometry.coordinates[1] === geom.coordinates[k][1]\n        ) {\n          onSurface = true;\n          onMultiPoint = true;\n        }\n        k++;\n      }\n    } else if (geom.type === \"LineString\") {\n      k = 0;\n      while (!onLine && k < geom.coordinates.length - 1) {\n        x = cent.geometry.coordinates[0];\n        y = cent.geometry.coordinates[1];\n        x1 = geom.coordinates[k][0];\n        y1 = geom.coordinates[k][1];\n        x2 = geom.coordinates[k + 1][0];\n        y2 = geom.coordinates[k + 1][1];\n        if (pointOnSegment(x, y, x1, y1, x2, y2)) {\n          onLine = true;\n          onSurface = true;\n        }\n        k++;\n      }\n    } else if (geom.type === \"MultiLineString\") {\n      var j = 0;\n      while (j < geom.coordinates.length) {\n        onLine = false;\n        k = 0;\n        var line = geom.coordinates[j];\n        while (!onLine && k < line.length - 1) {\n          x = cent.geometry.coordinates[0];\n          y = cent.geometry.coordinates[1];\n          x1 = line[k][0];\n          y1 = line[k][1];\n          x2 = line[k + 1][0];\n          y2 = line[k + 1][1];\n          if (pointOnSegment(x, y, x1, y1, x2, y2)) {\n            onLine = true;\n            onSurface = true;\n          }\n          k++;\n        }\n        j++;\n      }\n    } else if (geom.type === \"Polygon\" || geom.type === \"MultiPolygon\") {\n      if (booleanPointInPolygon__default['default'](cent, geom)) {\n        onSurface = true;\n      }\n    }\n    i++;\n  }\n  if (onSurface) {\n    return cent;\n  } else {\n    var vertices = helpers.featureCollection([]);\n    for (i = 0; i < fc.features.length; i++) {\n      vertices.features = vertices.features.concat(\n        explode__default['default'](fc.features[i]).features\n      );\n    }\n    // Remove distanceToPoint properties from nearestPoint()\n    return helpers.point(nearestPoint__default['default'](cent, vertices).geometry.coordinates);\n  }\n}\n\n/**\n * Normalizes any GeoJSON to a FeatureCollection\n *\n * @private\n * @name normalize\n * @param {GeoJSON} geojson Any GeoJSON\n * @returns {FeatureCollection} FeatureCollection\n */\nfunction normalize(geojson) {\n  if (geojson.type !== \"FeatureCollection\") {\n    if (geojson.type !== \"Feature\") {\n      return helpers.featureCollection([helpers.feature(geojson)]);\n    }\n    return helpers.featureCollection([geojson]);\n  }\n  return geojson;\n}\n\nfunction pointOnSegment(x, y, x1, y1, x2, y2) {\n  var ab = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n  var ap = Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n  var pb = Math.sqrt((x2 - x) * (x2 - x) + (y2 - y) * (y2 - y));\n  return ab === ap + pb;\n}\n\nmodule.exports = pointOnFeature;\nmodule.exports.default = pointOnFeature;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Takes a ring and return true or false whether or not the ring is clockwise or counter-clockwise.\n *\n * @name booleanClockwise\n * @param {Feature<LineString>|LineString|Array<Array<number>>} line to be evaluated\n * @returns {boolean} true/false\n * @example\n * var clockwiseRing = turf.lineString([[0,0],[1,1],[1,0],[0,0]]);\n * var counterClockwiseRing = turf.lineString([[0,0],[1,0],[1,1],[0,0]]);\n *\n * turf.booleanClockwise(clockwiseRing)\n * //=true\n * turf.booleanClockwise(counterClockwiseRing)\n * //=false\n */\nfunction booleanClockwise(line) {\n    var ring = invariant_1.getCoords(line);\n    var sum = 0;\n    var i = 1;\n    var prev;\n    var cur;\n    while (i < ring.length) {\n        prev = cur || ring[0];\n        cur = ring[i];\n        sum += (cur[0] - prev[0]) * (cur[1] + prev[1]);\n        i++;\n    }\n    return sum > 0;\n}\nexports.default = booleanClockwise;\n","'use strict';\n\nvar helpers = require('@turf/helpers');\nvar rhumbDestination = require('@turf/rhumb-destination');\nvar transformRotate = require('@turf/transform-rotate');\nvar invariant = require('@turf/invariant');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar rhumbDestination__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDestination);\nvar transformRotate__default = /*#__PURE__*/_interopDefaultLegacy(transformRotate);\n\n/**\n * Takes a {@link Point} and calculates the ellipse polygon given two semi-axes expressed in variable units and steps for precision.\n *\n * @param {Coord} center center point\n * @param {number} xSemiAxis semi (major) axis of the ellipse along the x-axis\n * @param {number} ySemiAxis semi (minor) axis of the ellipse along the y-axis\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.angle=0] angle of rotation in decimal degrees, positive clockwise\n * @param {Coord} [options.pivot='origin'] point around which the rotation will be performed\n * @param {number} [options.steps=64] number of steps\n * @param {string} [options.units='kilometers'] unit of measurement for axes\n * @param {Object} [options.properties={}] properties\n * @returns {Feature<Polygon>} ellipse polygon\n * @example\n * var center = [-75, 40];\n * var xSemiAxis = 5;\n * var ySemiAxis = 2;\n * var ellipse = turf.ellipse(center, xSemiAxis, ySemiAxis);\n *\n * //addToMap\n * var addToMap = [turf.point(center), ellipse]\n */\nfunction ellipse(center, xSemiAxis, ySemiAxis, options) {\n  // Optional params\n  options = options || {};\n  var steps = options.steps || 64;\n  var units = options.units || \"kilometers\";\n  var angle = options.angle || 0;\n  var pivot = options.pivot || center;\n  var properties = options.properties || center.properties || {};\n\n  // validation\n  if (!center) throw new Error(\"center is required\");\n  if (!xSemiAxis) throw new Error(\"xSemiAxis is required\");\n  if (!ySemiAxis) throw new Error(\"ySemiAxis is required\");\n  if (!helpers.isObject(options)) throw new Error(\"options must be an object\");\n  if (!helpers.isNumber(steps)) throw new Error(\"steps must be a number\");\n  if (!helpers.isNumber(angle)) throw new Error(\"angle must be a number\");\n\n  var centerCoords = invariant.getCoord(center);\n  if (units === \"degrees\") {\n    var angleRad = helpers.degreesToRadians(angle);\n  } else {\n    xSemiAxis = rhumbDestination__default['default'](center, xSemiAxis, 90, { units: units });\n    ySemiAxis = rhumbDestination__default['default'](center, ySemiAxis, 0, { units: units });\n    xSemiAxis = invariant.getCoord(xSemiAxis)[0] - centerCoords[0];\n    ySemiAxis = invariant.getCoord(ySemiAxis)[1] - centerCoords[1];\n  }\n\n  var coordinates = [];\n  for (var i = 0; i < steps; i += 1) {\n    var stepAngle = (i * -360) / steps;\n    var x =\n      (xSemiAxis * ySemiAxis) /\n      Math.sqrt(\n        Math.pow(ySemiAxis, 2) +\n          Math.pow(xSemiAxis, 2) * Math.pow(getTanDeg(stepAngle), 2)\n      );\n    var y =\n      (xSemiAxis * ySemiAxis) /\n      Math.sqrt(\n        Math.pow(xSemiAxis, 2) +\n          Math.pow(ySemiAxis, 2) / Math.pow(getTanDeg(stepAngle), 2)\n      );\n\n    if (stepAngle < -90 && stepAngle >= -270) x = -x;\n    if (stepAngle < -180 && stepAngle >= -360) y = -y;\n    if (units === \"degrees\") {\n      var newx = x * Math.cos(angleRad) + y * Math.sin(angleRad);\n      var newy = y * Math.cos(angleRad) - x * Math.sin(angleRad);\n      x = newx;\n      y = newy;\n    }\n\n    coordinates.push([x + centerCoords[0], y + centerCoords[1]]);\n  }\n  coordinates.push(coordinates[0]);\n  if (units === \"degrees\") {\n    return helpers.polygon([coordinates], properties);\n  } else {\n    return transformRotate__default['default'](helpers.polygon([coordinates], properties), angle, {\n      pivot: pivot,\n    });\n  }\n}\n\n/**\n * Get Tan Degrees\n *\n * @private\n * @param {number} deg Degrees\n * @returns {number} Tan Degrees\n */\nfunction getTanDeg(deg) {\n  var rad = (deg * Math.PI) / 180;\n  return Math.tan(rad);\n}\n\nmodule.exports = ellipse;\nmodule.exports.default = ellipse;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar centroid_1 = __importDefault(require(\"@turf/centroid\"));\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\n/**\n * calcualte the Minkowski p-norm distance between two features.\n * @param feature1 point feature\n * @param feature2 point feature\n * @param p p-norm 1=<p<=infinity 1: Manhattan distance 2: Euclidean distance\n */\nfunction pNormDistance(feature1, feature2, p) {\n    if (p === void 0) { p = 2; }\n    var coordinate1 = invariant_1.getCoord(feature1);\n    var coordinate2 = invariant_1.getCoord(feature2);\n    var xDiff = coordinate1[0] - coordinate2[0];\n    var yDiff = coordinate1[1] - coordinate2[1];\n    if (p === 1) {\n        return Math.abs(xDiff) + Math.abs(yDiff);\n    }\n    return Math.pow(Math.pow(xDiff, p) + Math.pow(yDiff, p), 1 / p);\n}\nexports.pNormDistance = pNormDistance;\n/**\n *\n *\n * @name distanceWeight\n * @param {FeatureCollection<any>} fc FeatureCollection.\n * @param {Object} [options] option object.\n * @param {number} [options.threshold=10000] If the distance between neighbor and\n * target features is greater than threshold, the weight of that neighbor is 0.\n * @param {number} [options.p=2] Minkowski p-norm distance parameter.\n * 1: Manhattan distance. 2: Euclidean distance. 1=<p<=infinity.\n * @param {boolean} [options.binary=false] If true, weight=1 if d <= threshold otherwise weight=0.\n *  If false, weight=Math.pow(d, alpha).\n * @param {number} [options.alpha=-1] distance decay parameter.\n * A big value means the weight decay quickly as distance increases.\n * @param {boolean} [options.standardization=false] row standardization.\n * @returns {Array<Array<number>>} distance weight matrix.\n * @example\n *\n * var bbox = [-65, 40, -63, 42];\n * var dataset = turf.randomPoint(100, { bbox: bbox });\n * var result = turf.distanceWeight(dataset);\n */\nfunction distanceWeight(fc, options) {\n    options = options || {};\n    var threshold = options.threshold || 10000;\n    var p = options.p || 2;\n    var binary = options.binary || false;\n    var alpha = options.alpha || -1;\n    var rowTransform = options.standardization || false;\n    var features = [];\n    meta_1.featureEach(fc, function (feature) {\n        features.push(centroid_1.default(feature));\n    });\n    // computing the distance between the features\n    var weights = [];\n    for (var i = 0; i < features.length; i++) {\n        weights[i] = [];\n    }\n    for (var i = 0; i < features.length; i++) {\n        for (var j = i; j < features.length; j++) {\n            if (i === j) {\n                weights[i][j] = 0;\n            }\n            var dis = pNormDistance(features[i], features[j], p);\n            weights[i][j] = dis;\n            weights[j][i] = dis;\n        }\n    }\n    // binary or distance decay\n    for (var i = 0; i < features.length; i++) {\n        for (var j = 0; j < features.length; j++) {\n            var dis = weights[i][j];\n            if (dis === 0) {\n                continue;\n            }\n            if (binary) {\n                if (dis <= threshold) {\n                    weights[i][j] = 1.0;\n                }\n                else {\n                    weights[i][j] = 0.0;\n                }\n            }\n            else {\n                if (dis <= threshold) {\n                    weights[i][j] = Math.pow(dis, alpha);\n                }\n                else {\n                    weights[i][j] = 0.0;\n                }\n            }\n        }\n    }\n    if (rowTransform) {\n        for (var i = 0; i < features.length; i++) {\n            var rowSum = weights[i].reduce(function (sum, currentVal) {\n                return sum + currentVal;\n            }, 0);\n            for (var j = 0; j < features.length; j++) {\n                weights[i][j] = weights[i][j] / rowSum;\n            }\n        }\n    }\n    return weights;\n}\nexports.default = distanceWeight;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bearing_1 = __importDefault(require(\"@turf/bearing\"));\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar destination_1 = __importDefault(require(\"@turf/destination\"));\nvar line_intersect_1 = __importDefault(require(\"@turf/line-intersect\"));\nvar meta_1 = require(\"@turf/meta\");\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Takes a {@link Point} and a {@link LineString} and calculates the closest Point on the (Multi)LineString.\n *\n * @name nearestPointOnLine\n * @param {Geometry|Feature<LineString|MultiLineString>} lines lines to snap to\n * @param {Geometry|Feature<Point>|number[]} pt point to snap from\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {Feature<Point>} closest point on the `line` to `point`. The properties object will contain three values: `index`: closest point was found on nth line part, `dist`: distance between pt and the closest point, `location`: distance along the line between start and the closest point.\n * @example\n * var line = turf.lineString([\n *     [-77.031669, 38.878605],\n *     [-77.029609, 38.881946],\n *     [-77.020339, 38.884084],\n *     [-77.025661, 38.885821],\n *     [-77.021884, 38.889563],\n *     [-77.019824, 38.892368]\n * ]);\n * var pt = turf.point([-77.037076, 38.884017]);\n *\n * var snapped = turf.nearestPointOnLine(line, pt, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [line, pt, snapped];\n * snapped.properties['marker-color'] = '#00f';\n */\nfunction nearestPointOnLine(lines, pt, options) {\n    if (options === void 0) { options = {}; }\n    var closestPt = helpers_1.point([Infinity, Infinity], {\n        dist: Infinity,\n    });\n    var length = 0.0;\n    meta_1.flattenEach(lines, function (line) {\n        var coords = invariant_1.getCoords(line);\n        for (var i = 0; i < coords.length - 1; i++) {\n            //start\n            var start = helpers_1.point(coords[i]);\n            start.properties.dist = distance_1.default(pt, start, options);\n            //stop\n            var stop_1 = helpers_1.point(coords[i + 1]);\n            stop_1.properties.dist = distance_1.default(pt, stop_1, options);\n            // sectionLength\n            var sectionLength = distance_1.default(start, stop_1, options);\n            //perpendicular\n            var heightDistance = Math.max(start.properties.dist, stop_1.properties.dist);\n            var direction = bearing_1.default(start, stop_1);\n            var perpendicularPt1 = destination_1.default(pt, heightDistance, direction + 90, options);\n            var perpendicularPt2 = destination_1.default(pt, heightDistance, direction - 90, options);\n            var intersect = line_intersect_1.default(helpers_1.lineString([\n                perpendicularPt1.geometry.coordinates,\n                perpendicularPt2.geometry.coordinates,\n            ]), helpers_1.lineString([start.geometry.coordinates, stop_1.geometry.coordinates]));\n            var intersectPt = null;\n            if (intersect.features.length > 0) {\n                intersectPt = intersect.features[0];\n                intersectPt.properties.dist = distance_1.default(pt, intersectPt, options);\n                intersectPt.properties.location =\n                    length + distance_1.default(start, intersectPt, options);\n            }\n            if (start.properties.dist < closestPt.properties.dist) {\n                closestPt = start;\n                closestPt.properties.index = i;\n                closestPt.properties.location = length;\n            }\n            if (stop_1.properties.dist < closestPt.properties.dist) {\n                closestPt = stop_1;\n                closestPt.properties.index = i + 1;\n                closestPt.properties.location = length + sectionLength;\n            }\n            if (intersectPt &&\n                intersectPt.properties.dist < closestPt.properties.dist) {\n                closestPt = intersectPt;\n                closestPt.properties.index = i;\n            }\n            // update length\n            length += sectionLength;\n        }\n    });\n    return closestPt;\n}\nexports.default = nearestPointOnLine;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\n// Note: change RADIUS => earthRadius\nvar RADIUS = 6378137;\n/**\n * Takes one or more features and returns their area in square meters.\n *\n * @name area\n * @param {GeoJSON} geojson input GeoJSON feature(s)\n * @returns {number} area in square meters\n * @example\n * var polygon = turf.polygon([[[125, -15], [113, -22], [154, -27], [144, -15], [125, -15]]]);\n *\n * var area = turf.area(polygon);\n *\n * //addToMap\n * var addToMap = [polygon]\n * polygon.properties.area = area\n */\nfunction area(geojson) {\n    return meta_1.geomReduce(geojson, function (value, geom) {\n        return value + calculateArea(geom);\n    }, 0);\n}\nexports.default = area;\n/**\n * Calculate Area\n *\n * @private\n * @param {Geometry} geom GeoJSON Geometries\n * @returns {number} area\n */\nfunction calculateArea(geom) {\n    var total = 0;\n    var i;\n    switch (geom.type) {\n        case \"Polygon\":\n            return polygonArea(geom.coordinates);\n        case \"MultiPolygon\":\n            for (i = 0; i < geom.coordinates.length; i++) {\n                total += polygonArea(geom.coordinates[i]);\n            }\n            return total;\n        case \"Point\":\n        case \"MultiPoint\":\n        case \"LineString\":\n        case \"MultiLineString\":\n            return 0;\n    }\n    return 0;\n}\nfunction polygonArea(coords) {\n    var total = 0;\n    if (coords && coords.length > 0) {\n        total += Math.abs(ringArea(coords[0]));\n        for (var i = 1; i < coords.length; i++) {\n            total -= Math.abs(ringArea(coords[i]));\n        }\n    }\n    return total;\n}\n/**\n * @private\n * Calculate the approximate area of the polygon were it projected onto the earth.\n * Note that this area will be positive if ring is oriented clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for Polygons on a Sphere\",\n * JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 https://trs.jpl.nasa.gov/handle/2014/40409\n *\n * @param {Array<Array<number>>} coords Ring Coordinates\n * @returns {number} The approximate signed geodesic area of the polygon in square meters.\n */\nfunction ringArea(coords) {\n    var p1;\n    var p2;\n    var p3;\n    var lowerIndex;\n    var middleIndex;\n    var upperIndex;\n    var i;\n    var total = 0;\n    var coordsLength = coords.length;\n    if (coordsLength > 2) {\n        for (i = 0; i < coordsLength; i++) {\n            if (i === coordsLength - 2) {\n                // i = N-2\n                lowerIndex = coordsLength - 2;\n                middleIndex = coordsLength - 1;\n                upperIndex = 0;\n            }\n            else if (i === coordsLength - 1) {\n                // i = N-1\n                lowerIndex = coordsLength - 1;\n                middleIndex = 0;\n                upperIndex = 1;\n            }\n            else {\n                // i = 0 to N-3\n                lowerIndex = i;\n                middleIndex = i + 1;\n                upperIndex = i + 2;\n            }\n            p1 = coords[lowerIndex];\n            p2 = coords[middleIndex];\n            p3 = coords[upperIndex];\n            total += (rad(p3[0]) - rad(p1[0])) * Math.sin(rad(p2[1]));\n        }\n        total = (total * RADIUS * RADIUS) / 2;\n    }\n    return total;\n}\nfunction rad(num) {\n    return (num * Math.PI) / 180;\n}\n","import React from 'react'\nimport { classNames } from 'adhocracy4'\n\nexport const IconSwitch = ({ buttons, viewModeStr, fullWidth, className }) => (\n  <div className={classNames('icon-switch', fullWidth && 'icon-switch--full-width', className)}>\n    {viewModeStr && <span className=\"text--strong\">{viewModeStr}</span>}\n    <div className=\"icon-switch__group\" role=\"group\">\n      {buttons.map((button) => (\n        <button\n          className={'button button--light' + (button.isActive ? ' button--fulltone' : '')}\n          onClick={button.handleClick}\n          aria-label={button.ariaLabel}\n          aria-pressed={button.isActive ? 'true' : 'false'}\n          key={button.id}\n        >\n          <span className={button.icon + ' mr-1'} aria-hidden=\"true\" />\n          {button.label}\n        </button>\n      ))}\n    </div>\n  </div>\n)\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n// To-Do => Improve Typescript GeoJSON handling\n/**\n * Removes redundant coordinates from any GeoJSON Geometry.\n *\n * @name cleanCoords\n * @param {Geometry|Feature} geojson Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated\n * @returns {Geometry|Feature} the cleaned input Feature/Geometry\n * @example\n * var line = turf.lineString([[0, 0], [0, 2], [0, 5], [0, 8], [0, 8], [0, 10]]);\n * var multiPoint = turf.multiPoint([[0, 0], [0, 0], [2, 2]]);\n *\n * turf.cleanCoords(line).geometry.coordinates;\n * //= [[0, 0], [0, 10]]\n *\n * turf.cleanCoords(multiPoint).geometry.coordinates;\n * //= [[0, 0], [2, 2]]\n */\nfunction cleanCoords(geojson, options) {\n    if (options === void 0) { options = {}; }\n    // Backwards compatible with v4.0\n    var mutate = typeof options === \"object\" ? options.mutate : options;\n    if (!geojson)\n        throw new Error(\"geojson is required\");\n    var type = invariant_1.getType(geojson);\n    // Store new \"clean\" points in this Array\n    var newCoords = [];\n    switch (type) {\n        case \"LineString\":\n            newCoords = cleanLine(geojson);\n            break;\n        case \"MultiLineString\":\n        case \"Polygon\":\n            invariant_1.getCoords(geojson).forEach(function (line) {\n                newCoords.push(cleanLine(line));\n            });\n            break;\n        case \"MultiPolygon\":\n            invariant_1.getCoords(geojson).forEach(function (polygons) {\n                var polyPoints = [];\n                polygons.forEach(function (ring) {\n                    polyPoints.push(cleanLine(ring));\n                });\n                newCoords.push(polyPoints);\n            });\n            break;\n        case \"Point\":\n            return geojson;\n        case \"MultiPoint\":\n            var existing = {};\n            invariant_1.getCoords(geojson).forEach(function (coord) {\n                var key = coord.join(\"-\");\n                if (!Object.prototype.hasOwnProperty.call(existing, key)) {\n                    newCoords.push(coord);\n                    existing[key] = true;\n                }\n            });\n            break;\n        default:\n            throw new Error(type + \" geometry not supported\");\n    }\n    // Support input mutation\n    if (geojson.coordinates) {\n        if (mutate === true) {\n            geojson.coordinates = newCoords;\n            return geojson;\n        }\n        return { type: type, coordinates: newCoords };\n    }\n    else {\n        if (mutate === true) {\n            geojson.geometry.coordinates = newCoords;\n            return geojson;\n        }\n        return helpers_1.feature({ type: type, coordinates: newCoords }, geojson.properties, {\n            bbox: geojson.bbox,\n            id: geojson.id,\n        });\n    }\n}\n/**\n * Clean Coords\n *\n * @private\n * @param {Array<number>|LineString} line Line\n * @returns {Array<number>} Cleaned coordinates\n */\nfunction cleanLine(line) {\n    var points = invariant_1.getCoords(line);\n    // handle \"clean\" segment\n    if (points.length === 2 && !equals(points[0], points[1]))\n        return points;\n    var newPoints = [];\n    var secondToLast = points.length - 1;\n    var newPointsLength = newPoints.length;\n    newPoints.push(points[0]);\n    for (var i = 1; i < secondToLast; i++) {\n        var prevAddedPoint = newPoints[newPoints.length - 1];\n        if (points[i][0] === prevAddedPoint[0] &&\n            points[i][1] === prevAddedPoint[1])\n            continue;\n        else {\n            newPoints.push(points[i]);\n            newPointsLength = newPoints.length;\n            if (newPointsLength > 2) {\n                if (isPointOnLineSegment(newPoints[newPointsLength - 3], newPoints[newPointsLength - 1], newPoints[newPointsLength - 2]))\n                    newPoints.splice(newPoints.length - 2, 1);\n            }\n        }\n    }\n    newPoints.push(points[points.length - 1]);\n    newPointsLength = newPoints.length;\n    if (equals(points[0], points[points.length - 1]) && newPointsLength < 4)\n        throw new Error(\"invalid polygon\");\n    if (isPointOnLineSegment(newPoints[newPointsLength - 3], newPoints[newPointsLength - 1], newPoints[newPointsLength - 2]))\n        newPoints.splice(newPoints.length - 2, 1);\n    return newPoints;\n}\n/**\n * Compares two points and returns if they are equals\n *\n * @private\n * @param {Position} pt1 point\n * @param {Position} pt2 point\n * @returns {boolean} true if they are equals\n */\nfunction equals(pt1, pt2) {\n    return pt1[0] === pt2[0] && pt1[1] === pt2[1];\n}\n/**\n * Returns if `point` is on the segment between `start` and `end`.\n * Borrowed from `@turf/boolean-point-on-line` to speed up the evaluation (instead of using the module as dependency)\n *\n * @private\n * @param {Position} start coord pair of start of line\n * @param {Position} end coord pair of end of line\n * @param {Position} point coord pair of point to check\n * @returns {boolean} true/false\n */\nfunction isPointOnLineSegment(start, end, point) {\n    var x = point[0], y = point[1];\n    var startX = start[0], startY = start[1];\n    var endX = end[0], endY = end[1];\n    var dxc = x - startX;\n    var dyc = y - startY;\n    var dxl = endX - startX;\n    var dyl = endY - startY;\n    var cross = dxc * dyl - dyc * dxl;\n    if (cross !== 0)\n        return false;\n    else if (Math.abs(dxl) >= Math.abs(dyl))\n        return dxl > 0 ? startX <= x && x <= endX : endX <= x && x <= startX;\n    else\n        return dyl > 0 ? startY <= y && y <= endY : endY <= y && y <= startY;\n}\nexports.default = cleanCoords;\n","'use strict';\n\nvar invariant = require('@turf/invariant');\n\nvar D2R = Math.PI / 180;\nvar R2D = 180 / Math.PI;\n\nvar Coord = function (lon, lat) {\n  this.lon = lon;\n  this.lat = lat;\n  this.x = D2R * lon;\n  this.y = D2R * lat;\n};\n\nCoord.prototype.view = function () {\n  return String(this.lon).slice(0, 4) + \",\" + String(this.lat).slice(0, 4);\n};\n\nCoord.prototype.antipode = function () {\n  var anti_lat = -1 * this.lat;\n  var anti_lon = this.lon < 0 ? 180 + this.lon : (180 - this.lon) * -1;\n  return new Coord(anti_lon, anti_lat);\n};\n\nvar LineString = function () {\n  this.coords = [];\n  this.length = 0;\n};\n\nLineString.prototype.move_to = function (coord) {\n  this.length++;\n  this.coords.push(coord);\n};\n\nvar Arc = function (properties) {\n  this.properties = properties || {};\n  this.geometries = [];\n};\n\nArc.prototype.json = function () {\n  if (this.geometries.length <= 0) {\n    return {\n      geometry: { type: \"LineString\", coordinates: null },\n      type: \"Feature\",\n      properties: this.properties,\n    };\n  } else if (this.geometries.length === 1) {\n    return {\n      geometry: { type: \"LineString\", coordinates: this.geometries[0].coords },\n      type: \"Feature\",\n      properties: this.properties,\n    };\n  } else {\n    var multiline = [];\n    for (var i = 0; i < this.geometries.length; i++) {\n      multiline.push(this.geometries[i].coords);\n    }\n    return {\n      geometry: { type: \"MultiLineString\", coordinates: multiline },\n      type: \"Feature\",\n      properties: this.properties,\n    };\n  }\n};\n\n// TODO - output proper multilinestring\nArc.prototype.wkt = function () {\n  var wkt_string = \"\";\n  var wkt = \"LINESTRING(\";\n  var collect = function (c) {\n    wkt += c[0] + \" \" + c[1] + \",\";\n  };\n  for (var i = 0; i < this.geometries.length; i++) {\n    if (this.geometries[i].coords.length === 0) {\n      return \"LINESTRING(empty)\";\n    } else {\n      var coords = this.geometries[i].coords;\n      coords.forEach(collect);\n      wkt_string += wkt.substring(0, wkt.length - 1) + \")\";\n    }\n  }\n  return wkt_string;\n};\n\n/*\n * http://en.wikipedia.org/wiki/Great-circle_distance\n *\n */\nvar GreatCircle = function (start, end, properties) {\n  if (!start || start.x === undefined || start.y === undefined) {\n    throw new Error(\n      \"GreatCircle constructor expects two args: start and end objects with x and y properties\"\n    );\n  }\n  if (!end || end.x === undefined || end.y === undefined) {\n    throw new Error(\n      \"GreatCircle constructor expects two args: start and end objects with x and y properties\"\n    );\n  }\n  this.start = new Coord(start.x, start.y);\n  this.end = new Coord(end.x, end.y);\n  this.properties = properties || {};\n\n  var w = this.start.x - this.end.x;\n  var h = this.start.y - this.end.y;\n  var z =\n    Math.pow(Math.sin(h / 2.0), 2) +\n    Math.cos(this.start.y) *\n      Math.cos(this.end.y) *\n      Math.pow(Math.sin(w / 2.0), 2);\n  this.g = 2.0 * Math.asin(Math.sqrt(z));\n\n  if (this.g === Math.PI) {\n    throw new Error(\n      \"it appears \" +\n        start.view() +\n        \" and \" +\n        end.view() +\n        \" are 'antipodal', e.g diametrically opposite, thus there is no single route but rather infinite\"\n    );\n  } else if (isNaN(this.g)) {\n    throw new Error(\n      \"could not calculate great circle between \" + start + \" and \" + end\n    );\n  }\n};\n\n/*\n * http://williams.best.vwh.net/avform.htm#Intermediate\n */\nGreatCircle.prototype.interpolate = function (f) {\n  var A = Math.sin((1 - f) * this.g) / Math.sin(this.g);\n  var B = Math.sin(f * this.g) / Math.sin(this.g);\n  var x =\n    A * Math.cos(this.start.y) * Math.cos(this.start.x) +\n    B * Math.cos(this.end.y) * Math.cos(this.end.x);\n  var y =\n    A * Math.cos(this.start.y) * Math.sin(this.start.x) +\n    B * Math.cos(this.end.y) * Math.sin(this.end.x);\n  var z = A * Math.sin(this.start.y) + B * Math.sin(this.end.y);\n  var lat = R2D * Math.atan2(z, Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)));\n  var lon = R2D * Math.atan2(y, x);\n  return [lon, lat];\n};\n\n/*\n * Generate points along the great circle\n */\nGreatCircle.prototype.Arc = function (npoints, options) {\n  var first_pass = [];\n  if (!npoints || npoints <= 2) {\n    first_pass.push([this.start.lon, this.start.lat]);\n    first_pass.push([this.end.lon, this.end.lat]);\n  } else {\n    var delta = 1.0 / (npoints - 1);\n    for (var i = 0; i < npoints; ++i) {\n      var step = delta * i;\n      var pair = this.interpolate(step);\n      first_pass.push(pair);\n    }\n  }\n  /* partial port of dateline handling from:\n      gdal/ogr/ogrgeometryfactory.cpp\n\n      TODO - does not handle all wrapping scenarios yet\n    */\n  var bHasBigDiff = false;\n  var dfMaxSmallDiffLong = 0;\n  // from http://www.gdal.org/ogr2ogr.html\n  // -datelineoffset:\n  // (starting with GDAL 1.10) offset from dateline in degrees (default long. = +/- 10deg, geometries within 170deg to -170deg will be splited)\n  var dfDateLineOffset = options && options.offset ? options.offset : 10;\n  var dfLeftBorderX = 180 - dfDateLineOffset;\n  var dfRightBorderX = -180 + dfDateLineOffset;\n  var dfDiffSpace = 360 - dfDateLineOffset;\n\n  // https://github.com/OSGeo/gdal/blob/7bfb9c452a59aac958bff0c8386b891edf8154ca/gdal/ogr/ogrgeometryfactory.cpp#L2342\n  for (var j = 1; j < first_pass.length; ++j) {\n    var dfPrevX = first_pass[j - 1][0];\n    var dfX = first_pass[j][0];\n    var dfDiffLong = Math.abs(dfX - dfPrevX);\n    if (\n      dfDiffLong > dfDiffSpace &&\n      ((dfX > dfLeftBorderX && dfPrevX < dfRightBorderX) ||\n        (dfPrevX > dfLeftBorderX && dfX < dfRightBorderX))\n    ) {\n      bHasBigDiff = true;\n    } else if (dfDiffLong > dfMaxSmallDiffLong) {\n      dfMaxSmallDiffLong = dfDiffLong;\n    }\n  }\n\n  var poMulti = [];\n  if (bHasBigDiff && dfMaxSmallDiffLong < dfDateLineOffset) {\n    var poNewLS = [];\n    poMulti.push(poNewLS);\n    for (var k = 0; k < first_pass.length; ++k) {\n      var dfX0 = parseFloat(first_pass[k][0]);\n      if (k > 0 && Math.abs(dfX0 - first_pass[k - 1][0]) > dfDiffSpace) {\n        var dfX1 = parseFloat(first_pass[k - 1][0]);\n        var dfY1 = parseFloat(first_pass[k - 1][1]);\n        var dfX2 = parseFloat(first_pass[k][0]);\n        var dfY2 = parseFloat(first_pass[k][1]);\n        if (\n          dfX1 > -180 &&\n          dfX1 < dfRightBorderX &&\n          dfX2 === 180 &&\n          k + 1 < first_pass.length &&\n          first_pass[k - 1][0] > -180 &&\n          first_pass[k - 1][0] < dfRightBorderX\n        ) {\n          poNewLS.push([-180, first_pass[k][1]]);\n          k++;\n          poNewLS.push([first_pass[k][0], first_pass[k][1]]);\n          continue;\n        } else if (\n          dfX1 > dfLeftBorderX &&\n          dfX1 < 180 &&\n          dfX2 === -180 &&\n          k + 1 < first_pass.length &&\n          first_pass[k - 1][0] > dfLeftBorderX &&\n          first_pass[k - 1][0] < 180\n        ) {\n          poNewLS.push([180, first_pass[k][1]]);\n          k++;\n          poNewLS.push([first_pass[k][0], first_pass[k][1]]);\n          continue;\n        }\n\n        if (dfX1 < dfRightBorderX && dfX2 > dfLeftBorderX) {\n          // swap dfX1, dfX2\n          var tmpX = dfX1;\n          dfX1 = dfX2;\n          dfX2 = tmpX;\n          // swap dfY1, dfY2\n          var tmpY = dfY1;\n          dfY1 = dfY2;\n          dfY2 = tmpY;\n        }\n        if (dfX1 > dfLeftBorderX && dfX2 < dfRightBorderX) {\n          dfX2 += 360;\n        }\n\n        if (dfX1 <= 180 && dfX2 >= 180 && dfX1 < dfX2) {\n          var dfRatio = (180 - dfX1) / (dfX2 - dfX1);\n          var dfY = dfRatio * dfY2 + (1 - dfRatio) * dfY1;\n          poNewLS.push([\n            first_pass[k - 1][0] > dfLeftBorderX ? 180 : -180,\n            dfY,\n          ]);\n          poNewLS = [];\n          poNewLS.push([\n            first_pass[k - 1][0] > dfLeftBorderX ? -180 : 180,\n            dfY,\n          ]);\n          poMulti.push(poNewLS);\n        } else {\n          poNewLS = [];\n          poMulti.push(poNewLS);\n        }\n        poNewLS.push([dfX0, first_pass[k][1]]);\n      } else {\n        poNewLS.push([first_pass[k][0], first_pass[k][1]]);\n      }\n    }\n  } else {\n    // add normally\n    var poNewLS0 = [];\n    poMulti.push(poNewLS0);\n    for (var l = 0; l < first_pass.length; ++l) {\n      poNewLS0.push([first_pass[l][0], first_pass[l][1]]);\n    }\n  }\n\n  var arc = new Arc(this.properties);\n  for (var m = 0; m < poMulti.length; ++m) {\n    var line = new LineString();\n    arc.geometries.push(line);\n    var points = poMulti[m];\n    for (var j0 = 0; j0 < points.length; ++j0) {\n      line.move_to(points[j0]);\n    }\n  }\n  return arc;\n};\n\n/**\n * Calculate great circles routes as {@link LineString} or {@link MultiLineString}.\n * If the `start` and `end` points span the antimeridian, the resulting feature will\n * be split into a `MultiLineString`.\n *\n * @name greatCircle\n * @param {Coord} start source point feature\n * @param {Coord} end destination point feature\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] line feature properties\n * @param {number} [options.npoints=100] number of points\n * @param {number} [options.offset=10] offset controls the likelyhood that lines will\n * be split which cross the dateline. The higher the number the more likely.\n * @returns {Feature<LineString | MultiLineString>} great circle line feature\n * @example\n * var start = turf.point([-122, 48]);\n * var end = turf.point([-77, 39]);\n *\n * var greatCircle = turf.greatCircle(start, end, {properties: {name: 'Seattle to DC'}});\n *\n * //addToMap\n * var addToMap = [start, end, greatCircle]\n */\nfunction greatCircle(start, end, options) {\n  // Optional parameters\n  options = options || {};\n  if (typeof options !== \"object\") throw new Error(\"options is invalid\");\n  var properties = options.properties;\n  var npoints = options.npoints;\n  var offset = options.offset;\n\n  start = invariant.getCoord(start);\n  end = invariant.getCoord(end);\n  properties = properties || {};\n  npoints = npoints || 100;\n  offset = offset || 10;\n\n  var generator = new GreatCircle(\n    { x: start[0], y: start[1] },\n    { x: end[0], y: end[1] },\n    properties\n  );\n\n  var line = generator.Arc(npoints, { offset: offset });\n\n  return line.json();\n}\n\nmodule.exports = greatCircle;\nmodule.exports.default = greatCircle;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar line_segment_1 = __importDefault(require(\"@turf/line-segment\"));\nvar meta_1 = require(\"@turf/meta\");\nvar geojson_rbush_1 = __importDefault(require(\"geojson-rbush\"));\n/**\n * Takes any LineString or Polygon GeoJSON and returns the intersecting point(s).\n *\n * @name lineIntersect\n * @param {GeoJSON} line1 any LineString or Polygon\n * @param {GeoJSON} line2 any LineString or Polygon\n * @returns {FeatureCollection<Point>} point(s) that intersect both\n * @example\n * var line1 = turf.lineString([[126, -11], [129, -21]]);\n * var line2 = turf.lineString([[123, -18], [131, -14]]);\n * var intersects = turf.lineIntersect(line1, line2);\n *\n * //addToMap\n * var addToMap = [line1, line2, intersects]\n */\nfunction lineIntersect(line1, line2) {\n    var unique = {};\n    var results = [];\n    // First, normalize geometries to features\n    // Then, handle simple 2-vertex segments\n    if (line1.type === \"LineString\") {\n        line1 = helpers_1.feature(line1);\n    }\n    if (line2.type === \"LineString\") {\n        line2 = helpers_1.feature(line2);\n    }\n    if (line1.type === \"Feature\" &&\n        line2.type === \"Feature\" &&\n        line1.geometry !== null &&\n        line2.geometry !== null &&\n        line1.geometry.type === \"LineString\" &&\n        line2.geometry.type === \"LineString\" &&\n        line1.geometry.coordinates.length === 2 &&\n        line2.geometry.coordinates.length === 2) {\n        var intersect = intersects(line1, line2);\n        if (intersect) {\n            results.push(intersect);\n        }\n        return helpers_1.featureCollection(results);\n    }\n    // Handles complex GeoJSON Geometries\n    var tree = geojson_rbush_1.default();\n    tree.load(line_segment_1.default(line2));\n    meta_1.featureEach(line_segment_1.default(line1), function (segment) {\n        meta_1.featureEach(tree.search(segment), function (match) {\n            var intersect = intersects(segment, match);\n            if (intersect) {\n                // prevent duplicate points https://github.com/Turfjs/turf/issues/688\n                var key = invariant_1.getCoords(intersect).join(\",\");\n                if (!unique[key]) {\n                    unique[key] = true;\n                    results.push(intersect);\n                }\n            }\n        });\n    });\n    return helpers_1.featureCollection(results);\n}\n/**\n * Find a point that intersects LineStrings with two coordinates each\n *\n * @private\n * @param {Feature<LineString>} line1 GeoJSON LineString (Must only contain 2 coordinates)\n * @param {Feature<LineString>} line2 GeoJSON LineString (Must only contain 2 coordinates)\n * @returns {Feature<Point>} intersecting GeoJSON Point\n */\nfunction intersects(line1, line2) {\n    var coords1 = invariant_1.getCoords(line1);\n    var coords2 = invariant_1.getCoords(line2);\n    if (coords1.length !== 2) {\n        throw new Error(\"<intersects> line1 must only contain 2 coordinates\");\n    }\n    if (coords2.length !== 2) {\n        throw new Error(\"<intersects> line2 must only contain 2 coordinates\");\n    }\n    var x1 = coords1[0][0];\n    var y1 = coords1[0][1];\n    var x2 = coords1[1][0];\n    var y2 = coords1[1][1];\n    var x3 = coords2[0][0];\n    var y3 = coords2[0][1];\n    var x4 = coords2[1][0];\n    var y4 = coords2[1][1];\n    var denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\n    var numeA = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3);\n    var numeB = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3);\n    if (denom === 0) {\n        if (numeA === 0 && numeB === 0) {\n            return null;\n        }\n        return null;\n    }\n    var uA = numeA / denom;\n    var uB = numeB / denom;\n    if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) {\n        var x = x1 + uA * (x2 - x1);\n        var y = y1 + uA * (y2 - y1);\n        return helpers_1.point([x, y]);\n    }\n    return null;\n}\nexports.default = lineIntersect;\n","'use strict';\n\nvar rbush = require('geojson-rbush');\nvar square = require('@turf/square');\nvar bbox = require('@turf/bbox');\nvar truncate = require('@turf/truncate');\nvar lineSegment = require('@turf/line-segment');\nvar lineIntersect = require('@turf/line-intersect');\nvar nearestPointOnLine = require('@turf/nearest-point-on-line');\nvar invariant = require('@turf/invariant');\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar rbush__default = /*#__PURE__*/_interopDefaultLegacy(rbush);\nvar square__default = /*#__PURE__*/_interopDefaultLegacy(square);\nvar bbox__default = /*#__PURE__*/_interopDefaultLegacy(bbox);\nvar truncate__default = /*#__PURE__*/_interopDefaultLegacy(truncate);\nvar lineSegment__default = /*#__PURE__*/_interopDefaultLegacy(lineSegment);\nvar lineIntersect__default = /*#__PURE__*/_interopDefaultLegacy(lineIntersect);\nvar nearestPointOnLine__default = /*#__PURE__*/_interopDefaultLegacy(nearestPointOnLine);\n\n/**\n * Split a LineString by another GeoJSON Feature.\n *\n * @name lineSplit\n * @param {Feature<LineString>} line LineString Feature to split\n * @param {Feature<any>} splitter Feature used to split line\n * @returns {FeatureCollection<LineString>} Split LineStrings\n * @example\n * var line = turf.lineString([[120, -25], [145, -25]]);\n * var splitter = turf.lineString([[130, -15], [130, -35]]);\n *\n * var split = turf.lineSplit(line, splitter);\n *\n * //addToMap\n * var addToMap = [line, splitter]\n */\nfunction lineSplit(line, splitter) {\n  if (!line) throw new Error(\"line is required\");\n  if (!splitter) throw new Error(\"splitter is required\");\n\n  var lineType = invariant.getType(line);\n  var splitterType = invariant.getType(splitter);\n\n  if (lineType !== \"LineString\") throw new Error(\"line must be LineString\");\n  if (splitterType === \"FeatureCollection\")\n    throw new Error(\"splitter cannot be a FeatureCollection\");\n  if (splitterType === \"GeometryCollection\")\n    throw new Error(\"splitter cannot be a GeometryCollection\");\n\n  // remove excessive decimals from splitter\n  // to avoid possible approximation issues in rbush\n  var truncatedSplitter = truncate__default['default'](splitter, { precision: 7 });\n\n  switch (splitterType) {\n    case \"Point\":\n      return splitLineWithPoint(line, truncatedSplitter);\n    case \"MultiPoint\":\n      return splitLineWithPoints(line, truncatedSplitter);\n    case \"LineString\":\n    case \"MultiLineString\":\n    case \"Polygon\":\n    case \"MultiPolygon\":\n      return splitLineWithPoints(line, lineIntersect__default['default'](line, truncatedSplitter));\n  }\n}\n\n/**\n * Split LineString with MultiPoint\n *\n * @private\n * @param {Feature<LineString>} line LineString\n * @param {FeatureCollection<Point>} splitter Point\n * @returns {FeatureCollection<LineString>} split LineStrings\n */\nfunction splitLineWithPoints(line, splitter) {\n  var results = [];\n  var tree = rbush__default['default']();\n\n  meta.flattenEach(splitter, function (point) {\n    // Add index/id to features (needed for filter)\n    results.forEach(function (feature, index) {\n      feature.id = index;\n    });\n    // First Point - doesn't need to handle any previous line results\n    if (!results.length) {\n      results = splitLineWithPoint(line, point).features;\n\n      // Add Square BBox to each feature for GeoJSON-RBush\n      results.forEach(function (feature) {\n        if (!feature.bbox) feature.bbox = square__default['default'](bbox__default['default'](feature));\n      });\n      tree.load(helpers.featureCollection(results));\n      // Split with remaining points - lines might needed to be split multiple times\n    } else {\n      // Find all lines that are within the splitter's bbox\n      var search = tree.search(point);\n\n      if (search.features.length) {\n        // RBush might return multiple lines - only process the closest line to splitter\n        var closestLine = findClosestFeature(point, search);\n\n        // Remove closest line from results since this will be split into two lines\n        // This removes any duplicates inside the results & index\n        results = results.filter(function (feature) {\n          return feature.id !== closestLine.id;\n        });\n        tree.remove(closestLine);\n\n        // Append the two newly split lines into the results\n        meta.featureEach(splitLineWithPoint(closestLine, point), function (line) {\n          results.push(line);\n          tree.insert(line);\n        });\n      }\n    }\n  });\n  return helpers.featureCollection(results);\n}\n\n/**\n * Split LineString with Point\n *\n * @private\n * @param {Feature<LineString>} line LineString\n * @param {Feature<Point>} splitter Point\n * @returns {FeatureCollection<LineString>} split LineStrings\n */\nfunction splitLineWithPoint(line, splitter) {\n  var results = [];\n\n  // handle endpoints\n  var startPoint = invariant.getCoords(line)[0];\n  var endPoint = invariant.getCoords(line)[line.geometry.coordinates.length - 1];\n  if (\n    pointsEquals(startPoint, invariant.getCoord(splitter)) ||\n    pointsEquals(endPoint, invariant.getCoord(splitter))\n  )\n    return helpers.featureCollection([line]);\n\n  // Create spatial index\n  var tree = rbush__default['default']();\n  var segments = lineSegment__default['default'](line);\n  tree.load(segments);\n\n  // Find all segments that are within bbox of splitter\n  var search = tree.search(splitter);\n\n  // Return itself if point is not within spatial index\n  if (!search.features.length) return helpers.featureCollection([line]);\n\n  // RBush might return multiple lines - only process the closest line to splitter\n  var closestSegment = findClosestFeature(splitter, search);\n\n  // Initial value is the first point of the first segments (beginning of line)\n  var initialValue = [startPoint];\n  var lastCoords = meta.featureReduce(\n    segments,\n    function (previous, current, index) {\n      var currentCoords = invariant.getCoords(current)[1];\n      var splitterCoords = invariant.getCoord(splitter);\n\n      // Location where segment intersects with line\n      if (index === closestSegment.id) {\n        previous.push(splitterCoords);\n        results.push(helpers.lineString(previous));\n        // Don't duplicate splitter coordinate (Issue #688)\n        if (pointsEquals(splitterCoords, currentCoords))\n          return [splitterCoords];\n        return [splitterCoords, currentCoords];\n\n        // Keep iterating over coords until finished or intersection is found\n      } else {\n        previous.push(currentCoords);\n        return previous;\n      }\n    },\n    initialValue\n  );\n  // Append last line to final split results\n  if (lastCoords.length > 1) {\n    results.push(helpers.lineString(lastCoords));\n  }\n  return helpers.featureCollection(results);\n}\n\n/**\n * Find Closest Feature\n *\n * @private\n * @param {Feature<Point>} point Feature must be closest to this point\n * @param {FeatureCollection<LineString>} lines Collection of Features\n * @returns {Feature<LineString>} closest LineString\n */\nfunction findClosestFeature(point, lines) {\n  if (!lines.features.length) throw new Error(\"lines must contain features\");\n  // Filter to one segment that is the closest to the line\n  if (lines.features.length === 1) return lines.features[0];\n\n  var closestFeature;\n  var closestDistance = Infinity;\n  meta.featureEach(lines, function (segment) {\n    var pt = nearestPointOnLine__default['default'](segment, point);\n    var dist = pt.properties.dist;\n    if (dist < closestDistance) {\n      closestFeature = segment;\n      closestDistance = dist;\n    }\n  });\n  return closestFeature;\n}\n\n/**\n * Compares two points and returns if they are equals\n *\n * @private\n * @param {Array<number>} pt1 point\n * @param {Array<number>} pt2 point\n * @returns {boolean} true if they are equals\n */\nfunction pointsEquals(pt1, pt2) {\n  return pt1[0] === pt2[0] && pt1[1] === pt2[1];\n}\n\nmodule.exports = lineSplit;\nmodule.exports.default = lineSplit;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar lineclip_1 = require(\"./lib/lineclip\");\n/**\n * Takes a {@link Feature} and a bbox and clips the feature to the bbox using\n * [lineclip](https://github.com/mapbox/lineclip).\n * May result in degenerate edges when clipping Polygons.\n *\n * @name bboxClip\n * @param {Feature<LineString|MultiLineString|Polygon|MultiPolygon>} feature feature to clip to the bbox\n * @param {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @returns {Feature<LineString|MultiLineString|Polygon|MultiPolygon>} clipped Feature\n * @example\n * var bbox = [0, 0, 10, 10];\n * var poly = turf.polygon([[[2, 2], [8, 4], [12, 8], [3, 7], [2, 2]]]);\n *\n * var clipped = turf.bboxClip(poly, bbox);\n *\n * //addToMap\n * var addToMap = [bbox, poly, clipped]\n */\nfunction bboxClip(feature, bbox) {\n    var geom = invariant_1.getGeom(feature);\n    var type = geom.type;\n    var properties = feature.type === \"Feature\" ? feature.properties : {};\n    var coords = geom.coordinates;\n    switch (type) {\n        case \"LineString\":\n        case \"MultiLineString\": {\n            var lines_1 = [];\n            if (type === \"LineString\") {\n                coords = [coords];\n            }\n            coords.forEach(function (line) {\n                lineclip_1.lineclip(line, bbox, lines_1);\n            });\n            if (lines_1.length === 1) {\n                return helpers_1.lineString(lines_1[0], properties);\n            }\n            return helpers_1.multiLineString(lines_1, properties);\n        }\n        case \"Polygon\":\n            return helpers_1.polygon(clipPolygon(coords, bbox), properties);\n        case \"MultiPolygon\":\n            return helpers_1.multiPolygon(coords.map(function (poly) {\n                return clipPolygon(poly, bbox);\n            }), properties);\n        default:\n            throw new Error(\"geometry \" + type + \" not supported\");\n    }\n}\nexports.default = bboxClip;\nfunction clipPolygon(rings, bbox) {\n    var outRings = [];\n    for (var _i = 0, rings_1 = rings; _i < rings_1.length; _i++) {\n        var ring = rings_1[_i];\n        var clipped = lineclip_1.polygonclip(ring, bbox);\n        if (clipped.length > 0) {\n            if (clipped[0][0] !== clipped[clipped.length - 1][0] ||\n                clipped[0][1] !== clipped[clipped.length - 1][1]) {\n                clipped.push(clipped[0]);\n            }\n            if (clipped.length >= 4) {\n                outRings.push(clipped);\n            }\n        }\n    }\n    return outRings;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Takes a {@link Point} and calculates the location of a destination point given a distance in\n * degrees, radians, miles, or kilometers; and bearing in degrees.\n * This uses the [Haversine formula](http://en.wikipedia.org/wiki/Haversine_formula) to account for global curvature.\n *\n * @name destination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the origin point\n * @param {number} bearing ranging from -180 to 180\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] Translate properties to Point\n * @returns {Feature<Point>} destination point\n * @example\n * var point = turf.point([-75.343, 39.984]);\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.destination(point, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [point, destination]\n * destination.properties['marker-color'] = '#f00';\n * point.properties['marker-color'] = '#0f0';\n */\nfunction destination(origin, distance, bearing, options) {\n    if (options === void 0) { options = {}; }\n    // Handle input\n    var coordinates1 = invariant_1.getCoord(origin);\n    var longitude1 = helpers_1.degreesToRadians(coordinates1[0]);\n    var latitude1 = helpers_1.degreesToRadians(coordinates1[1]);\n    var bearingRad = helpers_1.degreesToRadians(bearing);\n    var radians = helpers_1.lengthToRadians(distance, options.units);\n    // Main\n    var latitude2 = Math.asin(Math.sin(latitude1) * Math.cos(radians) +\n        Math.cos(latitude1) * Math.sin(radians) * Math.cos(bearingRad));\n    var longitude2 = longitude1 +\n        Math.atan2(Math.sin(bearingRad) * Math.sin(radians) * Math.cos(latitude1), Math.cos(radians) - Math.sin(latitude1) * Math.sin(latitude2));\n    var lng = helpers_1.radiansToDegrees(longitude2);\n    var lat = helpers_1.radiansToDegrees(latitude2);\n    return helpers_1.point([lng, lat], options.properties);\n}\nexports.default = destination;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bearing_1 = __importDefault(require(\"@turf/bearing\"));\nvar helpers_1 = require(\"@turf/helpers\");\nvar rhumb_bearing_1 = __importDefault(require(\"@turf/rhumb-bearing\"));\n/**\n * Finds the angle formed by two adjacent segments defined by 3 points. The result will be the (positive clockwise)\n * angle with origin on the `startPoint-midPoint` segment, or its explementary angle if required.\n *\n * @name angle\n * @param {Coord} startPoint Start Point Coordinates\n * @param {Coord} midPoint Mid Point Coordinates\n * @param {Coord} endPoint End Point Coordinates\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.explementary=false] Returns the explementary angle instead (360 - angle)\n * @param {boolean} [options.mercator=false] if calculations should be performed over Mercator or WGS84 projection\n * @returns {number} Angle between the provided points, or its explementary.\n * @example\n * turf.angle([5, 5], [5, 6], [3, 4]);\n * //=45\n */\nfunction angle(startPoint, midPoint, endPoint, options) {\n    if (options === void 0) { options = {}; }\n    // Optional Parameters\n    if (!helpers_1.isObject(options)) {\n        throw new Error(\"options is invalid\");\n    }\n    // Validation\n    if (!startPoint) {\n        throw new Error(\"startPoint is required\");\n    }\n    if (!midPoint) {\n        throw new Error(\"midPoint is required\");\n    }\n    if (!endPoint) {\n        throw new Error(\"endPoint is required\");\n    }\n    // Rename to shorter variables\n    var A = startPoint;\n    var O = midPoint;\n    var B = endPoint;\n    // Main\n    var azimuthAO = helpers_1.bearingToAzimuth(options.mercator !== true ? bearing_1.default(A, O) : rhumb_bearing_1.default(A, O));\n    var azimuthBO = helpers_1.bearingToAzimuth(options.mercator !== true ? bearing_1.default(B, O) : rhumb_bearing_1.default(B, O));\n    var angleAO = Math.abs(azimuthAO - azimuthBO);\n    // Explementary angle\n    if (options.explementary === true) {\n        return 360 - angleAO;\n    }\n    return angleAO;\n}\nexports.default = angle;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rectangle_grid_1 = __importDefault(require(\"@turf/rectangle-grid\"));\n/**\n * Creates a square grid from a bounding box.\n *\n * @name squareGrid\n * @param {Array<number>} bbox extent in [minX, minY, maxX, maxY] order\n * @param {number} cellSide of each cell, in units\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] used in calculating cellSide, can be degrees,\n * radians, miles, or kilometers\n * @param {Feature<Polygon|MultiPolygon>} [options.mask] if passed a Polygon or MultiPolygon,\n * the grid Points will be created only inside it\n * @param {Object} [options.properties={}] passed to each point of the grid\n * @returns {FeatureCollection<Polygon>} grid a grid of polygons\n * @example\n * var bbox = [-95, 30 ,-85, 40];\n * var cellSide = 50;\n * var options = {units: 'miles'};\n *\n * var squareGrid = turf.squareGrid(bbox, cellSide, options);\n *\n * //addToMap\n * var addToMap = [squareGrid]\n */\nfunction squareGrid(bbox, cellSide, options) {\n    if (options === void 0) { options = {}; }\n    return rectangle_grid_1.default(bbox, cellSide, cellSide, options);\n}\nexports.default = squareGrid;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Converts a {@link Polygon} to {@link LineString|(Multi)LineString} or {@link MultiPolygon} to a\n * {@link FeatureCollection} of {@link LineString|(Multi)LineString}.\n *\n * @name polygonToLine\n * @param {Feature<Polygon|MultiPolygon>} poly Feature to convert\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] translates GeoJSON properties to Feature\n * @returns {FeatureCollection|Feature<LineString|MultiLinestring>} converted (Multi)Polygon to (Multi)LineString\n * @example\n * var poly = turf.polygon([[[125, -30], [145, -30], [145, -20], [125, -20], [125, -30]]]);\n *\n * var line = turf.polygonToLine(poly);\n *\n * //addToMap\n * var addToMap = [line];\n */\nfunction default_1(poly, options) {\n    if (options === void 0) { options = {}; }\n    var geom = invariant_1.getGeom(poly);\n    if (!options.properties && poly.type === \"Feature\") {\n        options.properties = poly.properties;\n    }\n    switch (geom.type) {\n        case \"Polygon\":\n            return polygonToLine(geom, options);\n        case \"MultiPolygon\":\n            return multiPolygonToLine(geom, options);\n        default:\n            throw new Error(\"invalid poly\");\n    }\n}\nexports.default = default_1;\n/**\n * @private\n */\nfunction polygonToLine(poly, options) {\n    if (options === void 0) { options = {}; }\n    var geom = invariant_1.getGeom(poly);\n    var coords = geom.coordinates;\n    var properties = options.properties\n        ? options.properties\n        : poly.type === \"Feature\"\n            ? poly.properties\n            : {};\n    return coordsToLine(coords, properties);\n}\nexports.polygonToLine = polygonToLine;\n/**\n * @private\n */\nfunction multiPolygonToLine(multiPoly, options) {\n    if (options === void 0) { options = {}; }\n    var geom = invariant_1.getGeom(multiPoly);\n    var coords = geom.coordinates;\n    var properties = options.properties\n        ? options.properties\n        : multiPoly.type === \"Feature\"\n            ? multiPoly.properties\n            : {};\n    var lines = [];\n    coords.forEach(function (coord) {\n        lines.push(coordsToLine(coord, properties));\n    });\n    return helpers_1.featureCollection(lines);\n}\nexports.multiPolygonToLine = multiPolygonToLine;\n/**\n * @private\n */\nfunction coordsToLine(coords, properties) {\n    if (coords.length > 1) {\n        return helpers_1.multiLineString(coords, properties);\n    }\n    return helpers_1.lineString(coords[0], properties);\n}\nexports.coordsToLine = coordsToLine;\n","import React from 'react'\nimport django from 'django'\n\nconst loading = django.gettext('loading')\n\nexport default function Spinner () {\n  return (\n    <div className=\"align--center\">\n      <svg className=\"spinner-land\" viewBox=\"0 0 50 50\" aria-label={loading}>\n        <circle className=\"stroke\" />\n      </svg>\n    </div>\n  )\n}\n","\"use strict\";\n// Cohen-Sutherland line clipping algorithm, adapted to efficiently\n// handle polylines rather than just segments\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction lineclip(points, bbox, result) {\n    var len = points.length, codeA = bitCode(points[0], bbox), part = [], i, codeB, lastCode;\n    var a;\n    var b;\n    if (!result)\n        result = [];\n    for (i = 1; i < len; i++) {\n        a = points[i - 1];\n        b = points[i];\n        codeB = lastCode = bitCode(b, bbox);\n        while (true) {\n            if (!(codeA | codeB)) {\n                // accept\n                part.push(a);\n                if (codeB !== lastCode) {\n                    // segment went outside\n                    part.push(b);\n                    if (i < len - 1) {\n                        // start a new line\n                        result.push(part);\n                        part = [];\n                    }\n                }\n                else if (i === len - 1) {\n                    part.push(b);\n                }\n                break;\n            }\n            else if (codeA & codeB) {\n                // trivial reject\n                break;\n            }\n            else if (codeA) {\n                // a outside, intersect with clip edge\n                a = intersect(a, b, codeA, bbox);\n                codeA = bitCode(a, bbox);\n            }\n            else {\n                // b outside\n                b = intersect(a, b, codeB, bbox);\n                codeB = bitCode(b, bbox);\n            }\n        }\n        codeA = lastCode;\n    }\n    if (part.length)\n        result.push(part);\n    return result;\n}\nexports.lineclip = lineclip;\n// Sutherland-Hodgeman polygon clipping algorithm\nfunction polygonclip(points, bbox) {\n    var result, edge, prev, prevInside, i, p, inside;\n    // clip against each side of the clip rectangle\n    for (edge = 1; edge <= 8; edge *= 2) {\n        result = [];\n        prev = points[points.length - 1];\n        prevInside = !(bitCode(prev, bbox) & edge);\n        for (i = 0; i < points.length; i++) {\n            p = points[i];\n            inside = !(bitCode(p, bbox) & edge);\n            // if segment goes through the clip window, add an intersection\n            if (inside !== prevInside)\n                result.push(intersect(prev, p, edge, bbox));\n            if (inside)\n                result.push(p); // add a point if it's inside\n            prev = p;\n            prevInside = inside;\n        }\n        points = result;\n        if (!points.length)\n            break;\n    }\n    return result;\n}\nexports.polygonclip = polygonclip;\n// intersect a segment against one of the 4 lines that make up the bbox\nfunction intersect(a, b, edge, bbox) {\n    return edge & 8\n        ? [a[0] + ((b[0] - a[0]) * (bbox[3] - a[1])) / (b[1] - a[1]), bbox[3]] // top\n        : edge & 4\n            ? [a[0] + ((b[0] - a[0]) * (bbox[1] - a[1])) / (b[1] - a[1]), bbox[1]] // bottom\n            : edge & 2\n                ? [bbox[2], a[1] + ((b[1] - a[1]) * (bbox[2] - a[0])) / (b[0] - a[0])] // right\n                : edge & 1\n                    ? [bbox[0], a[1] + ((b[1] - a[1]) * (bbox[0] - a[0])) / (b[0] - a[0])] // left\n                    : null;\n}\n// bit code reflects the point position relative to the bbox:\n//         left  mid  right\n//    top  1001  1000  1010\n//    mid  0001  0000  0010\n// bottom  0101  0100  0110\nfunction bitCode(p, bbox) {\n    var code = 0;\n    if (p[0] < bbox[0])\n        code |= 1;\n    // left\n    else if (p[0] > bbox[2])\n        code |= 2; // right\n    if (p[1] < bbox[1])\n        code |= 4;\n    // bottom\n    else if (p[1] > bbox[3])\n        code |= 8; // top\n    return code;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar boolean_point_in_polygon_1 = __importDefault(require(\"@turf/boolean-point-in-polygon\"));\nvar helpers_1 = require(\"@turf/helpers\");\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign#Polyfill\nfunction mathSign(x) {\n    return ((x > 0) - (x < 0) || +x);\n}\n/**\n * Returns the direction of the point q relative to the vector p1 -> p2.\n *\n * Implementation of geos::algorithm::CGAlgorithm::orientationIndex()\n * (same as geos::algorithm::CGAlgorithm::computeOrientation())\n *\n * @param {number[]} p1 - the origin point of the vector\n * @param {number[]} p2 - the final point of the vector\n * @param {number[]} q - the point to compute the direction to\n *\n * @returns {number} - 1 if q is ccw (left) from p1->p2,\n *    -1 if q is cw (right) from p1->p2,\n *     0 if q is colinear with p1->p2\n */\nfunction orientationIndex(p1, p2, q) {\n    var dx1 = p2[0] - p1[0], dy1 = p2[1] - p1[1], dx2 = q[0] - p2[0], dy2 = q[1] - p2[1];\n    return mathSign(dx1 * dy2 - dx2 * dy1);\n}\nexports.orientationIndex = orientationIndex;\n/**\n * Checks if two envelopes are equal.\n *\n * The function assumes that the arguments are envelopes, i.e.: Rectangular polygon\n *\n * @param {Feature<Polygon>} env1 - Envelope\n * @param {Feature<Polygon>} env2 - Envelope\n * @returns {boolean} - True if the envelopes are equal\n */\nfunction envelopeIsEqual(env1, env2) {\n    var envX1 = env1.geometry.coordinates[0].map(function (c) { return c[0]; }), envY1 = env1.geometry.coordinates[0].map(function (c) { return c[1]; }), envX2 = env2.geometry.coordinates[0].map(function (c) { return c[0]; }), envY2 = env2.geometry.coordinates[0].map(function (c) { return c[1]; });\n    return (Math.max.apply(null, envX1) === Math.max.apply(null, envX2) &&\n        Math.max.apply(null, envY1) === Math.max.apply(null, envY2) &&\n        Math.min.apply(null, envX1) === Math.min.apply(null, envX2) &&\n        Math.min.apply(null, envY1) === Math.min.apply(null, envY2));\n}\nexports.envelopeIsEqual = envelopeIsEqual;\n/**\n * Check if a envelope is contained in other one.\n *\n * The function assumes that the arguments are envelopes, i.e.: Convex polygon\n * XXX: Envelopes are rectangular, checking if a point is inside a rectangule is something easy,\n * this could be further improved.\n *\n * @param {Feature<Polygon>} self - Envelope\n * @param {Feature<Polygon>} env - Envelope\n * @returns {boolean} - True if env is contained in self\n */\nfunction envelopeContains(self, env) {\n    return env.geometry.coordinates[0].every(function (c) {\n        return boolean_point_in_polygon_1.default(helpers_1.point(c), self);\n    });\n}\nexports.envelopeContains = envelopeContains;\n/**\n * Checks if two coordinates are equal.\n *\n * @param {number[]} coord1 - First coordinate\n * @param {number[]} coord2 - Second coordinate\n * @returns {boolean} - True if coordinates are equal\n */\nfunction coordinatesEqual(coord1, coord2) {\n    return coord1[0] === coord2[0] && coord1[1] === coord2[1];\n}\nexports.coordinatesEqual = coordinatesEqual;\n","'use strict';\n\nvar invariant = require('@turf/invariant');\nvar helpers = require('@turf/helpers');\nvar calcBbox = require('@turf/bbox');\nvar explode = require('@turf/explode');\nvar nearestPoint = require('@turf/nearest-point');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar calcBbox__default = /*#__PURE__*/_interopDefaultLegacy(calcBbox);\nvar explode__default = /*#__PURE__*/_interopDefaultLegacy(explode);\nvar nearestPoint__default = /*#__PURE__*/_interopDefaultLegacy(nearestPoint);\n\n/**\n * Finds the tangents of a {@link Polygon|(Multi)Polygon} from a {@link Point}.\n *\n * @name polygonTangents\n * @param {Coord} pt to calculate the tangent points from\n * @param {Feature<Polygon|MultiPolygon>} polygon to get tangents from\n * @returns {FeatureCollection<Point>} Feature Collection containing the two tangent points\n * @example\n * var polygon = turf.polygon([[[11, 0], [22, 4], [31, 0], [31, 11], [21, 15], [11, 11], [11, 0]]]);\n * var point = turf.point([61, 5]);\n *\n * var tangents = turf.polygonTangents(point, polygon)\n *\n * //addToMap\n * var addToMap = [tangents, point, polygon];\n */\nfunction polygonTangents(pt, polygon) {\n  var pointCoords = invariant.getCoords(pt);\n  var polyCoords = invariant.getCoords(polygon);\n\n  var rtan;\n  var ltan;\n  var enext;\n  var eprev;\n  var bbox = calcBbox__default['default'](polygon);\n  var nearestPtIndex = 0;\n  var nearest = null;\n\n  // If the point lies inside the polygon bbox then we need to be a bit trickier\n  // otherwise points lying inside reflex angles on concave polys can have issues\n  if (\n    pointCoords[0] > bbox[0] &&\n    pointCoords[0] < bbox[2] &&\n    pointCoords[1] > bbox[1] &&\n    pointCoords[1] < bbox[3]\n  ) {\n    nearest = nearestPoint__default['default'](pt, explode__default['default'](polygon));\n    nearestPtIndex = nearest.properties.featureIndex;\n  }\n  var type = invariant.getType(polygon);\n  switch (type) {\n    case \"Polygon\":\n      rtan = polyCoords[0][nearestPtIndex];\n      ltan = polyCoords[0][0];\n      if (nearest !== null) {\n        if (nearest.geometry.coordinates[1] < pointCoords[1])\n          ltan = polyCoords[0][nearestPtIndex];\n      }\n      eprev = isLeft(\n        polyCoords[0][0],\n        polyCoords[0][polyCoords[0].length - 1],\n        pointCoords\n      );\n      var out = processPolygon(\n        polyCoords[0],\n        pointCoords,\n        eprev,\n        enext,\n        rtan,\n        ltan);\n      rtan = out[0];\n      ltan = out[1];\n      break;\n    case \"MultiPolygon\":\n      var closestFeature = 0;\n      var closestVertex = 0;\n      var verticesCounted = 0;\n      for (var i = 0; i < polyCoords[0].length; i++) {\n        closestFeature = i;\n        var verticeFound = false;\n        for (var i2 = 0; i2 < polyCoords[0][i].length; i2++) {\n          closestVertex = i2;\n          if (verticesCounted === nearestPtIndex) {\n            verticeFound = true;\n            break;\n          }\n          verticesCounted++;\n        }\n        if (verticeFound) break;\n      }\n      rtan = polyCoords[0][closestFeature][closestVertex];\n      ltan = polyCoords[0][closestFeature][closestVertex];\n      eprev = isLeft(\n        polyCoords[0][0][0],\n        polyCoords[0][0][polyCoords[0][0].length - 1],\n        pointCoords\n      );\n      polyCoords.forEach(function (ring) {\n        var out = processPolygon(\n          ring[0],\n          pointCoords,\n          eprev,\n          enext,\n          rtan,\n          ltan);\n        rtan = out[0];\n        ltan = out[1];\n      });\n      break;\n  }\n  return helpers.featureCollection([helpers.point(rtan), helpers.point(ltan)]);\n}\n\nfunction processPolygon(polygonCoords, ptCoords, eprev, enext, rtan, ltan) {\n  for (var i = 0; i < polygonCoords.length; i++) {\n    var currentCoords = polygonCoords[i];\n    var nextCoordPair = polygonCoords[i + 1];\n    if (i === polygonCoords.length - 1) {\n      nextCoordPair = polygonCoords[0];\n    }\n    enext = isLeft(currentCoords, nextCoordPair, ptCoords);\n    if (eprev <= 0 && enext > 0) {\n      if (!isBelow(ptCoords, currentCoords, rtan)) {\n        rtan = currentCoords;\n      }\n    } else if (eprev > 0 && enext <= 0) {\n      if (!isAbove(ptCoords, currentCoords, ltan)) {\n        ltan = currentCoords;\n      }\n    }\n    eprev = enext;\n  }\n  return [rtan, ltan];\n}\n\nfunction isAbove(point1, point2, point3) {\n  return isLeft(point1, point2, point3) > 0;\n}\n\nfunction isBelow(point1, point2, point3) {\n  return isLeft(point1, point2, point3) < 0;\n}\n\nfunction isLeft(point1, point2, point3) {\n  return (\n    (point2[0] - point1[0]) * (point3[1] - point1[1]) -\n    (point3[0] - point1[0]) * (point2[1] - point1[1])\n  );\n}\n\nmodule.exports = polygonTangents;\nmodule.exports.default = polygonTangents;\n","'use strict';\n\nvar pointInPolygon = require('@turf/boolean-point-in-polygon');\nvar helpers = require('@turf/helpers');\nvar meta = require('@turf/meta');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar pointInPolygon__default = /*#__PURE__*/_interopDefaultLegacy(pointInPolygon);\n\n/**\n * Finds {@link Points} or {@link MultiPoint} coordinate positions that fall within {@link (Multi)Polygon(s)}.\n *\n * @name pointsWithinPolygon\n * @param {Feature|FeatureCollection<Point|MultiPoint>} points Point(s) or MultiPoint(s) as input search\n * @param {FeatureCollection|Geometry|Feature<Polygon|MultiPolygon>} polygons (Multi)Polygon(s) to check if points are within\n * @returns {FeatureCollection<Point|MultiPoint>} Point(s) or MultiPoint(s) with positions that land within at least one polygon.  The geometry type will match what was passsed in\n * @example\n * var points = turf.points([\n *     [-46.6318, -23.5523],\n *     [-46.6246, -23.5325],\n *     [-46.6062, -23.5513],\n *     [-46.663, -23.554],\n *     [-46.643, -23.557]\n * ]);\n *\n * var searchWithin = turf.polygon([[\n *     [-46.653,-23.543],\n *     [-46.634,-23.5346],\n *     [-46.613,-23.543],\n *     [-46.614,-23.559],\n *     [-46.631,-23.567],\n *     [-46.653,-23.560],\n *     [-46.653,-23.543]\n * ]]);\n *\n * var ptsWithin = turf.pointsWithinPolygon(points, searchWithin);\n *\n * //addToMap\n * var addToMap = [points, searchWithin, ptsWithin]\n * turf.featureEach(ptsWithin, function (currentFeature) {\n *   currentFeature.properties['marker-size'] = 'large';\n *   currentFeature.properties['marker-color'] = '#000';\n * });\n */\nfunction pointsWithinPolygon(points, polygons) {\n  var results = [];\n  meta.featureEach(points, function (point) {\n    var contained = false;\n    if (point.geometry.type === \"Point\") {\n      meta.geomEach(polygons, function (polygon) {\n        if (pointInPolygon__default['default'](point, polygon)) contained = true;\n      });\n      if (contained) {\n        results.push(point);\n      }\n    } else if (point.geometry.type === \"MultiPoint\") {\n      var pointsWithin = [];\n      meta.geomEach(polygons, function (polygon) {\n        meta.coordEach(point, function (pointCoord) {\n          if (pointInPolygon__default['default'](pointCoord, polygon)) {\n            contained = true;\n            pointsWithin.push(pointCoord);\n          }\n        });\n      });\n      if (contained) {\n        results.push(helpers.multiPoint(pointsWithin));\n      }\n    } else {\n      throw new Error(\"Input geometry must be a Point or MultiPoint\");\n    }\n  });\n  return helpers.featureCollection(results);\n}\n\nmodule.exports = pointsWithinPolygon;\nmodule.exports.default = pointsWithinPolygon;\n","'use strict';\n\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\n\n/**\n * Smooths a {@link Polygon} or {@link MultiPolygon}. Based on [Chaikin's algorithm](http://graphics.cs.ucdavis.edu/education/CAGDNotes/Chaikins-Algorithm/Chaikins-Algorithm.html).\n * Warning: may create degenerate polygons.\n *\n * @name polygonSmooth\n * @param {FeatureCollection|Feature<Polygon|MultiPolygon>} inputPolys (Multi)Polygon(s) to smooth\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.iterations=1] THe number of times to smooth the polygon. A higher value means a smoother polygon.\n * @returns {FeatureCollection<Polygon>} FeatureCollection containing the smoothed polygon/poylgons\n * @example\n * var polygon = turf.polygon([[[11, 0], [22, 4], [31, 0], [31, 11], [21, 15], [11, 11], [11, 0]]]);\n *\n * var smoothed = turf.polygonSmooth(polygon, {iterations: 3})\n *\n * //addToMap\n * var addToMap = [smoothed, polygon];\n */\nfunction polygonSmooth(inputPolys, options) {\n  var outPolys = [];\n  // Optional parameters\n  var iterations = options.iterations || 1;\n  if (!inputPolys) throw new Error(\"inputPolys is required\");\n\n  meta.geomEach(inputPolys, function (geom, geomIndex, properties) {\n    var outCoords;\n    var poly;\n    var tempOutput;\n\n    switch (geom.type) {\n      case \"Polygon\":\n        outCoords = [[]];\n        for (var i = 0; i < iterations; i++) {\n          tempOutput = [[]];\n          poly = geom;\n          if (i > 0) poly = helpers.polygon(outCoords).geometry;\n          processPolygon(poly, tempOutput);\n          outCoords = tempOutput.slice(0);\n        }\n        outPolys.push(helpers.polygon(outCoords, properties));\n        break;\n      case \"MultiPolygon\":\n        outCoords = [[[]]];\n        for (var y = 0; y < iterations; y++) {\n          tempOutput = [[[]]];\n          poly = geom;\n          if (y > 0) poly = helpers.multiPolygon(outCoords).geometry;\n          processMultiPolygon(poly, tempOutput);\n          outCoords = tempOutput.slice(0);\n        }\n        outPolys.push(helpers.multiPolygon(outCoords, properties));\n        break;\n      default:\n        throw new Error(\"geometry is invalid, must be Polygon or MultiPolygon\");\n    }\n  });\n  return helpers.featureCollection(outPolys);\n}\n\n/**\n * @param {poly} poly to process\n * @param {poly} tempOutput to place the results in\n * @private\n */\nfunction processPolygon(poly, tempOutput) {\n  var prevGeomIndex = 0;\n  var subtractCoordIndex = 0;\n\n  meta.coordEach(\n    poly,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (geometryIndex > prevGeomIndex) {\n        prevGeomIndex = geometryIndex;\n        subtractCoordIndex = coordIndex;\n        tempOutput.push([]);\n      }\n      var realCoordIndex = coordIndex - subtractCoordIndex;\n      var p1 = poly.coordinates[geometryIndex][realCoordIndex + 1];\n      var p0x = currentCoord[0];\n      var p0y = currentCoord[1];\n      var p1x = p1[0];\n      var p1y = p1[1];\n      tempOutput[geometryIndex].push([\n        0.75 * p0x + 0.25 * p1x,\n        0.75 * p0y + 0.25 * p1y,\n      ]);\n      tempOutput[geometryIndex].push([\n        0.25 * p0x + 0.75 * p1x,\n        0.25 * p0y + 0.75 * p1y,\n      ]);\n    },\n    true\n  );\n  tempOutput.forEach(function (ring) {\n    ring.push(ring[0]);\n  });\n}\n\n/**\n * @param {poly} poly to process\n * @param {poly} tempOutput to place the results in\n * @private\n */\nfunction processMultiPolygon(poly, tempOutput) {\n  var prevGeomIndex = 0;\n  var subtractCoordIndex = 0;\n  var prevMultiIndex = 0;\n\n  meta.coordEach(\n    poly,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (multiFeatureIndex > prevMultiIndex) {\n        prevMultiIndex = multiFeatureIndex;\n        subtractCoordIndex = coordIndex;\n        tempOutput.push([[]]);\n      }\n      if (geometryIndex > prevGeomIndex) {\n        prevGeomIndex = geometryIndex;\n        subtractCoordIndex = coordIndex;\n        tempOutput[multiFeatureIndex].push([]);\n      }\n      var realCoordIndex = coordIndex - subtractCoordIndex;\n      var p1 =\n        poly.coordinates[multiFeatureIndex][geometryIndex][realCoordIndex + 1];\n      var p0x = currentCoord[0];\n      var p0y = currentCoord[1];\n      var p1x = p1[0];\n      var p1y = p1[1];\n      tempOutput[multiFeatureIndex][geometryIndex].push([\n        0.75 * p0x + 0.25 * p1x,\n        0.75 * p0y + 0.25 * p1y,\n      ]);\n      tempOutput[multiFeatureIndex][geometryIndex].push([\n        0.25 * p0x + 0.75 * p1x,\n        0.25 * p0y + 0.75 * p1y,\n      ]);\n    },\n    true\n  );\n\n  tempOutput.forEach(function (poly) {\n    poly.forEach(function (ring) {\n      ring.push(ring[0]);\n    });\n  });\n}\n\nmodule.exports = polygonSmooth;\nmodule.exports.default = polygonSmooth;\n","'use strict';\n\nvar helpers = require('@turf/helpers');\nvar invariant = require('@turf/invariant');\nvar meta = require('@turf/meta');\nvar flatten = require('@turf/flatten');\nvar polygonClipping = require('polygon-clipping');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar flatten__default = /*#__PURE__*/_interopDefaultLegacy(flatten);\nvar polygonClipping__default = /*#__PURE__*/_interopDefaultLegacy(polygonClipping);\n\n/**\n * Dissolves a FeatureCollection of {@link polygon} features, filtered by an optional property name:value.\n * Note that {@link mulitpolygon} features within the collection are not supported\n *\n * @name dissolve\n * @param {FeatureCollection<Polygon>} featureCollection input feature collection to be dissolved\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.propertyName] features with the same `propertyName` value will be dissolved.\n * @returns {FeatureCollection<Polygon>} a FeatureCollection containing the dissolved polygons\n * @example\n * var features = turf.featureCollection([\n *   turf.polygon([[[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]], {combine: 'yes'}),\n *   turf.polygon([[[0, -1], [0, 0], [1, 0], [1, -1], [0,-1]]], {combine: 'yes'}),\n *   turf.polygon([[[1,-1],[1, 0], [2, 0], [2, -1], [1, -1]]], {combine: 'no'}),\n * ]);\n *\n * var dissolved = turf.dissolve(features, {propertyName: 'combine'});\n *\n * //addToMap\n * var addToMap = [features, dissolved]\n */\nfunction dissolve(fc, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var propertyName = options.propertyName;\n\n  // Input validation\n  invariant.collectionOf(fc, \"Polygon\", \"dissolve\");\n\n  // Main\n  var outFeatures = [];\n  if (!options.propertyName) {\n    return flatten__default['default'](\n      helpers.multiPolygon(\n        polygonClipping__default['default'].union.apply(\n          null,\n          fc.features.map(function (f) {\n            return f.geometry.coordinates;\n          })\n        )\n      )\n    );\n  } else {\n    var uniquePropertyVals = {};\n    meta.featureEach(fc, function (feature) {\n      if (\n        !Object.prototype.hasOwnProperty.call(\n          uniquePropertyVals,\n          feature.properties[propertyName]\n        )\n      ) {\n        uniquePropertyVals[feature.properties[propertyName]] = [];\n      }\n      uniquePropertyVals[feature.properties[propertyName]].push(feature);\n    });\n    var vals = Object.keys(uniquePropertyVals);\n    for (var i = 0; i < vals.length; i++) {\n      var mp = helpers.multiPolygon(\n        polygonClipping__default['default'].union.apply(\n          null,\n          uniquePropertyVals[vals[i]].map(function (f) {\n            return f.geometry.coordinates;\n          })\n        )\n      );\n      mp.properties[propertyName] = vals[i];\n      outFeatures.push(mp);\n    }\n  }\n\n  return flatten__default['default'](helpers.featureCollection(outFeatures));\n}\n\nmodule.exports = dissolve;\nmodule.exports.default = dissolve;\n","/* global django */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport ProjectsList from '../projects/ProjectsList'\nimport { ToggleSwitch } from '../contrib/ToggleSwitch'\nimport { IconSwitch } from '../contrib/IconSwitch'\nimport { alert as Alert, classNames } from 'adhocracy4'\nimport sortProjects from './sort-projects'\nimport ProjectsMap from './ProjectsMap'\nimport Spinner from '../contrib/Spinner'\nimport { ProjectsControlBar } from './ProjectsControlBar'\nimport { filterProjects } from './filter-projects'\nimport { getDefaultProjectState, getDefaultState } from './getDefaultState'\nimport { useSearchParams } from 'react-router-dom'\nimport { toSearchParams } from '../contrib/helpers'\n\nconst pageHeader = django.gettext('Kiezradar')\nconst showMapStr = django.gettext('Show map')\nconst nothingStr = django.gettext('Unfortunately, there are no projects matching your search. Please adjust the search criteria.')\nconst showMapAriaStr = django.gettext('show map')\nconst listStr = django.gettext('List')\nconst mapStr = django.gettext('Map')\nconst visibleProjectsListHeaderStr = django.gettext('In this area')\nconst cityWideProjectsListHeaderStr = django.gettext('Citywide & district-wide')\nconst showListStr = django.gettext('show list')\nconst viewModeStr = django.gettext('View mode')\nconst noVisibleResultsStr = django.gettext('There are no suitable projects in this area. Try moving the map or adjusting your filters.')\nconst getResultCountText = (count) => {\n  const foundProposalsText = django.ngettext(\n    '1 Proposal found.',\n    '%s Proposals found.',\n    count\n  )\n  return django.interpolate(foundProposalsText, [count])\n}\n\nconst ProjectsListMapBox = ({\n  topicChoices,\n  projectApiUrl,\n  plansApiUrl,\n  extprojectApiUrl,\n  privateprojectApiUrl,\n  searchProfilesApiUrl,\n  searchProfilesUrl,\n  attribution,\n  bounds,\n  baseUrl,\n  mapboxToken,\n  omtToken,\n  useVectorMap,\n  // for filtering:\n  districts,\n  districtPolygons,\n  polygon,\n  participationChoices,\n  projectStatus,\n  organisations,\n  kiezradars,\n  searchProfile,\n  searchProfilesCount,\n  isAuthenticated\n}) => {\n  const [searchParams, setSearchParams] = useSearchParams()\n  const [showMap, setShowMap] = useState(true)\n  const [loading, setLoading] = useState(true)\n  const [projectState, setProjectState] = useState(getDefaultProjectState(searchParams))\n  const [items, setItems] = useState([])\n  const [visibleProjects, setVisibleProjects] = useState([])\n  const fetchCache = useRef({})\n  const resultRef = useRef({})\n  const mapRef = useRef(null)\n  const [appliedFilters, setAppliedFilters] = useState(getDefaultState(searchParams, { districts, organisations, participationChoices, topicChoices, kiezradars }))\n  const [alert, setAlert] = useState(null)\n  const [error, setError] = useState(null)\n\n  const setParams = (params) => {\n    const searchParams = toSearchParams(params)\n    setSearchParams(searchParams, { replace: true })\n  }\n\n  const [syncTrigger, setSyncTrigger] = useState(0)\n\n  const fetchItems = useCallback(async () => {\n    setLoading(true)\n    const urls = [\n      plansApiUrl,\n      extprojectApiUrl,\n      privateprojectApiUrl,\n      ...projectState.map(state => projectApiUrl + '?status=' + state + 'Participation')\n    ]\n\n    try {\n      const results = await Promise.all(\n        urls.map(async (url) => {\n          try {\n            if (fetchCache.current[url]) {\n              return fetchCache.current[url]\n            }\n            const response = await fetch(url)\n            const data = await response.json()\n            fetchCache.current[url] = data\n            return data\n          } catch (e) {\n            console.error(e)\n            return []\n          }\n        })\n      )\n      const combined = results.flat()\n      setItems([...combined].sort(sortProjects))\n    } finally {\n      setLoading(false)\n    }\n  }, [plansApiUrl, extprojectApiUrl, privateprojectApiUrl, projectState, projectApiUrl])\n\n  useEffect(() => {\n    fetchItems()\n  }, [fetchItems])\n\n  useEffect(() => {\n    if (alert) {\n      window.scrollTo({\n        top: 0,\n        left: 0,\n        behavior: 'smooth'\n      })\n    }\n  }, [alert])\n\n  const filteredItems = useMemo(() => filterProjects(items, appliedFilters, kiezradars, topicChoices, projectState), [items, appliedFilters, kiezradars, projectState])\n\n  const projectsWithoutLocation = useMemo(() => {\n    return filteredItems.filter(project => !project.point)\n  }, [filteredItems])\n\n  // Use visible projects for status when map is shown\n  const hasVisibleProjects = visibleProjects.length > 0\n  const displayItems = showMap && hasVisibleProjects\n    ? visibleProjects\n    : showMap && !hasVisibleProjects && filteredItems.length > 0\n      ? [] // Show empty list when map has no visible projects but filters have results\n      : filteredItems\n\n  let status = nothingStr\n\n  if (loading) {\n    status = <Spinner />\n  } else if (showMap && !hasVisibleProjects && filteredItems.length > 0) {\n    status = noVisibleResultsStr\n  } else if (displayItems.length > 0) {\n    status = getResultCountText(displayItems.length)\n  }\n\n  const onClickSearchCompletedProjects = () => {\n    const newFilters = {\n      ...appliedFilters,\n      projectState: ['past']\n    }\n\n    setAppliedFilters(newFilters)\n    setProjectState(['past'])\n    setParams(newFilters)\n    // Tells child ProjectsControlBar to update\n    setSyncTrigger(prev => prev + 1)\n\n    setTimeout(() => {\n      resultRef?.current?.scrollIntoView({\n        behavior: 'smooth',\n        block: 'center'\n      })\n    }, 100)\n  }\n\n  return (\n    <div>\n      {(error || alert) && (\n        <div className=\"container\">\n          {error && (\n            <Alert\n              type=\"danger\"\n              title={error.title}\n              message={error.message}\n              onClick={() => setError(null)}\n            />\n          )}\n          {alert && (\n            <Alert\n              type=\"success\"\n              title={alert.title}\n              message={alert.message}\n              onClick={() => setAlert(null)}\n            />\n          )}\n        </div>\n      )}\n      <ProjectsControlBar\n        participationChoices={participationChoices}\n        organisations={organisations}\n        districts={districts}\n        topicChoices={topicChoices}\n        kiezradars={kiezradars}\n        appliedFilters={{ ...appliedFilters, projectState }}\n        hasContainer={!showMap}\n        onFiltered={({ projectState, ...filters }) => {\n          setProjectState(projectState)\n          setAppliedFilters(filters)\n          resultRef && resultRef.current.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' })\n        }}\n        onResetClick={() => {\n          setAppliedFilters(getDefaultState(null, { districts, organisations, participationChoices, topicChoices, kiezradars }))\n          setProjectState(['active', 'future'])\n        }}\n        onAlert={setAlert}\n        onError={setError}\n        searchProfile={searchProfile}\n        searchProfilesApiUrl={searchProfilesApiUrl}\n        searchProfilesUrl={searchProfilesUrl}\n        searchProfilesCount={searchProfilesCount}\n        setParams={setParams}\n        syncTrigger={syncTrigger}\n        isAuthenticated={isAuthenticated}\n        projectStatus={projectStatus}\n      />\n      <div className={classNames('projects-list', !showMap && 'container')}>\n        <h1 className=\"aural\" tabIndex=\"-1\">{pageHeader}</h1>\n        <div className={classNames('projects-list__list-meta', filteredItems.length === 0 && 'projects-list__list-meta--no-results')}>\n          <div\n            ref={resultRef}\n            role=\"status\"\n            className=\"projects-list__status\"\n          >\n            {status}\n          </div>\n          <ToggleSwitch\n            uniqueId=\"map-switch\"\n            className=\"projects-list__toggle-switch\"\n            toggleSwitch={() => {\n              setShowMap(!showMap)\n            }}\n            onSwitchStr={showMapStr}\n            checked={showMap}\n          />\n        </div>\n\n        <IconSwitch\n          fullWidth\n          className=\"projects-list__icon-switch\"\n          viewModeStr={viewModeStr}\n          buttons={[\n            {\n              ariaLabel: showListStr,\n              label: listStr,\n              icon: 'fa fa-list',\n              id: 'show_list',\n              isActive: !showMap,\n              handleClick: () => {\n                setShowMap(false)\n              }\n            },\n            {\n              ariaLabel: showMapAriaStr,\n              label: mapStr,\n              icon: 'fa fa-map',\n              id: 'show_map',\n              isActive: showMap,\n              handleClick: () => {\n                setShowMap(true)\n              }\n            }\n          ]}\n        />\n        <div\n          className={classNames('projects-list__wrapper', showMap && ' projects-list__wrapper--combined')}\n        >\n          <div id=\"list\" className=\"projects-list__list\">\n            {(showMap && hasVisibleProjects) && <h2>{visibleProjectsListHeaderStr}</h2>}\n            <ProjectsList\n              projects={displayItems}\n              visibleProjects={visibleProjects}\n              isHorizontal={showMap}\n              showMap={showMap}\n              topicChoices={topicChoices}\n              loading={loading}\n              showSearchCompletedProjectsButton={\n                !(projectState.length > 0 &&\n                projectState.includes('past')) &&\n                !(showMap && filteredItems.length > 0) // if this condition is true then the button is being shown in the 2nd list\n              }\n              searchCompletedProjects={() => onClickSearchCompletedProjects()}\n            />\n            <div />\n            {(showMap && filteredItems.length > 0) && (\n              <div>\n                {projectsWithoutLocation.length > 0 && <h2>{cityWideProjectsListHeaderStr}</h2>}\n                <ProjectsList\n                  projects={projectsWithoutLocation}\n                  visibleProjects={projectsWithoutLocation}\n                  isHorizontal={showMap}\n                  showMap={showMap}\n                  topicChoices={topicChoices}\n                  loading={loading}\n                  showSearchCompletedProjectsButton={\n                    !(projectState.length > 0 &&\n                    projectState.includes('past'))\n                  }\n                  searchCompletedProjects={() => onClickSearchCompletedProjects()}\n                />\n              </div>\n            )}\n          </div>\n          {showMap &&\n            <div id=\"map\" className=\"projects-list__map\">\n              <ProjectsMap\n                ref={mapRef}\n                attribution={attribution}\n                items={filteredItems}\n                bounds={bounds}\n                baseUrl={baseUrl}\n                mapboxToken={mapboxToken}\n                omtToken={omtToken}\n                useVectorMap={useVectorMap}\n                topicChoices={topicChoices}\n                districtPolygons={districtPolygons}\n                activeDistricts={appliedFilters.districts}\n                kiezradars={kiezradars}\n                activeKiezradars={appliedFilters.kiezradars}\n                onVisibleMarkersChange={setVisibleProjects}\n              />\n            </div>}\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport default ProjectsListMapBox\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar clone_1 = __importDefault(require(\"@turf/clone\"));\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\nvar turf_line_dissolve_1 = __importDefault(require(\"./turf-line-dissolve\"));\nvar turf_polygon_dissolve_1 = __importDefault(require(\"./turf-polygon-dissolve\"));\n/**\n * Transform function: attempts to dissolve geojson objects where possible\n * [GeoJSON] -> GeoJSON geometry\n *\n * @private\n * @param {FeatureCollection<LineString|MultiLineString|Polygon|MultiPolygon>} geojson Features to dissolved\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.mutate=false] Prevent input mutation\n * @returns {Feature<MultiLineString|MultiPolygon>} Dissolved Features\n */\nfunction dissolve(geojson, options) {\n    if (options === void 0) { options = {}; }\n    // Optional parameters\n    options = options || {};\n    if (!helpers_1.isObject(options)) {\n        throw new Error(\"options is invalid\");\n    }\n    var mutate = options.mutate;\n    // Validation\n    if (invariant_1.getType(geojson) !== \"FeatureCollection\") {\n        throw new Error(\"geojson must be a FeatureCollection\");\n    }\n    if (!geojson.features.length) {\n        throw new Error(\"geojson is empty\");\n    }\n    // Clone geojson to avoid side effects\n    // Topojson modifies in place, so we need to deep clone first\n    if (mutate === false || mutate === undefined) {\n        geojson = clone_1.default(geojson);\n    }\n    // Assert homogenity\n    var type = getHomogenousType(geojson);\n    if (!type) {\n        throw new Error(\"geojson must be homogenous\");\n    }\n    // Data => Typescript hack\n    var data = geojson;\n    switch (type) {\n        case \"LineString\":\n            return turf_line_dissolve_1.default(data, options);\n        case \"Polygon\":\n            return turf_polygon_dissolve_1.default(data, options);\n        default:\n            throw new Error(type + \" is not supported\");\n    }\n}\n/**\n * Checks if GeoJSON is Homogenous\n *\n * @private\n * @param {GeoJSON} geojson GeoJSON\n * @returns {string|null} Homogenous type or null if multiple types\n */\nfunction getHomogenousType(geojson) {\n    var types = {};\n    meta_1.flattenEach(geojson, function (feature) {\n        types[feature.geometry.type] = true;\n    });\n    var keys = Object.keys(types);\n    if (keys.length === 1) {\n        return keys[0];\n    }\n    return null;\n}\nexports.default = dissolve;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseCookie = parseCookie;\nexports.parse = parseCookie;\nexports.stringifyCookie = stringifyCookie;\nexports.stringifySetCookie = stringifySetCookie;\nexports.serialize = stringifySetCookie;\nexports.parseSetCookie = parseSetCookie;\nexports.stringifySetCookie = stringifySetCookie;\nexports.serialize = stringifySetCookie;\n/**\n * RegExp to match cookie-name in RFC 6265 sec 4.1.1\n * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2\n * which has been replaced by the token definition in RFC 7230 appendix B.\n *\n * cookie-name       = token\n * token             = 1*tchar\n * tchar             = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" /\n *                     \"*\" / \"+\" / \"-\" / \".\" / \"^\" / \"_\" /\n *                     \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\n *\n * Note: Allowing more characters - https://github.com/jshttp/cookie/issues/191\n * Allow same range as cookie value, except `=`, which delimits end of name.\n */\nconst cookieNameRegExp = /^[\\u0021-\\u003A\\u003C\\u003E-\\u007E]+$/;\n/**\n * RegExp to match cookie-value in RFC 6265 sec 4.1.1\n *\n * cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n * cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n *                     ; US-ASCII characters excluding CTLs,\n *                     ; whitespace DQUOTE, comma, semicolon,\n *                     ; and backslash\n *\n * Allowing more characters: https://github.com/jshttp/cookie/issues/191\n * Comma, backslash, and DQUOTE are not part of the parsing algorithm.\n */\nconst cookieValueRegExp = /^[\\u0021-\\u003A\\u003C-\\u007E]*$/;\n/**\n * RegExp to match domain-value in RFC 6265 sec 4.1.1\n *\n * domain-value      = <subdomain>\n *                     ; defined in [RFC1034], Section 3.5, as\n *                     ; enhanced by [RFC1123], Section 2.1\n * <subdomain>       = <label> | <subdomain> \".\" <label>\n * <label>           = <let-dig> [ [ <ldh-str> ] <let-dig> ]\n *                     Labels must be 63 characters or less.\n *                     'let-dig' not 'letter' in the first char, per RFC1123\n * <ldh-str>         = <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n * <let-dig-hyp>     = <let-dig> | \"-\"\n * <let-dig>         = <letter> | <digit>\n * <letter>          = any one of the 52 alphabetic characters A through Z in\n *                     upper case and a through z in lower case\n * <digit>           = any one of the ten digits 0 through 9\n *\n * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173\n *\n * > (Note that a leading %x2E (\".\"), if present, is ignored even though that\n * character is not permitted, but a trailing %x2E (\".\"), if present, will\n * cause the user agent to ignore the attribute.)\n */\nconst domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n/**\n * RegExp to match path-value in RFC 6265 sec 4.1.1\n *\n * path-value        = <any CHAR except CTLs or \";\">\n * CHAR              = %x01-7F\n *                     ; defined in RFC 5234 appendix B.1\n */\nconst pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\n/**\n * RegExp to match max-age-value in RFC 6265 sec 5.6.2\n */\nconst maxAgeRegExp = /^-?\\d+$/;\nconst __toString = Object.prototype.toString;\nconst NullObject = /* @__PURE__ */ (() => {\n    const C = function () { };\n    C.prototype = Object.create(null);\n    return C;\n})();\n/**\n * Parse a `Cookie` header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n */\nfunction parseCookie(str, options) {\n    const obj = new NullObject();\n    const len = str.length;\n    // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.\n    if (len < 2)\n        return obj;\n    const dec = options?.decode || decode;\n    let index = 0;\n    do {\n        const eqIdx = eqIndex(str, index, len);\n        if (eqIdx === -1)\n            break; // No more cookie pairs.\n        const endIdx = endIndex(str, index, len);\n        if (eqIdx > endIdx) {\n            // backtrack on prior semicolon\n            index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n            continue;\n        }\n        const key = valueSlice(str, index, eqIdx);\n        // only assign once\n        if (obj[key] === undefined) {\n            obj[key] = dec(valueSlice(str, eqIdx + 1, endIdx));\n        }\n        index = endIdx + 1;\n    } while (index < len);\n    return obj;\n}\n/**\n * Stringifies an object into an HTTP `Cookie` header.\n */\nfunction stringifyCookie(cookie, options) {\n    const enc = options?.encode || encodeURIComponent;\n    const cookieStrings = [];\n    for (const name of Object.keys(cookie)) {\n        const val = cookie[name];\n        if (val === undefined)\n            continue;\n        if (!cookieNameRegExp.test(name)) {\n            throw new TypeError(`cookie name is invalid: ${name}`);\n        }\n        const value = enc(val);\n        if (!cookieValueRegExp.test(value)) {\n            throw new TypeError(`cookie val is invalid: ${val}`);\n        }\n        cookieStrings.push(`${name}=${value}`);\n    }\n    return cookieStrings.join(\"; \");\n}\nfunction stringifySetCookie(_name, _val, _opts) {\n    const cookie = typeof _name === \"object\"\n        ? _name\n        : { ..._opts, name: _name, value: String(_val) };\n    const options = typeof _val === \"object\" ? _val : _opts;\n    const enc = options?.encode || encodeURIComponent;\n    if (!cookieNameRegExp.test(cookie.name)) {\n        throw new TypeError(`argument name is invalid: ${cookie.name}`);\n    }\n    const value = cookie.value ? enc(cookie.value) : \"\";\n    if (!cookieValueRegExp.test(value)) {\n        throw new TypeError(`argument val is invalid: ${cookie.value}`);\n    }\n    let str = cookie.name + \"=\" + value;\n    if (cookie.maxAge !== undefined) {\n        if (!Number.isInteger(cookie.maxAge)) {\n            throw new TypeError(`option maxAge is invalid: ${cookie.maxAge}`);\n        }\n        str += \"; Max-Age=\" + cookie.maxAge;\n    }\n    if (cookie.domain) {\n        if (!domainValueRegExp.test(cookie.domain)) {\n            throw new TypeError(`option domain is invalid: ${cookie.domain}`);\n        }\n        str += \"; Domain=\" + cookie.domain;\n    }\n    if (cookie.path) {\n        if (!pathValueRegExp.test(cookie.path)) {\n            throw new TypeError(`option path is invalid: ${cookie.path}`);\n        }\n        str += \"; Path=\" + cookie.path;\n    }\n    if (cookie.expires) {\n        if (!isDate(cookie.expires) || !Number.isFinite(cookie.expires.valueOf())) {\n            throw new TypeError(`option expires is invalid: ${cookie.expires}`);\n        }\n        str += \"; Expires=\" + cookie.expires.toUTCString();\n    }\n    if (cookie.httpOnly) {\n        str += \"; HttpOnly\";\n    }\n    if (cookie.secure) {\n        str += \"; Secure\";\n    }\n    if (cookie.partitioned) {\n        str += \"; Partitioned\";\n    }\n    if (cookie.priority) {\n        const priority = typeof cookie.priority === \"string\"\n            ? cookie.priority.toLowerCase()\n            : undefined;\n        switch (priority) {\n            case \"low\":\n                str += \"; Priority=Low\";\n                break;\n            case \"medium\":\n                str += \"; Priority=Medium\";\n                break;\n            case \"high\":\n                str += \"; Priority=High\";\n                break;\n            default:\n                throw new TypeError(`option priority is invalid: ${cookie.priority}`);\n        }\n    }\n    if (cookie.sameSite) {\n        const sameSite = typeof cookie.sameSite === \"string\"\n            ? cookie.sameSite.toLowerCase()\n            : cookie.sameSite;\n        switch (sameSite) {\n            case true:\n            case \"strict\":\n                str += \"; SameSite=Strict\";\n                break;\n            case \"lax\":\n                str += \"; SameSite=Lax\";\n                break;\n            case \"none\":\n                str += \"; SameSite=None\";\n                break;\n            default:\n                throw new TypeError(`option sameSite is invalid: ${cookie.sameSite}`);\n        }\n    }\n    return str;\n}\n/**\n * Deserialize a `Set-Cookie` header into an object.\n *\n * deserialize('foo=bar; httpOnly')\n *   => { name: 'foo', value: 'bar', httpOnly: true }\n */\nfunction parseSetCookie(str, options) {\n    const dec = options?.decode || decode;\n    const len = str.length;\n    const endIdx = endIndex(str, 0, len);\n    const eqIdx = eqIndex(str, 0, endIdx);\n    const setCookie = eqIdx === -1\n        ? { name: \"\", value: dec(valueSlice(str, 0, endIdx)) }\n        : {\n            name: valueSlice(str, 0, eqIdx),\n            value: dec(valueSlice(str, eqIdx + 1, endIdx)),\n        };\n    let index = endIdx + 1;\n    while (index < len) {\n        const endIdx = endIndex(str, index, len);\n        const eqIdx = eqIndex(str, index, endIdx);\n        const attr = eqIdx === -1\n            ? valueSlice(str, index, endIdx)\n            : valueSlice(str, index, eqIdx);\n        const val = eqIdx === -1 ? undefined : valueSlice(str, eqIdx + 1, endIdx);\n        switch (attr.toLowerCase()) {\n            case \"httponly\":\n                setCookie.httpOnly = true;\n                break;\n            case \"secure\":\n                setCookie.secure = true;\n                break;\n            case \"partitioned\":\n                setCookie.partitioned = true;\n                break;\n            case \"domain\":\n                setCookie.domain = val;\n                break;\n            case \"path\":\n                setCookie.path = val;\n                break;\n            case \"max-age\":\n                if (val && maxAgeRegExp.test(val))\n                    setCookie.maxAge = Number(val);\n                break;\n            case \"expires\":\n                if (!val)\n                    break;\n                const date = new Date(val);\n                if (Number.isFinite(date.valueOf()))\n                    setCookie.expires = date;\n                break;\n            case \"priority\":\n                if (!val)\n                    break;\n                const priority = val.toLowerCase();\n                if (priority === \"low\" ||\n                    priority === \"medium\" ||\n                    priority === \"high\") {\n                    setCookie.priority = priority;\n                }\n                break;\n            case \"samesite\":\n                if (!val)\n                    break;\n                const sameSite = val.toLowerCase();\n                if (sameSite === \"lax\" ||\n                    sameSite === \"strict\" ||\n                    sameSite === \"none\") {\n                    setCookie.sameSite = sameSite;\n                }\n                break;\n        }\n        index = endIdx + 1;\n    }\n    return setCookie;\n}\n/**\n * Find the `;` character between `min` and `len` in str.\n */\nfunction endIndex(str, min, len) {\n    const index = str.indexOf(\";\", min);\n    return index === -1 ? len : index;\n}\n/**\n * Find the `=` character between `min` and `max` in str.\n */\nfunction eqIndex(str, min, max) {\n    const index = str.indexOf(\"=\", min);\n    return index < max ? index : -1;\n}\n/**\n * Slice out a value between startPod to max.\n */\nfunction valueSlice(str, min, max) {\n    let start = min;\n    let end = max;\n    do {\n        const code = str.charCodeAt(start);\n        if (code !== 0x20 /*   */ && code !== 0x09 /* \\t */)\n            break;\n    } while (++start < end);\n    while (end > start) {\n        const code = str.charCodeAt(end - 1);\n        if (code !== 0x20 /*   */ && code !== 0x09 /* \\t */)\n            break;\n        end--;\n    }\n    return str.slice(start, end);\n}\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n */\nfunction decode(str) {\n    if (str.indexOf(\"%\") === -1)\n        return str;\n    try {\n        return decodeURIComponent(str);\n    }\n    catch (e) {\n        return str;\n    }\n}\n/**\n * Determine if value is a Date.\n */\nfunction isDate(val) {\n    return __toString.call(val) === \"[object Date]\";\n}\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n  // START: fast-deep-equal es6/index.js 3.1.3\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n    // START: Modifications:\n    // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n    //    to co-exist with es5.\n    // 2. Replace `for of` with es5 compliant iteration using `for`.\n    //    Basically, take:\n    //\n    //    ```js\n    //    for (i of a.entries())\n    //      if (!b.has(i[0])) return false;\n    //    ```\n    //\n    //    ... and convert to:\n    //\n    //    ```js\n    //    it = a.entries();\n    //    while (!(i = it.next()).done)\n    //      if (!b.has(i.value[0])) return false;\n    //    ```\n    //\n    //    **Note**: `i` access switches to `i.value`.\n    var it;\n    if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!equal(i.value[1], b.get(i.value[0]))) return false;\n      return true;\n    }\n\n    if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      return true;\n    }\n    // END: Modifications\n\n    if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (a[i] !== b[i]) return false;\n      return true;\n    }\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    // START: Modifications:\n    // Apply guards for `Object.create(null)` handling. See:\n    // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n    // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n    if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n    // END: Modifications\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n    // END: fast-deep-equal\n\n    // START: react-fast-compare\n    // custom handling for DOM elements\n    if (hasElementType && a instanceof Element) return false;\n\n    // custom handling for React/Preact\n    for (i = length; i-- !== 0;) {\n      if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner\n        // Preact-specific: avoid traversing Preact elements' __v and __o\n        //    __v = $_original / $_vnode\n        //    __o = $_owner\n        // These properties contain circular references and are not needed when\n        // comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of elements\n\n        continue;\n      }\n\n      // all other properties should be traversed as usual\n      if (!equal(a[keys[i]], b[keys[i]])) return false;\n    }\n    // END: react-fast-compare\n\n    // START: fast-deep-equal\n    return true;\n  }\n\n  return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (((error.message || '').match(/stack|recursion/i))) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('react-fast-compare cannot handle circular refs');\n      return false;\n    }\n    // some other error. we should definitely know about these\n    throw error;\n  }\n};\n","import { getDistanceBetweenPoints } from '../contrib/helpers'\n\nconst isInTitle = (title, search) => {\n  const titleLower = title?.toLowerCase().trim().replace(/\\s/g, '') ?? ''\n  const searchString = search.toLowerCase().trim()\n  const searchList = searchString.split(/\\s/)\n  for (const i in searchList) {\n    if (titleLower.indexOf(searchList[i]) === -1) {\n      return false\n    }\n  }\n  return true\n}\n\nconst isInTopic = (topics, itemTopics, search) => {\n  const activeTopics = topics.filter((topic) => itemTopics.includes(topic.code))\n  return activeTopics.some(topic => isInTitle(topic.name, search))\n}\n\nconst statusNames = ['active', 'future', 'past']\n\nexport const filterProjects = (items, appliedFilters, kiezradars, topics, projectState) => {\n  const { search, topics: activeTopics, districts, organisation, participations, plansOnly, kiezradars: activeKiezradars } = appliedFilters\n\n  const filterItem = (item) => {\n    const isWithinAnyRadius =\n      item.point && kiezradars.some(kiezradar =>\n        activeKiezradars.includes(kiezradar.name) &&\n        getDistanceBetweenPoints(item.point.geometry.coordinates, kiezradar.point.geometry.coordinates) <= kiezradar.radius\n      )\n    const hasKiezradarAndDistrict = activeKiezradars.length > 0 && districts.length > 0\n\n    const hasRelevantOrEmptyActiveTopics = (activeTopics.length === 0 || activeTopics.some(topic => item.topics.includes(topic)))\n    const hasRelevantOrEmptyParticipation = (participations.length === 0 || participations.includes(item.participation))\n    const hasRelevantOrEmptyOrganisation = (organisation.length === 0 || organisation.includes(item.organisation))\n\n    const isTextSearchMatch = (search === '' ||\n        isInTitle(item.title, search) ||\n        isInTitle(item.district, search) ||\n        isInTitle(item.organisation, search) ||\n        isInTitle(item.description, search) ||\n        isInTopic(topics, item.topics, search))\n\n    const isStatusMatch = (projectState.includes(statusNames[item.status])) && (!plansOnly || item.type === 'plan')\n\n    return (\n      hasRelevantOrEmptyActiveTopics &&\n      hasRelevantOrEmptyParticipation &&\n      hasRelevantOrEmptyOrganisation &&\n      isTextSearchMatch &&\n      isStatusMatch &&\n      (hasKiezradarAndDistrict\n        // if we have both active we want to include projects that are within kiez\n        // OR projects that are in the selected district\n        ? (\n            isWithinAnyRadius || districts.includes(item.district)\n          )\n        : (\n            (activeKiezradars.length === 0 || isWithinAnyRadius) &&\n            (districts.length === 0 || districts.includes(item.district))\n          )\n      )\n    )\n  }\n\n  return items.filter(filterItem)\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar helpers_1 = require(\"@turf/helpers\");\nvar meta_1 = require(\"@turf/meta\");\nvar tin_1 = __importDefault(require(\"@turf/tin\"));\nvar turf_dissolve_1 = __importDefault(require(\"./lib/turf-dissolve\"));\n/**\n * Takes a set of {@link Point|points} and returns a concave hull Polygon or MultiPolygon.\n * Internally, this uses [turf-tin](https://github.com/Turfjs/turf-tin) to generate geometries.\n *\n * @name concave\n * @param {FeatureCollection<Point>} points input points\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.maxEdge=Infinity] the length (in 'units') of an edge necessary for part of the\n * hull to become concave.\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @returns {Feature<(Polygon|MultiPolygon)>|null} a concave hull (null value is returned if unable to compute hull)\n * @example\n * var points = turf.featureCollection([\n *   turf.point([-63.601226, 44.642643]),\n *   turf.point([-63.591442, 44.651436]),\n *   turf.point([-63.580799, 44.648749]),\n *   turf.point([-63.573589, 44.641788]),\n *   turf.point([-63.587665, 44.64533]),\n *   turf.point([-63.595218, 44.64765])\n * ]);\n * var options = {units: 'miles', maxEdge: 1};\n *\n * var hull = turf.concave(points, options);\n *\n * //addToMap\n * var addToMap = [points, hull]\n */\nfunction concave(points, options) {\n    if (options === void 0) { options = {}; }\n    var maxEdge = options.maxEdge || Infinity;\n    var cleaned = removeDuplicates(points);\n    var tinPolys = tin_1.default(cleaned);\n    // calculate length of all edges and area of all triangles\n    // and remove triangles that fail the max length test\n    tinPolys.features = tinPolys.features.filter(function (triangle) {\n        var pt1 = triangle.geometry.coordinates[0][0];\n        var pt2 = triangle.geometry.coordinates[0][1];\n        var pt3 = triangle.geometry.coordinates[0][2];\n        var dist1 = distance_1.default(pt1, pt2, options);\n        var dist2 = distance_1.default(pt2, pt3, options);\n        var dist3 = distance_1.default(pt1, pt3, options);\n        return dist1 <= maxEdge && dist2 <= maxEdge && dist3 <= maxEdge;\n    });\n    if (tinPolys.features.length < 1) {\n        return null;\n    }\n    // merge the adjacent triangles\n    var dissolved = turf_dissolve_1.default(tinPolys);\n    // geojson-dissolve always returns a MultiPolygon\n    if (dissolved.coordinates.length === 1) {\n        dissolved.coordinates = dissolved.coordinates[0];\n        dissolved.type = \"Polygon\";\n    }\n    return helpers_1.feature(dissolved);\n}\n/**\n * Removes duplicated points in a collection returning a new collection\n *\n * @private\n * @param {FeatureCollection<Point>} points to be cleaned\n * @returns {FeatureCollection<Point>} cleaned set of points\n */\nfunction removeDuplicates(points) {\n    var cleaned = [];\n    var existing = {};\n    meta_1.featureEach(points, function (pt) {\n        if (!pt.geometry) {\n            return;\n        }\n        var key = pt.geometry.coordinates.join(\"-\");\n        if (!Object.prototype.hasOwnProperty.call(existing, key)) {\n            cleaned.push(pt);\n            existing[key] = true;\n        }\n    });\n    return helpers_1.featureCollection(cleaned);\n}\nexports.default = concave;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","import cookie from 'js-cookie'\nimport django from 'django'\n\nexport function updateItem (data, url, method) {\n  return fetch(url, {\n    headers: {\n      'Content-Type': 'application/json; charset=utf-8',\n      'X-CSRFToken': cookie.get('csrftoken')\n    },\n    method,\n    body: JSON.stringify(data)\n  }\n  )\n}\n\n// toLocaleDate returns a formatted and internationalized\n// date string. Fallback formatting is the German variant.\n// input: 2021-11-11T15:37:19.490201+01:00\n// output: 11. November 2021 (depending on locale)\nexport const toLocaleDate = (\n  isodate,\n  locale = 'de-DE',\n  formatStyle = { month: 'short', day: 'numeric', year: 'numeric' }\n) => {\n  const date = new Date(isodate)\n  return new Intl.DateTimeFormat(locale, formatStyle).format(date)\n}\n\n/*\n * checks if two arrays are equal\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\nexport const arraysEqual = (a, b) => {\n  if (a === b) return true\n  if (a == null || b == null) return false\n  if (a.length !== b.length) return false\n\n  const aSorted = [...a].sort()\n  const bSorted = [...b].sort()\n\n  for (let i = 0; i < aSorted.length; ++i) {\n    if (aSorted[i] !== bSorted[i]) return false\n  }\n  return true\n}\n\n/*\n * converts an object to URLSearchParams\n *\n * This function takes an object and converts it into a URLSearchParams\n * instance, which can be used for query string formatting in URLs.\n * It handles arrays by appending each value to the parameter, and ignores\n * any null or undefined values.\n *\n * Example:\n * For the input:\n *   { search: 'apple', category: 'fruit', tags: ['red', 'green'], page: null }\n * The output will be:\n *   \"search=apple&category=fruit&tags=red&tags=green\"\n *\n * @param {Object} params - The object to convert into URLSearchParams\n * @returns {URLSearchParams} - The resulting URLSearchParams instance\n */\nexport const toSearchParams = (params) => {\n  return Object.entries(params).reduce((acc, [key, value]) => {\n    if (value == null || value === '') return acc\n\n    if (Array.isArray(value)) {\n      value.forEach(val => (val != null && val !== '') && acc.append(key, val))\n    } else {\n      acc.set(key, value)\n    }\n\n    return acc\n  }, new URLSearchParams())\n}\n\n/*\n * Calculates the geographical distance between two points using the Haversine formula.\n *\n * This function computes the shortest distance between two latitude/longitude coordinates\n * on Earth's surface, returning the result in meters.\n *\n * Example:\n * getDistanceBetweenPoints([13.405, 52.52], [9.9937, 53.5511])\n * returns: ~255600 meters (distance between Berlin and Hamburg)\n *\n * @param {number[]} coords1 - [longitude, latitude] of the first point\n * @param {number[]} coords2 - [longitude, latitude] of the second point\n * @returns {number} - Distance between the two points in meters\n */\nexport const getDistanceBetweenPoints = (coords1, coords2) => {\n  const toRad = (angle) => (angle * Math.PI) / 180\n\n  const [lon1, lat1] = coords1\n  const [lon2, lat2] = coords2\n\n  const earthRadiusInMeters = 6371000\n  const deltaLat = toRad(lat2 - lat1)\n  const deltaLon = toRad(lon2 - lon1)\n\n  const haversineFormula =\n    Math.sin(deltaLat / 2) * Math.sin(deltaLat / 2) +\n    Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) * Math.sin(deltaLon / 2) * Math.sin(deltaLon / 2)\n\n  const centralAngle = 2 * Math.atan2(Math.sqrt(haversineFormula), Math.sqrt(1 - haversineFormula))\n\n  return earthRadiusInMeters * centralAngle\n}\n\nconst statusNames = [django.gettext('ongoing'), django.gettext('upcoming'), django.gettext('done')]\nconst plansText = django.gettext('Plans')\n\n/*\n * Converts a search profile object into a structured list of filters.\n *\n * This function extracts relevant filtering criteria from a given search profile\n * and returns them as an array of arrays, where each sub-array represents a different\n * filter category. Empty filters are removed to ensure a clean output.\n *\n * Example:\n * Given a search profile:\n * {\n *   query_text: \"Lichtenberg\",\n *   districts: [{ name: \"Charlottenburg-Wilmersdorf\" }, { name: \"Friedrichshain-Kreuzberg\" }],\n *   topics: [{ name: \"Work & economy\" }],\n *   project_types: [{ name: \"information (no participation)\" }],\n *   status: [{ name: \"ongoing\" }],\n *   organisations: [{ name: \"liqd\" }],\n *   kiezradars: [{ name: \"Kiezradar 1\" }],\n *   plans_only: true\n * }\n *\n * The output will be:\n * [\n *   [\"Lichtenberg\"],\n *   [\"Charlottenburg-Wilmersdorf\", \"Friedrichshain-Kreuzberg\"],\n *   [\"Work & economy\"],\n *   [\"information (no participation)\"],\n *   [\"ongoing\"],\n *   [\"liqd\"],\n *   [\"Kiezradar 1\"],\n *   [\"Plans\"]\n * ]\n *\n * @param {Object} searchProfile - The search profile containing filter criteria\n * @returns {string[][]} - A structured list of filter values\n */\nexport const toFilterList = (searchProfile) => {\n  const filters = [\n    searchProfile.districts,\n    searchProfile.topics,\n    searchProfile.project_types,\n    searchProfile.status.map((status) => ({ name: statusNames[status.status] })),\n    searchProfile.organisations,\n    searchProfile.kiezradars\n  ].map((filter) => filter.map(({ name }) => name))\n\n  return [\n    [searchProfile.query_text],\n    ...filters,\n    [searchProfile.plans_only ? plansText : null]\n  ].filter(arr => arr.some(value => value))\n}\n","import React from 'react'\n\nconst ImageWithPlaceholder = ({ src, alt, lazy = true, className, ...rest }) => {\n  const hasImage = src && src.length\n  return hasImage\n    ? (\n      <img\n        src={src}\n        alt={alt}\n        loading={lazy ? 'lazy' : 'eager'}\n        className={className}\n        {...rest}\n      />\n      )\n    : (\n      <picture className={className}>\n        <source type=\"image/webp\" srcSet=\"/static/images/placeholder_tile.webp\" />\n        <source type=\"image/avif\" srcSet=\"/static/images/placeholder_tile.avif\" />\n        <img\n          src=\"/static/images/placeholder_tile.svg\"\n          alt={alt}\n          loading={lazy ? 'lazy' : 'eager'}\n          {...rest}\n          className=\"project-tile__placeholder\"\n        />\n      </picture>\n      )\n}\n\nexport default ImageWithPlaceholder\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\nvar helpers_1 = require(\"@turf/helpers\");\nvar clone_1 = __importDefault(require(\"@turf/clone\"));\n/**\n * Converts a WGS84 GeoJSON object into Mercator (EPSG:900913) projection\n *\n * @name toMercator\n * @param {GeoJSON|Position} geojson WGS84 GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Projected GeoJSON\n * @example\n * var pt = turf.point([-71,41]);\n * var converted = turf.toMercator(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */\nfunction toMercator(geojson, options) {\n    if (options === void 0) { options = {}; }\n    return convert(geojson, \"mercator\", options);\n}\nexports.toMercator = toMercator;\n/**\n * Converts a Mercator (EPSG:900913) GeoJSON object into WGS84 projection\n *\n * @name toWgs84\n * @param {GeoJSON|Position} geojson Mercator GeoJSON object\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Projected GeoJSON\n * @example\n * var pt = turf.point([-7903683.846322424, 5012341.663847514]);\n * var converted = turf.toWgs84(pt);\n *\n * //addToMap\n * var addToMap = [pt, converted];\n */\nfunction toWgs84(geojson, options) {\n    if (options === void 0) { options = {}; }\n    return convert(geojson, \"wgs84\", options);\n}\nexports.toWgs84 = toWgs84;\n/**\n * Converts a GeoJSON coordinates to the defined `projection`\n *\n * @private\n * @param {GeoJSON} geojson GeoJSON Feature or Geometry\n * @param {string} projection defines the projection system to convert the coordinates to\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} Converted GeoJSON\n */\nfunction convert(geojson, projection, options) {\n    if (options === void 0) { options = {}; }\n    // Optional parameters\n    options = options || {};\n    var mutate = options.mutate;\n    // Validation\n    if (!geojson)\n        throw new Error(\"geojson is required\");\n    // Handle Position\n    if (Array.isArray(geojson) && helpers_1.isNumber(geojson[0]))\n        geojson =\n            projection === \"mercator\"\n                ? convertToMercator(geojson)\n                : convertToWgs84(geojson);\n    // Handle GeoJSON\n    else {\n        // Handle possible data mutation\n        if (mutate !== true)\n            geojson = clone_1.default(geojson);\n        meta_1.coordEach(geojson, function (coord) {\n            var newCoord = projection === \"mercator\"\n                ? convertToMercator(coord)\n                : convertToWgs84(coord);\n            coord[0] = newCoord[0];\n            coord[1] = newCoord[1];\n        });\n    }\n    return geojson;\n}\n/**\n * Convert lon/lat values to 900913 x/y.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array<number>} lonLat WGS84 point\n * @returns {Array<number>} Mercator [x, y] point\n */\nfunction convertToMercator(lonLat) {\n    var D2R = Math.PI / 180, \n    // 900913 properties\n    A = 6378137.0, MAXEXTENT = 20037508.342789244;\n    // compensate longitudes passing the 180th meridian\n    // from https://github.com/proj4js/proj4js/blob/master/lib/common/adjust_lon.js\n    var adjusted = Math.abs(lonLat[0]) <= 180 ? lonLat[0] : lonLat[0] - sign(lonLat[0]) * 360;\n    var xy = [\n        A * adjusted * D2R,\n        A * Math.log(Math.tan(Math.PI * 0.25 + 0.5 * lonLat[1] * D2R)),\n    ];\n    // if xy value is beyond maxextent (e.g. poles), return maxextent\n    if (xy[0] > MAXEXTENT)\n        xy[0] = MAXEXTENT;\n    if (xy[0] < -MAXEXTENT)\n        xy[0] = -MAXEXTENT;\n    if (xy[1] > MAXEXTENT)\n        xy[1] = MAXEXTENT;\n    if (xy[1] < -MAXEXTENT)\n        xy[1] = -MAXEXTENT;\n    return xy;\n}\n/**\n * Convert 900913 x/y values to lon/lat.\n * (from https://github.com/mapbox/sphericalmercator)\n *\n * @private\n * @param {Array<number>} xy Mercator [x, y] point\n * @returns {Array<number>} WGS84 [lon, lat] point\n */\nfunction convertToWgs84(xy) {\n    // 900913 properties.\n    var R2D = 180 / Math.PI;\n    var A = 6378137.0;\n    return [\n        (xy[0] * R2D) / A,\n        (Math.PI * 0.5 - 2.0 * Math.atan(Math.exp(-xy[1] / A))) * R2D,\n    ];\n}\n/**\n * Returns the sign of the input, or zero\n *\n * @private\n * @param {number} x input\n * @returns {number} -1|0|1 output\n */\nfunction sign(x) {\n    return x < 0 ? -1 : x > 0 ? 1 : 0;\n}\n","import L from 'leaflet'\nimport 'leaflet.markercluster'\nimport {\n  createElementObject,\n  createLayerComponent, extendContext, updateGridLayer\n} from '@react-leaflet/core'\n\nconst createMarkerClusterLayer = (props, context) => {\n  const instance = L.markerClusterGroup({ showCoverageOnHover: false })\n\n  return createElementObject(instance, extendContext(context, { layerContainer: instance }))\n}\n\nconst updateMarkerClusterLayer = (instance, props, prevProps) => {\n  updateGridLayer(instance, props, prevProps)\n}\n\nconst MarkerClusterLayer = createLayerComponent(createMarkerClusterLayer, updateMarkerClusterLayer)\nexport default MarkerClusterLayer\n","'use strict';\n\nvar clone = require('@turf/clone');\nvar center = require('@turf/center');\nvar centroid = require('@turf/centroid');\nvar turfBBox = require('@turf/bbox');\nvar rhumbBearing = require('@turf/rhumb-bearing');\nvar rhumbDistance = require('@turf/rhumb-distance');\nvar rhumbDestination = require('@turf/rhumb-destination');\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\nvar invariant = require('@turf/invariant');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);\nvar center__default = /*#__PURE__*/_interopDefaultLegacy(center);\nvar centroid__default = /*#__PURE__*/_interopDefaultLegacy(centroid);\nvar turfBBox__default = /*#__PURE__*/_interopDefaultLegacy(turfBBox);\nvar rhumbBearing__default = /*#__PURE__*/_interopDefaultLegacy(rhumbBearing);\nvar rhumbDistance__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDistance);\nvar rhumbDestination__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDestination);\n\n/**\n * Scale a GeoJSON from a given point by a factor of scaling (ex: factor=2 would make the GeoJSON 200% larger).\n * If a FeatureCollection is provided, the origin point will be calculated based on each individual Feature.\n *\n * @name transformScale\n * @param {GeoJSON} geojson GeoJSON to be scaled\n * @param {number} factor of scaling, positive or negative values greater than 0\n * @param {Object} [options={}] Optional parameters\n * @param {string|Coord} [options.origin='centroid'] Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid)\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} scaled GeoJSON\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var scaledPoly = turf.transformScale(poly, 3);\n *\n * //addToMap\n * var addToMap = [poly, scaledPoly];\n * scaledPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */\nfunction transformScale(geojson, factor, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var origin = options.origin;\n  var mutate = options.mutate;\n\n  // Input validation\n  if (!geojson) throw new Error(\"geojson required\");\n  if (typeof factor !== \"number\" || factor === 0)\n    throw new Error(\"invalid factor\");\n  var originIsPoint = Array.isArray(origin) || typeof origin === \"object\";\n\n  // Clone geojson to avoid side effects\n  if (mutate !== true) geojson = clone__default['default'](geojson);\n\n  // Scale each Feature separately\n  if (geojson.type === \"FeatureCollection\" && !originIsPoint) {\n    meta.featureEach(geojson, function (feature, index) {\n      geojson.features[index] = scale(feature, factor, origin);\n    });\n    return geojson;\n  }\n  // Scale Feature/Geometry\n  return scale(geojson, factor, origin);\n}\n\n/**\n * Scale Feature/Geometry\n *\n * @private\n * @param {Feature|Geometry} feature GeoJSON Feature/Geometry\n * @param {number} factor of scaling, positive or negative values greater than 0\n * @param {string|Coord} [origin=\"centroid\"] Point from which the scaling will occur (string options: sw/se/nw/ne/center/centroid)\n * @returns {Feature|Geometry} scaled GeoJSON Feature/Geometry\n */\nfunction scale(feature, factor, origin) {\n  // Default params\n  var isPoint = invariant.getType(feature) === \"Point\";\n  origin = defineOrigin(feature, origin);\n\n  // Shortcut no-scaling\n  if (factor === 1 || isPoint) return feature;\n\n  // Scale each coordinate\n  meta.coordEach(feature, function (coord) {\n    var originalDistance = rhumbDistance__default['default'](origin, coord);\n    var bearing = rhumbBearing__default['default'](origin, coord);\n    var newDistance = originalDistance * factor;\n    var newCoord = invariant.getCoords(rhumbDestination__default['default'](origin, newDistance, bearing));\n    coord[0] = newCoord[0];\n    coord[1] = newCoord[1];\n    if (coord.length === 3) coord[2] *= factor;\n  });\n\n  return feature;\n}\n\n/**\n * Define Origin\n *\n * @private\n * @param {GeoJSON} geojson GeoJSON\n * @param {string|Coord} origin sw/se/nw/ne/center/centroid\n * @returns {Feature<Point>} Point origin\n */\nfunction defineOrigin(geojson, origin) {\n  // Default params\n  if (origin === undefined || origin === null) origin = \"centroid\";\n\n  // Input Coord\n  if (Array.isArray(origin) || typeof origin === \"object\")\n    return invariant.getCoord(origin);\n\n  // Define BBox\n  var bbox = geojson.bbox ? geojson.bbox : turfBBox__default['default'](geojson);\n  var west = bbox[0];\n  var south = bbox[1];\n  var east = bbox[2];\n  var north = bbox[3];\n\n  switch (origin) {\n    case \"sw\":\n    case \"southwest\":\n    case \"westsouth\":\n    case \"bottomleft\":\n      return helpers.point([west, south]);\n    case \"se\":\n    case \"southeast\":\n    case \"eastsouth\":\n    case \"bottomright\":\n      return helpers.point([east, south]);\n    case \"nw\":\n    case \"northwest\":\n    case \"westnorth\":\n    case \"topleft\":\n      return helpers.point([west, north]);\n    case \"ne\":\n    case \"northeast\":\n    case \"eastnorth\":\n    case \"topright\":\n      return helpers.point([east, north]);\n    case \"center\":\n      return center__default['default'](geojson);\n    case undefined:\n    case null:\n    case \"centroid\":\n      return centroid__default['default'](geojson);\n    default:\n      throw new Error(\"invalid origin\");\n  }\n}\n\nmodule.exports = transformScale;\nmodule.exports.default = transformScale;\n","'use strict';\n\nvar meta = require('@turf/meta');\nvar invariant = require('@turf/invariant');\nvar helpers = require('@turf/helpers');\n\n/**\n * https://github.com/rook2pawn/node-intersection\n *\n * Author @rook2pawn\n */\n\n/**\n * AB\n *\n * @private\n * @param {Array<Array<number>>} segment - 2 vertex line segment\n * @returns {Array<number>} coordinates [x, y]\n */\nfunction ab(segment) {\n  var start = segment[0];\n  var end = segment[1];\n  return [end[0] - start[0], end[1] - start[1]];\n}\n\n/**\n * Cross Product\n *\n * @private\n * @param {Array<number>} v1 coordinates [x, y]\n * @param {Array<number>} v2 coordinates [x, y]\n * @returns {Array<number>} Cross Product\n */\nfunction crossProduct(v1, v2) {\n  return v1[0] * v2[1] - v2[0] * v1[1];\n}\n\n/**\n * Add\n *\n * @private\n * @param {Array<number>} v1 coordinates [x, y]\n * @param {Array<number>} v2 coordinates [x, y]\n * @returns {Array<number>} Add\n */\nfunction add(v1, v2) {\n  return [v1[0] + v2[0], v1[1] + v2[1]];\n}\n\n/**\n * Sub\n *\n * @private\n * @param {Array<number>} v1 coordinates [x, y]\n * @param {Array<number>} v2 coordinates [x, y]\n * @returns {Array<number>} Sub\n */\nfunction sub(v1, v2) {\n  return [v1[0] - v2[0], v1[1] - v2[1]];\n}\n\n/**\n * scalarMult\n *\n * @private\n * @param {number} s scalar\n * @param {Array<number>} v coordinates [x, y]\n * @returns {Array<number>} scalarMult\n */\nfunction scalarMult(s, v) {\n  return [s * v[0], s * v[1]];\n}\n\n/**\n * Intersect Segments\n *\n * @private\n * @param {Array<number>} a coordinates [x, y]\n * @param {Array<number>} b coordinates [x, y]\n * @returns {Array<number>} intersection\n */\nfunction intersectSegments(a, b) {\n  var p = a[0];\n  var r = ab(a);\n  var q = b[0];\n  var s = ab(b);\n\n  var cross = crossProduct(r, s);\n  var qmp = sub(q, p);\n  var numerator = crossProduct(qmp, s);\n  var t = numerator / cross;\n  var intersection = add(p, scalarMult(t, r));\n  return intersection;\n}\n\n/**\n * Is Parallel\n *\n * @private\n * @param {Array<number>} a coordinates [x, y]\n * @param {Array<number>} b coordinates [x, y]\n * @returns {boolean} true if a and b are parallel (or co-linear)\n */\nfunction isParallel(a, b) {\n  var r = ab(a);\n  var s = ab(b);\n  return crossProduct(r, s) === 0;\n}\n\n/**\n * Intersection\n *\n * @private\n * @param {Array<number>} a coordinates [x, y]\n * @param {Array<number>} b coordinates [x, y]\n * @returns {Array<number>|boolean} true if a and b are parallel (or co-linear)\n */\nfunction intersection(a, b) {\n  if (isParallel(a, b)) return false;\n  return intersectSegments(a, b);\n}\n\n/**\n * Takes a {@link LineString|line} and returns a {@link LineString|line} at offset by the specified distance.\n *\n * @name lineOffset\n * @param {Geometry|Feature<LineString|MultiLineString>} geojson input GeoJSON\n * @param {number} distance distance to offset the line (can be of negative value)\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, kilometers, inches, yards, meters\n * @returns {Feature<LineString|MultiLineString>} Line offset from the input line\n * @example\n * var line = turf.lineString([[-83, 30], [-84, 36], [-78, 41]], { \"stroke\": \"#F00\" });\n *\n * var offsetLine = turf.lineOffset(line, 2, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [offsetLine, line]\n * offsetLine.properties.stroke = \"#00F\"\n */\nfunction lineOffset(geojson, distance, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var units = options.units;\n\n  // Valdiation\n  if (!geojson) throw new Error(\"geojson is required\");\n  if (distance === undefined || distance === null || isNaN(distance))\n    throw new Error(\"distance is required\");\n\n  var type = invariant.getType(geojson);\n  var properties = geojson.properties;\n\n  switch (type) {\n    case \"LineString\":\n      return lineOffsetFeature(geojson, distance, units);\n    case \"MultiLineString\":\n      var coords = [];\n      meta.flattenEach(geojson, function (feature) {\n        coords.push(\n          lineOffsetFeature(feature, distance, units).geometry.coordinates\n        );\n      });\n      return helpers.multiLineString(coords, properties);\n    default:\n      throw new Error(\"geometry \" + type + \" is not supported\");\n  }\n}\n\n/**\n * Line Offset\n *\n * @private\n * @param {Geometry|Feature<LineString>} line input line\n * @param {number} distance distance to offset the line (can be of negative value)\n * @param {string} [units=kilometers] units\n * @returns {Feature<LineString>} Line offset from the input line\n */\nfunction lineOffsetFeature(line, distance, units) {\n  var segments = [];\n  var offsetDegrees = helpers.lengthToDegrees(distance, units);\n  var coords = invariant.getCoords(line);\n  var finalCoords = [];\n  coords.forEach(function (currentCoords, index) {\n    if (index !== coords.length - 1) {\n      var segment = processSegment(\n        currentCoords,\n        coords[index + 1],\n        offsetDegrees\n      );\n      segments.push(segment);\n      if (index > 0) {\n        var seg2Coords = segments[index - 1];\n        var intersects = intersection(segment, seg2Coords);\n\n        // Handling for line segments that aren't straight\n        if (intersects !== false) {\n          seg2Coords[1] = intersects;\n          segment[0] = intersects;\n        }\n\n        finalCoords.push(seg2Coords[0]);\n        if (index === coords.length - 2) {\n          finalCoords.push(segment[0]);\n          finalCoords.push(segment[1]);\n        }\n      }\n      // Handling for lines that only have 1 segment\n      if (coords.length === 2) {\n        finalCoords.push(segment[0]);\n        finalCoords.push(segment[1]);\n      }\n    }\n  });\n  return helpers.lineString(finalCoords, line.properties);\n}\n\n/**\n * Process Segment\n * Inspiration taken from http://stackoverflow.com/questions/2825412/draw-a-parallel-line\n *\n * @private\n * @param {Array<number>} point1 Point coordinates\n * @param {Array<number>} point2 Point coordinates\n * @param {number} offset Offset\n * @returns {Array<Array<number>>} offset points\n */\nfunction processSegment(point1, point2, offset) {\n  var L = Math.sqrt(\n    (point1[0] - point2[0]) * (point1[0] - point2[0]) +\n      (point1[1] - point2[1]) * (point1[1] - point2[1])\n  );\n\n  var out1x = point1[0] + (offset * (point2[1] - point1[1])) / L;\n  var out2x = point2[0] + (offset * (point2[1] - point1[1])) / L;\n  var out1y = point1[1] + (offset * (point1[0] - point2[0])) / L;\n  var out2y = point2[1] + (offset * (point1[0] - point2[0])) / L;\n  return [\n    [out1x, out1y],\n    [out2x, out2y],\n  ];\n}\n\nmodule.exports = lineOffset;\nmodule.exports.default = lineOffset;\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","/**\r\n * KMEANS clustering\r\n *\r\n * @author Lukasz Krawczyk <contact@lukaszkrawczyk.eu>\r\n * @copyright MIT\r\n */\r\n\r\n/**\r\n * KMEANS class constructor\r\n * @constructor\r\n *\r\n * @param {Array} dataset\r\n * @param {number} k - number of clusters\r\n * @param {function} distance - distance function\r\n * @returns {KMEANS}\r\n */\r\n function KMEANS(dataset, k, distance) {\r\n  this.k = 3; // number of clusters\r\n  this.dataset = []; // set of feature vectors\r\n  this.assignments = []; // set of associated clusters for each feature vector\r\n  this.centroids = []; // vectors for our clusters\r\n\r\n  this.init(dataset, k, distance);\r\n}\r\n\r\n/**\r\n * @returns {undefined}\r\n */\r\nKMEANS.prototype.init = function(dataset, k, distance) {\r\n  this.assignments = [];\r\n  this.centroids = [];\r\n\r\n  if (typeof dataset !== 'undefined') {\r\n    this.dataset = dataset;\r\n  }\r\n\r\n  if (typeof k !== 'undefined') {\r\n    this.k = k;\r\n  }\r\n\r\n  if (typeof distance !== 'undefined') {\r\n    this.distance = distance;\r\n  }\r\n};\r\n\r\n/**\r\n * @returns {undefined}\r\n */\r\nKMEANS.prototype.run = function(dataset, k) {\r\n  this.init(dataset, k);\r\n\r\n  var len = this.dataset.length;\r\n\r\n  // initialize centroids\r\n  for (var i = 0; i < this.k; i++) {\r\n    this.centroids[i] = this.randomCentroid();\r\n\t}\r\n\r\n  var change = true;\r\n  while(change) {\r\n\r\n    // assign feature vectors to clusters\r\n    change = this.assign();\r\n\r\n    // adjust location of centroids\r\n    for (var centroidId = 0; centroidId < this.k; centroidId++) {\r\n      var mean = new Array(maxDim);\r\n      var count = 0;\r\n\r\n      // init mean vector\r\n      for (var dim = 0; dim < maxDim; dim++) {\r\n        mean[dim] = 0;\r\n      }\r\n\r\n      for (var j = 0; j < len; j++) {\r\n        var maxDim = this.dataset[j].length;\r\n\r\n        // if current cluster id is assigned to point\r\n        if (centroidId === this.assignments[j]) {\r\n          for (var dim = 0; dim < maxDim; dim++) {\r\n            mean[dim] += this.dataset[j][dim];\r\n          }\r\n          count++;\r\n        }\r\n      }\r\n\r\n      if (count > 0) {\r\n        // if cluster contain points, adjust centroid position\r\n        for (var dim = 0; dim < maxDim; dim++) {\r\n          mean[dim] /= count;\r\n        }\r\n        this.centroids[centroidId] = mean;\r\n      } else {\r\n        // if cluster is empty, generate new random centroid\r\n        this.centroids[centroidId] = this.randomCentroid();\r\n        change = true;\r\n      }\r\n    }\r\n  }\r\n\r\n  return this.getClusters();\r\n};\r\n\r\n/**\r\n * Generate random centroid\r\n *\r\n * @returns {Array}\r\n */\r\nKMEANS.prototype.randomCentroid = function() {\r\n  var maxId = this.dataset.length -1;\r\n  var centroid;\r\n  var id;\r\n\r\n  do {\r\n    id = Math.round(Math.random() * maxId);\r\n    centroid = this.dataset[id];\r\n  } while (this.centroids.indexOf(centroid) >= 0);\r\n\r\n  return centroid;\r\n}\r\n\r\n/**\r\n * Assign points to clusters\r\n *\r\n * @returns {boolean}\r\n */\r\nKMEANS.prototype.assign = function() {\r\n  var change = false;\r\n  var len = this.dataset.length;\r\n  var closestCentroid;\r\n\r\n  for (var i = 0; i < len; i++) {\r\n    closestCentroid = this.argmin(this.dataset[i], this.centroids, this.distance);\r\n\r\n    if (closestCentroid != this.assignments[i]) {\r\n      this.assignments[i] = closestCentroid;\r\n      change = true;\r\n    }\r\n  }\r\n\r\n  return change;\r\n}\r\n\r\n/**\r\n * Extract information about clusters\r\n *\r\n * @returns {undefined}\r\n */\r\nKMEANS.prototype.getClusters = function() {\r\n  var clusters = new Array(this.k);\r\n  var centroidId;\r\n\r\n  for (var pointId = 0; pointId < this.assignments.length; pointId++) {\r\n    centroidId = this.assignments[pointId];\r\n\r\n    // init empty cluster\r\n    if (typeof clusters[centroidId] === 'undefined') {\r\n      clusters[centroidId] = [];\r\n    }\r\n\r\n    clusters[centroidId].push(pointId);\r\n  }\r\n\r\n  return clusters;\r\n};\r\n\r\n// utils\r\n\r\n/**\r\n * @params {Array} point\r\n * @params {Array.<Array>} set\r\n * @params {Function} f\r\n * @returns {number}\r\n */\r\nKMEANS.prototype.argmin = function(point, set, f) {\r\n  var min = Number.MAX_VALUE;\r\n  var arg = 0;\r\n  var len = set.length;\r\n  var d;\r\n\r\n  for (var i = 0; i < len; i++) {\r\n    d = f(point, set[i]);\r\n    if (d < min) {\r\n      min = d;\r\n      arg = i;\r\n    }\r\n  }\r\n\r\n  return arg;\r\n};\r\n\r\n/**\r\n * Euclidean distance\r\n *\r\n * @params {number} p\r\n * @params {number} q\r\n * @returns {number}\r\n */\r\nKMEANS.prototype.distance = function(p, q) {\r\n  var sum = 0;\r\n  var i = Math.min(p.length, q.length);\r\n\r\n  while (i--) {\r\n    var diff = p[i] - q[i];\r\n    sum += diff * diff;\r\n  }\r\n\r\n  return Math.sqrt(sum);\r\n};\r\n\r\nif (typeof module !== 'undefined' && module.exports) {\r\n  module.exports = KMEANS;\r\n}\r\n","import React from 'react'\nimport django from 'django'\nimport {\n  MapPopup\n} from 'adhocracy4/adhocracy4/maps_react/static/a4maps_react/MapPopup'\nimport { useFetchedItems } from '../contexts/FetchItemsProvider'\n\nconst translations = {\n  getVotes: (count) => {\n    const countText = django.ngettext('Vote', 'Votes', count)\n    return django.interpolate(countText, [count])\n  },\n  getComments: (count) => {\n    const countText = django.ngettext('Comment', 'Comments', count)\n    return django.interpolate(countText, [count])\n  },\n  getLikes: (count) => {\n    const countText = django.ngettext('Like', 'Likes', count)\n    return django.interpolate(countText, [count])\n  },\n  getDislikes: (count) => {\n    const countText = django.ngettext('Dislike', 'Dislikes', count)\n    return django.interpolate(countText, [count])\n  },\n  support: django.gettext('Support'),\n  detailsStr: django.gettext('Show'),\n  toStr: django.gettext('to:')\n}\n\nconst Ratings = ({ feature }) => (\n  <>\n    <div className=\"stat-items\">\n      <dt>{translations.getLikes(feature.properties.positive_rating_count)}</dt>\n      <dd>{feature.properties.positive_rating_count}</dd>\n    </div>\n    <div className=\"map-popup-downvotes stat-items\">\n      <dt>{translations.getDislikes(feature.properties.negative_rating_count)}</dt>\n      <dd>{feature.properties.negative_rating_count}</dd>\n    </div>\n  </>\n)\n\nconst Support = ({ feature }) => (\n  <>\n    <div className=\"map-popup-upvotes stat-items\">\n      <dt>{translations.support}</dt>\n      <dd>{feature.properties.positive_rating_count}</dd>\n    </div>\n  </>\n)\n\n// FIXME: This might not be needed anymore, it's not visible in the design\nconst VoteCount = ({ feature }) => (\n  <>\n    <div className=\"stat-items\">\n      <dt>{translations.getVotes(feature.properties.vote_count)}</dt>\n      <dd>{feature.properties.vote_count}</dd>\n    </div>\n  </>\n)\n\nconst CommentCount = ({ feature }) => (\n  <>\n    <div className=\"stat-items\">\n      <dt>{translations.getComments(feature.properties.comment_count)}</dt>\n      <dd>{feature.properties.comment_count}</dd>\n    </div>\n  </>\n)\n\n/**\n * Renders a popup for an item feature on a map.\n *\n * @param {Object} props - The component props.\n * @param {Object} props.feature - The geojson feature.\n * @returns {JSX.Element} The JSX element representing the popup.\n */\nexport const ItemPopup = ({ feature }) => {\n  const fetchedItemsReturn = useFetchedItems()\n\n  const viewRates = fetchedItemsReturn?.results.list?.permissions.view_rate_count\n  const viewSupport = fetchedItemsReturn?.results.list?.permissions.view_support_count\n  const viewVoteCount = fetchedItemsReturn?.results.list?.permissions.view_vote_count\n  return (\n    <MapPopup feature={feature}>\n      <div className=\"maps-popups-popup-name\">\n        <a href={feature.properties.url}>\n          {feature.properties.name}\n        </a>\n      </div>\n      <dl className=\"maps-popups-popup-meta stats-dl\">\n        {viewRates && <Ratings feature={feature} />}\n        {viewSupport && <Support feature={feature} />}\n        {viewVoteCount && <VoteCount feature={feature} />}\n        <CommentCount feature={feature} />\n      </dl>\n      <a href={feature.properties.url} className=\"more\">{translations.detailsStr}\n        <span className=\"aural\">{translations.toStr} {feature.properties.name}</span>\n      </a>\n    </MapPopup>\n  )\n}\n","import React, { useState } from 'react'\nimport django from 'django'\nimport Alert from 'adhocracy4/adhocracy4/static/Alert'\nimport { classNames } from 'adhocracy4'\n\nconst translations = {\n  dontForget: django.gettext(\"Don't forget\"),\n  projectsNotShown: django.gettext('Projects without spacial reference are not shown on the map. Please have a look at the project list.')\n}\n\nconst ProjectsMapInfo = ({ className }) => {\n  const [shouldShow, setShouldShow] = useState(sessionStorage.getItem('hideProjectsMapInfo') !== 'true')\n  if (!shouldShow) {\n    return null\n  }\n\n  return (\n    <div className={classNames(className, 'projects-map-info')}>\n      <Alert\n        type=\"info\"\n        alertAttribute=\"off\"\n        onClick={() => {\n          setShouldShow(false)\n          sessionStorage.setItem('hideProjectsMapInfo', 'true')\n        }}\n        message={(\n          <p>\n            <strong>{translations.dontForget}</strong><br />\n            {translations.projectsNotShown}\n          </p>\n    )}\n      />\n    </div>\n  )\n}\n\nexport default ProjectsMapInfo\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\nvar point_to_line_distance_1 = __importDefault(require(\"@turf/point-to-line-distance\"));\nvar object_assign_1 = __importDefault(require(\"object-assign\"));\n/**\n * Returns the closest {@link Point|point}, of a {@link FeatureCollection|collection} of points,\n * to a {@link LineString|line}. The returned point has a `dist` property indicating its distance to the line.\n *\n * @name nearestPointToLine\n * @param {FeatureCollection|GeometryCollection<Point>} points Point Collection\n * @param {Feature|Geometry<LineString>} line Line Feature\n * @param {Object} [options] Optional parameters\n * @param {string} [options.units='kilometers'] unit of the output distance property\n * (eg: degrees, radians, miles, or kilometers)\n * @param {Object} [options.properties={}] Translate Properties to Point\n * @returns {Feature<Point>} the closest point\n * @example\n * var pt1 = turf.point([0, 0]);\n * var pt2 = turf.point([0.5, 0.5]);\n * var points = turf.featureCollection([pt1, pt2]);\n * var line = turf.lineString([[1,1], [-1,1]]);\n *\n * var nearest = turf.nearestPointToLine(points, line);\n *\n * //addToMap\n * var addToMap = [nearest, line];\n */\nfunction nearestPointToLine(points, line, options) {\n    if (options === void 0) { options = {}; }\n    var units = options.units;\n    var properties = options.properties || {};\n    // validation\n    var pts = normalize(points);\n    if (!pts.features.length) {\n        throw new Error(\"points must contain features\");\n    }\n    if (!line) {\n        throw new Error(\"line is required\");\n    }\n    if (invariant_1.getType(line) !== \"LineString\") {\n        throw new Error(\"line must be a LineString\");\n    }\n    var dist = Infinity;\n    var pt = null;\n    meta_1.featureEach(pts, function (point) {\n        var d = point_to_line_distance_1.default(point, line, { units: units });\n        if (d < dist) {\n            dist = d;\n            pt = point;\n        }\n    });\n    /**\n     * Translate Properties to final Point, priorities:\n     * 1. options.properties\n     * 2. inherent Point properties\n     * 3. dist custom properties created by NearestPointToLine\n     */\n    if (pt) {\n        pt.properties = object_assign_1.default({ dist: dist }, pt.properties, properties);\n    }\n    // if (pt) { pt.properties = objectAssign({dist}, pt.properties, properties); }\n    return pt;\n}\n/**\n * Convert Collection to FeatureCollection\n *\n * @private\n * @param {FeatureCollection|GeometryCollection} points Points\n * @returns {FeatureCollection<Point>} points\n */\nfunction normalize(points) {\n    var features = [];\n    var type = points.geometry ? points.geometry.type : points.type;\n    switch (type) {\n        case \"GeometryCollection\":\n            meta_1.geomEach(points, function (geom) {\n                if (geom.type === \"Point\") {\n                    features.push({ type: \"Feature\", properties: {}, geometry: geom });\n                }\n            });\n            return { type: \"FeatureCollection\", features: features };\n        case \"FeatureCollection\":\n            points.features = points.features.filter(function (feature) {\n                return feature.geometry.type === \"Point\";\n            });\n            return points;\n        default:\n            throw new Error(\"points must be a Point Collection\");\n    }\n}\nexports.default = nearestPointToLine;\n","\"use strict\";\n\nvar defaultParseOptions = {\n  decodeValues: true,\n  map: false,\n  silent: false,\n};\n\nfunction isForbiddenKey(key) {\n  return typeof key !== \"string\" || key in {};\n}\n\nfunction createNullObj() {\n  return Object.create(null);\n}\n\nfunction isNonEmptyString(str) {\n  return typeof str === \"string\" && !!str.trim();\n}\n\nfunction parseString(setCookieValue, options) {\n  var parts = setCookieValue.split(\";\").filter(isNonEmptyString);\n\n  var nameValuePairStr = parts.shift();\n  var parsed = parseNameValuePair(nameValuePairStr);\n  var name = parsed.name;\n  var value = parsed.value;\n\n  options = options\n    ? Object.assign({}, defaultParseOptions, options)\n    : defaultParseOptions;\n\n  if (isForbiddenKey(name)) {\n    return null;\n  }\n\n  try {\n    value = options.decodeValues ? decodeURIComponent(value) : value; // decode cookie value\n  } catch (e) {\n    console.error(\n      \"set-cookie-parser: failed to decode cookie value. Set options.decodeValues=false to disable decoding.\",\n      e\n    );\n  }\n\n  var cookie = createNullObj();\n  cookie.name = name;\n  cookie.value = value;\n\n  parts.forEach(function (part) {\n    var sides = part.split(\"=\");\n    var key = sides.shift().trimLeft().toLowerCase();\n    if (isForbiddenKey(key)) {\n      return;\n    }\n    var value = sides.join(\"=\");\n    if (key === \"expires\") {\n      cookie.expires = new Date(value);\n    } else if (key === \"max-age\") {\n      var n = parseInt(value, 10);\n      if (!Number.isNaN(n)) cookie.maxAge = n;\n    } else if (key === \"secure\") {\n      cookie.secure = true;\n    } else if (key === \"httponly\") {\n      cookie.httpOnly = true;\n    } else if (key === \"samesite\") {\n      cookie.sameSite = value;\n    } else if (key === \"partitioned\") {\n      cookie.partitioned = true;\n    } else if (key) {\n      cookie[key] = value;\n    }\n  });\n\n  return cookie;\n}\n\nfunction parseNameValuePair(nameValuePairStr) {\n  // Parses name-value-pair according to rfc6265bis draft\n\n  var name = \"\";\n  var value = \"\";\n  var nameValueArr = nameValuePairStr.split(\"=\");\n  if (nameValueArr.length > 1) {\n    name = nameValueArr.shift();\n    value = nameValueArr.join(\"=\"); // everything after the first =, joined by a \"=\" if there was more than one part\n  } else {\n    value = nameValuePairStr;\n  }\n\n  return { name: name, value: value };\n}\n\nfunction parse(input, options) {\n  options = options\n    ? Object.assign({}, defaultParseOptions, options)\n    : defaultParseOptions;\n\n  if (!input) {\n    if (!options.map) {\n      return [];\n    } else {\n      return createNullObj();\n    }\n  }\n\n  if (input.headers) {\n    if (typeof input.headers.getSetCookie === \"function\") {\n      // for fetch responses - they combine headers of the same type in the headers array,\n      // but getSetCookie returns an uncombined array\n      input = input.headers.getSetCookie();\n    } else if (input.headers[\"set-cookie\"]) {\n      // fast-path for node.js (which automatically normalizes header names to lower-case)\n      input = input.headers[\"set-cookie\"];\n    } else {\n      // slow-path for other environments - see #25\n      var sch =\n        input.headers[\n          Object.keys(input.headers).find(function (key) {\n            return key.toLowerCase() === \"set-cookie\";\n          })\n        ];\n      // warn if called on a request-like object with a cookie header rather than a set-cookie header - see #34, 36\n      if (!sch && input.headers.cookie && !options.silent) {\n        console.warn(\n          \"Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning.\"\n        );\n      }\n      input = sch;\n    }\n  }\n  if (!Array.isArray(input)) {\n    input = [input];\n  }\n\n  if (!options.map) {\n    return input\n      .filter(isNonEmptyString)\n      .map(function (str) {\n        return parseString(str, options);\n      })\n      .filter(Boolean);\n  } else {\n    var cookies = createNullObj();\n    return input.filter(isNonEmptyString).reduce(function (cookies, str) {\n      var cookie = parseString(str, options);\n      if (cookie && !isForbiddenKey(cookie.name)) {\n        cookies[cookie.name] = cookie;\n      }\n      return cookies;\n    }, cookies);\n  }\n}\n\n/*\n  Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n  that are within a single set-cookie field-value, such as in the Expires portion.\n\n  This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n  Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n  React Native's fetch does this for *every* header, including set-cookie.\n\n  Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n  Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nfunction splitCookiesString(cookiesString) {\n  if (Array.isArray(cookiesString)) {\n    return cookiesString;\n  }\n  if (typeof cookiesString !== \"string\") {\n    return [];\n  }\n\n  var cookiesStrings = [];\n  var pos = 0;\n  var start;\n  var ch;\n  var lastComma;\n  var nextStart;\n  var cookiesSeparatorFound;\n\n  function skipWhitespace() {\n    while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n      pos += 1;\n    }\n    return pos < cookiesString.length;\n  }\n\n  function notSpecialChar() {\n    ch = cookiesString.charAt(pos);\n\n    return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n  }\n\n  while (pos < cookiesString.length) {\n    start = pos;\n    cookiesSeparatorFound = false;\n\n    while (skipWhitespace()) {\n      ch = cookiesString.charAt(pos);\n      if (ch === \",\") {\n        // ',' is a cookie separator if we have later first '=', not ';' or ','\n        lastComma = pos;\n        pos += 1;\n\n        skipWhitespace();\n        nextStart = pos;\n\n        while (pos < cookiesString.length && notSpecialChar()) {\n          pos += 1;\n        }\n\n        // currently special character\n        if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n          // we found cookies separator\n          cookiesSeparatorFound = true;\n          // pos is inside the next cookie, so back up and return it.\n          pos = nextStart;\n          cookiesStrings.push(cookiesString.substring(start, lastComma));\n          start = pos;\n        } else {\n          // in param ',' or param separator ';',\n          // we continue from that comma\n          pos = lastComma + 1;\n        }\n      } else {\n        pos += 1;\n      }\n    }\n\n    if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n      cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n    }\n  }\n\n  return cookiesStrings;\n}\n\nmodule.exports = parse;\nmodule.exports.parse = parse;\nmodule.exports.parseString = parseString;\nmodule.exports.splitCookiesString = splitCookiesString;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a {@link LineString|linestring}, {@link MultiLineString|multi-linestring},\n * {@link MultiPolygon|multi-polygon} or {@link Polygon|polygon} and\n * returns {@link Point|points} at all self-intersections.\n *\n * @name kinks\n * @param {Feature<LineString|MultiLineString|MultiPolygon|Polygon>} featureIn input feature\n * @returns {FeatureCollection<Point>} self-intersections\n * @example\n * var poly = turf.polygon([[\n *   [-12.034835, 8.901183],\n *   [-12.060413, 8.899826],\n *   [-12.03638, 8.873199],\n *   [-12.059383, 8.871418],\n *   [-12.034835, 8.901183]\n * ]]);\n *\n * var kinks = turf.kinks(poly);\n *\n * //addToMap\n * var addToMap = [poly, kinks]\n */\nfunction kinks(featureIn) {\n    var coordinates;\n    var feature;\n    var results = {\n        type: \"FeatureCollection\",\n        features: [],\n    };\n    if (featureIn.type === \"Feature\") {\n        feature = featureIn.geometry;\n    }\n    else {\n        feature = featureIn;\n    }\n    if (feature.type === \"LineString\") {\n        coordinates = [feature.coordinates];\n    }\n    else if (feature.type === \"MultiLineString\") {\n        coordinates = feature.coordinates;\n    }\n    else if (feature.type === \"MultiPolygon\") {\n        coordinates = [].concat.apply([], feature.coordinates);\n    }\n    else if (feature.type === \"Polygon\") {\n        coordinates = feature.coordinates;\n    }\n    else {\n        throw new Error(\"Input must be a LineString, MultiLineString, \" +\n            \"Polygon, or MultiPolygon Feature or Geometry\");\n    }\n    coordinates.forEach(function (line1) {\n        coordinates.forEach(function (line2) {\n            for (var i = 0; i < line1.length - 1; i++) {\n                // start iteration at i, intersections for k < i have already\n                // been checked in previous outer loop iterations\n                for (var k = i; k < line2.length - 1; k++) {\n                    if (line1 === line2) {\n                        // segments are adjacent and always share a vertex, not a kink\n                        if (Math.abs(i - k) === 1) {\n                            continue;\n                        }\n                        // first and last segment in a closed lineString or ring always share a vertex, not a kink\n                        if (\n                        // segments are first and last segment of lineString\n                        i === 0 &&\n                            k === line1.length - 2 &&\n                            // lineString is closed\n                            line1[i][0] === line1[line1.length - 1][0] &&\n                            line1[i][1] === line1[line1.length - 1][1]) {\n                            continue;\n                        }\n                    }\n                    var intersection = lineIntersects(line1[i][0], line1[i][1], line1[i + 1][0], line1[i + 1][1], line2[k][0], line2[k][1], line2[k + 1][0], line2[k + 1][1]);\n                    if (intersection) {\n                        results.features.push(helpers_1.point([intersection[0], intersection[1]]));\n                    }\n                }\n            }\n        });\n    });\n    return results;\n}\nexports.default = kinks;\n// modified from http://jsfiddle.net/justin_c_rounds/Gd2S2/light/\nfunction lineIntersects(line1StartX, line1StartY, line1EndX, line1EndY, line2StartX, line2StartY, line2EndX, line2EndY) {\n    // if the lines intersect, the result contains the x and y of the\n    // intersection (treating the lines as infinite) and booleans for whether\n    // line segment 1 or line segment 2 contain the point\n    var denominator;\n    var a;\n    var b;\n    var numerator1;\n    var numerator2;\n    var result = {\n        x: null,\n        y: null,\n        onLine1: false,\n        onLine2: false,\n    };\n    denominator =\n        (line2EndY - line2StartY) * (line1EndX - line1StartX) -\n            (line2EndX - line2StartX) * (line1EndY - line1StartY);\n    if (denominator === 0) {\n        if (result.x !== null && result.y !== null) {\n            return result;\n        }\n        else {\n            return false;\n        }\n    }\n    a = line1StartY - line2StartY;\n    b = line1StartX - line2StartX;\n    numerator1 = (line2EndX - line2StartX) * a - (line2EndY - line2StartY) * b;\n    numerator2 = (line1EndX - line1StartX) * a - (line1EndY - line1StartY) * b;\n    a = numerator1 / denominator;\n    b = numerator2 / denominator;\n    // if we cast these lines infinitely in both directions, they intersect here:\n    result.x = line1StartX + a * (line1EndX - line1StartX);\n    result.y = line1StartY + a * (line1EndY - line1StartY);\n    // if line1 is a segment and line2 is infinite, they intersect if:\n    if (a >= 0 && a <= 1) {\n        result.onLine1 = true;\n    }\n    // if line2 is a segment and line1 is infinite, they intersect if:\n    if (b >= 0 && b <= 1) {\n        result.onLine2 = true;\n    }\n    // if line1 and line2 are segments, they intersect if both of the above are true\n    if (result.onLine1 && result.onLine2) {\n        return [result.x, result.y];\n    }\n    else {\n        return false;\n    }\n}\n","import React, { useState } from 'react'\nimport django from 'django'\nimport { useCreateSearchProfile } from '../kiezradar/use-create-search-profile'\nimport Modal from '../contrib/Modal'\nimport { alert as Alert } from 'adhocracy4'\nimport { useSearchParams } from 'react-router-dom'\n\nconst modalTitleText = django.gettext('Login or register to save a search profile')\nconst modalMessageText = django.gettext('To save your search profile and access it later, please log in or create an account.')\nconst modalButtonText = django.gettext('Continue to login')\nconst alertTitleText = django.gettext('Please note, your current selection won’t be saved automatically')\nconst alertMessageText = django.gettext('After logging in, you can create and save a new search profile.')\nconst viewText = django.gettext('View search profiles')\nconst limitText = django.gettext('You can only create 10 search profiles.')\nconst saveText = django.gettext('Save search profile')\nconst savingText = django.gettext('Saving')\n\nexport default function SaveSearchProfile ({\n  isAuthenticated,\n  searchProfile,\n  ...props\n}) {\n  const [searchParams] = useSearchParams()\n  const [modal, setModal] = useState(false)\n\n  if (!isAuthenticated) {\n    return (\n      <>\n        {modal && (\n          <Modal\n            title={modalTitleText}\n            message={modalMessageText}\n            buttonText={modalButtonText}\n            onConfirm={() => {\n              const nextUrl = window.location.pathname + '?' + searchParams.toString()\n              const encodedNext = encodeURIComponent(nextUrl)\n              window.location = '/accounts/login/?next=' + encodedNext\n              setModal(false)\n            }}\n            onClose={() => setModal(false)}\n          >\n            <Alert\n              title={alertTitleText}\n              message={alertMessageText}\n            />\n          </Modal>\n        )}\n        <div className=\"save-search-profile\">\n          <button\n            className=\"save-search-profile__action save-search-profile__action--button\"\n            type=\"button\"\n            onClick={() => setModal(!modal)}\n            aria-haspopup=\"dialog\"\n            aria-expanded={modal}\n          >\n            <Icon />\n            {saveText}\n          </button>\n        </div>\n      </>\n    )\n  }\n\n  if (searchProfile) {\n    return (\n      <div className=\"save-search-profile\">\n        <a className=\"save-search-profile__action save-search-profile__action--link\" href=\"/account/search-profiles\">\n          {viewText}\n        </a>\n      </div>\n    )\n  }\n\n  return (\n    <div className=\"save-search-profile\">\n      <CreateSearchProfileButton {...props} />\n    </div>\n  )\n}\n\nfunction CreateSearchProfileButton ({\n  districts,\n  organisations,\n  topicChoices,\n  participationChoices,\n  projectStatus,\n  kiezradars,\n  searchProfilesApiUrl,\n  appliedFilters,\n  searchProfilesCount,\n  onSearchProfileCreate\n}) {\n  const { loading, limitExceeded, error, createSearchProfile } = useCreateSearchProfile({\n    searchProfilesApiUrl,\n    appliedFilters,\n    districts,\n    organisations,\n    topicChoices,\n    participationChoices,\n    projectStatus,\n    kiezradars,\n    searchProfilesCount,\n    onSearchProfileCreate\n  })\n\n  if (limitExceeded) {\n    return <span className=\"save-search-profile__action\">{limitText}</span>\n  }\n\n  if (error) {\n    return <span className=\"save-search-profile__error\">{error}</span>\n  }\n\n  return (\n    <button\n      className=\"save-search-profile__action save-search-profile__action--button\"\n      type=\"button\"\n      onClick={createSearchProfile}\n      disabled={loading}\n    >\n      {loading ? savingText + '...' : <><Icon />{saveText}</>}\n    </button>\n  )\n}\n\nfunction Icon () {\n  return <i className=\"fa-solid fa-heart mr-1\" aria-hidden=\"true\" />\n}\n","\r\nif (typeof module !== 'undefined' && module.exports) {\r\n    module.exports = {\r\n      DBSCAN: require('./DBSCAN.js'),\r\n      KMEANS: require('./KMEANS.js'),\r\n      OPTICS: require('./OPTICS.js'),\r\n      PriorityQueue: require('./PriorityQueue.js')\r\n    };\r\n}\r\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","import React from 'react'\nimport { createRoot } from 'react-dom/client'\nimport ProjectsListMapBox from '../projects/ProjectsListMapBox'\nimport { BrowserRouter } from 'react-router-dom'\n\nfunction init () {\n  const plansMapBox = document.querySelectorAll('[data-map=\"plans\"]')\n  plansMapBox.forEach(el => {\n    const projectApiUrl = el.getAttribute('data-projects-url')\n    const extprojectApiUrl = el.getAttribute('data-extprojects-url')\n    const privateprojectApiUrl = el.getAttribute('data-privateprojects-url')\n    const plansApiUrl = el.getAttribute('data-plans-url')\n    const attribution = el.getAttribute('data-attribution')\n    const baseUrl = el.getAttribute('data-baseurl')\n    const bounds = JSON.parse(el.getAttribute('data-bounds'))\n    const kiezradars = el.getAttribute('data-kiezradars') && JSON.parse(el.getAttribute('data-kiezradars'))\n    const searchProfile = el.getAttribute('data-search-profile') && JSON.parse(el.getAttribute('data-search-profile'))\n    const districtPolygons = el.getAttribute('data-district-polygons') && JSON.parse(el.getAttribute('data-district-polygons'))\n    const polygon = el.getAttribute('data-polygon') && JSON.parse(el.getAttribute('data-polygon'))\n    const selectedDistrict = el.getAttribute('data-selected-district')\n    const selectedTopic = el.getAttribute('data-selected-topic')\n    const districts = JSON.parse(el.getAttribute('data-districts'))\n    const organisations = JSON.parse(el.getAttribute('data-organisations'))\n    const topicChoices = JSON.parse(el.getAttribute('data-topic-choices'))\n    const mapboxToken = el.getAttribute('data-mapbox-token')\n    const omtToken = el.getAttribute('data-omt-token')\n    const useVectorMap = el.getAttribute('data-use_vector_map')\n    const participationChoices = JSON.parse(el.getAttribute('data-participation-choices'))\n    const searchProfilesApiUrl = el.getAttribute('data-search-profiles-api-url')\n    const searchProfilesUrl = el.getAttribute('data-search-profiles-url')\n    const searchProfilesCount = JSON.parse(el.getAttribute('data-search-profiles-count'))\n    const isAuthenticated = JSON.parse(el.getAttribute('data-is-authenticated'))\n    const projectStatus = JSON.parse(el.getAttribute('data-project-status'))\n    const root = createRoot(el)\n    root.render(\n      <React.StrictMode>\n        <BrowserRouter>\n          <ProjectsListMapBox\n            selectedDistrict={selectedDistrict}\n            selectedTopic={selectedTopic}\n            projectApiUrl={projectApiUrl}\n            extprojectApiUrl={extprojectApiUrl}\n            privateprojectApiUrl={privateprojectApiUrl}\n            plansApiUrl={plansApiUrl}\n            attribution={attribution}\n            baseUrl={baseUrl}\n            mapboxToken={mapboxToken}\n            omtToken={omtToken}\n            useVectorMap={useVectorMap}\n            bounds={bounds}\n            organisations={organisations}\n            districts={districts}\n            districtPolygons={districtPolygons}\n            polygon={polygon}\n            topicChoices={topicChoices}\n            participationChoices={participationChoices}\n            kiezradars={kiezradars}\n            searchProfile={searchProfile}\n            searchProfilesApiUrl={searchProfilesApiUrl}\n            searchProfilesUrl={searchProfilesUrl}\n            searchProfilesCount={searchProfilesCount}\n            isAuthenticated={isAuthenticated}\n            projectStatus={projectStatus}\n          />\n        </BrowserRouter>\n      </React.StrictMode>)\n  })\n}\n\ndocument.addEventListener('DOMContentLoaded', init, false)\ndocument.addEventListener('a4.embed.ready', init, false)\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar boolean_intersects_1 = __importDefault(require(\"@turf/boolean-intersects\"));\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Creates a grid of rectangles from a bounding box, {@link Feature} or {@link FeatureCollection}.\n *\n * @name rectangleGrid\n * @param {Array<number>} bbox extent in [minX, minY, maxX, maxY] order\n * @param {number} cellWidth of each cell, in units\n * @param {number} cellHeight of each cell, in units\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] units (\"degrees\", \"radians\", \"miles\", \"kilometers\") that the given cellWidth\n * and cellHeight are expressed in. Converted at the southern border.\n * @param {Feature<Polygon|MultiPolygon>} [options.mask] if passed a Polygon or MultiPolygon,\n * the grid Points will be created only inside it\n * @param {Object} [options.properties={}] passed to each point of the grid\n * @returns {FeatureCollection<Polygon>} a grid of polygons\n * @example\n * var bbox = [-95, 30 ,-85, 40];\n * var cellWidth = 50;\n * var cellHeight = 20;\n * var options = {units: 'miles'};\n *\n * var rectangleGrid = turf.rectangleGrid(bbox, cellWidth, cellHeight, options);\n *\n * //addToMap\n * var addToMap = [rectangleGrid]\n */\nfunction rectangleGrid(bbox, cellWidth, cellHeight, options) {\n    if (options === void 0) { options = {}; }\n    // Containers\n    var results = [];\n    var west = bbox[0];\n    var south = bbox[1];\n    var east = bbox[2];\n    var north = bbox[3];\n    var xFraction = cellWidth / distance_1.default([west, south], [east, south], options);\n    var cellWidthDeg = xFraction * (east - west);\n    var yFraction = cellHeight / distance_1.default([west, south], [west, north], options);\n    var cellHeightDeg = yFraction * (north - south);\n    // rows & columns\n    var bboxWidth = east - west;\n    var bboxHeight = north - south;\n    var columns = Math.floor(bboxWidth / cellWidthDeg);\n    var rows = Math.floor(bboxHeight / cellHeightDeg);\n    // if the grid does not fill the bbox perfectly, center it.\n    var deltaX = (bboxWidth - columns * cellWidthDeg) / 2;\n    var deltaY = (bboxHeight - rows * cellHeightDeg) / 2;\n    // iterate over columns & rows\n    var currentX = west + deltaX;\n    for (var column = 0; column < columns; column++) {\n        var currentY = south + deltaY;\n        for (var row = 0; row < rows; row++) {\n            var cellPoly = helpers_1.polygon([\n                [\n                    [currentX, currentY],\n                    [currentX, currentY + cellHeightDeg],\n                    [currentX + cellWidthDeg, currentY + cellHeightDeg],\n                    [currentX + cellWidthDeg, currentY],\n                    [currentX, currentY],\n                ],\n            ], options.properties);\n            if (options.mask) {\n                if (boolean_intersects_1.default(options.mask, cellPoly)) {\n                    results.push(cellPoly);\n                }\n            }\n            else {\n                results.push(cellPoly);\n            }\n            currentY += cellHeightDeg;\n        }\n        currentX += cellWidthDeg;\n    }\n    return helpers_1.featureCollection(results);\n}\nexports.default = rectangleGrid;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://en.wikipedia.org/wiki/Rhumb_line\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Returns the destination {@link Point} having travelled the given distance along a Rhumb line from the\n * origin Point with the (varant) given bearing.\n *\n * @name rhumbDestination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the starting point\n * @param {number} bearing varant bearing angle ranging from -180 to 180 degrees from north\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @param {Object} [options.properties={}] translate properties to destination point\n * @returns {Feature<Point>} Destination point.\n * @example\n * var pt = turf.point([-75.343, 39.984], {\"marker-color\": \"F00\"});\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.rhumbDestination(pt, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [pt, destination]\n * destination.properties['marker-color'] = '#00F';\n */\nfunction rhumbDestination(origin, distance, bearing, options) {\n    if (options === void 0) { options = {}; }\n    var wasNegativeDistance = distance < 0;\n    var distanceInMeters = helpers_1.convertLength(Math.abs(distance), options.units, \"meters\");\n    if (wasNegativeDistance)\n        distanceInMeters = -Math.abs(distanceInMeters);\n    var coords = invariant_1.getCoord(origin);\n    var destination = calculateRhumbDestination(coords, distanceInMeters, bearing);\n    // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n    // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n    destination[0] +=\n        destination[0] - coords[0] > 180\n            ? -360\n            : coords[0] - destination[0] > 180\n                ? 360\n                : 0;\n    return helpers_1.point(destination, options.properties);\n}\n/**\n * Returns the destination point having travelled along a rhumb line from origin point the given\n * distance on the  given bearing.\n * Adapted from Geodesy: http://www.movable-type.co.uk/scripts/latlong.html#rhumblines\n *\n * @private\n * @param   {Array<number>} origin - point\n * @param   {number} distance - Distance travelled, in same units as earth radius (default: metres).\n * @param   {number} bearing - Bearing in degrees from north.\n * @param   {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {Array<number>} Destination point.\n */\nfunction calculateRhumbDestination(origin, distance, bearing, radius) {\n    // φ => phi\n    // λ => lambda\n    // ψ => psi\n    // Δ => Delta\n    // δ => delta\n    // θ => theta\n    radius = radius === undefined ? helpers_1.earthRadius : Number(radius);\n    var delta = distance / radius; // angular distance in radians\n    var lambda1 = (origin[0] * Math.PI) / 180; // to radians, but without normalize to 𝜋\n    var phi1 = helpers_1.degreesToRadians(origin[1]);\n    var theta = helpers_1.degreesToRadians(bearing);\n    var DeltaPhi = delta * Math.cos(theta);\n    var phi2 = phi1 + DeltaPhi;\n    // check for some daft bugger going past the pole, normalise latitude if so\n    if (Math.abs(phi2) > Math.PI / 2) {\n        phi2 = phi2 > 0 ? Math.PI - phi2 : -Math.PI - phi2;\n    }\n    var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n    // E-W course becomes ill-conditioned with 0/0\n    var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1);\n    var DeltaLambda = (delta * Math.sin(theta)) / q;\n    var lambda2 = lambda1 + DeltaLambda;\n    return [\n        (((lambda2 * 180) / Math.PI + 540) % 360) - 180,\n        (phi2 * 180) / Math.PI,\n    ]; // normalise to −180..+180°\n}\nexports.default = rhumbDestination;\n","'use strict';\n\nvar center = require('@turf/center');\nvar turfJsts = require('turf-jsts');\nvar meta = require('@turf/meta');\nvar d3Geo = require('d3-geo');\nvar helpers = require('@turf/helpers');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar center__default = /*#__PURE__*/_interopDefaultLegacy(center);\n\n/**\n * Calculates a buffer for input features for a given radius. Units supported are miles, kilometers, and degrees.\n *\n * When using a negative radius, the resulting geometry may be invalid if\n * it's too small compared to the radius magnitude. If the input is a\n * FeatureCollection, only valid members will be returned in the output\n * FeatureCollection - i.e., the output collection may have fewer members than\n * the input, or even be empty.\n *\n * @name buffer\n * @param {FeatureCollection|Geometry|Feature<any>} geojson input to be buffered\n * @param {number} radius distance to draw the buffer (negative values are allowed)\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=\"kilometers\"] any of the options supported by turf units\n * @param {number} [options.steps=8] number of steps\n * @returns {FeatureCollection|Feature<Polygon|MultiPolygon>|undefined} buffered features\n * @example\n * var point = turf.point([-90.548630, 14.616599]);\n * var buffered = turf.buffer(point, 500, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [point, buffered]\n */\nfunction buffer(geojson, radius, options) {\n  // Optional params\n  options = options || {};\n\n  // use user supplied options or default values\n  var units = options.units || \"kilometers\";\n  var steps = options.steps || 8;\n\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n  if (typeof options !== \"object\") throw new Error(\"options must be an object\");\n  if (typeof steps !== \"number\") throw new Error(\"steps must be an number\");\n\n  // Allow negative buffers (\"erosion\") or zero-sized buffers (\"repair geometry\")\n  if (radius === undefined) throw new Error(\"radius is required\");\n  if (steps <= 0) throw new Error(\"steps must be greater than 0\");\n\n  var results = [];\n  switch (geojson.type) {\n    case \"GeometryCollection\":\n      meta.geomEach(geojson, function (geometry) {\n        var buffered = bufferFeature(geometry, radius, units, steps);\n        if (buffered) results.push(buffered);\n      });\n      return helpers.featureCollection(results);\n    case \"FeatureCollection\":\n      meta.featureEach(geojson, function (feature) {\n        var multiBuffered = bufferFeature(feature, radius, units, steps);\n        if (multiBuffered) {\n          meta.featureEach(multiBuffered, function (buffered) {\n            if (buffered) results.push(buffered);\n          });\n        }\n      });\n      return helpers.featureCollection(results);\n  }\n  return bufferFeature(geojson, radius, units, steps);\n}\n\n/**\n * Buffer single Feature/Geometry\n *\n * @private\n * @param {Feature<any>} geojson input to be buffered\n * @param {number} radius distance to draw the buffer\n * @param {string} [units='kilometers'] any of the options supported by turf units\n * @param {number} [steps=8] number of steps\n * @returns {Feature<Polygon|MultiPolygon>} buffered feature\n */\nfunction bufferFeature(geojson, radius, units, steps) {\n  var properties = geojson.properties || {};\n  var geometry = geojson.type === \"Feature\" ? geojson.geometry : geojson;\n\n  // Geometry Types faster than jsts\n  if (geometry.type === \"GeometryCollection\") {\n    var results = [];\n    meta.geomEach(geojson, function (geometry) {\n      var buffered = bufferFeature(geometry, radius, units, steps);\n      if (buffered) results.push(buffered);\n    });\n    return helpers.featureCollection(results);\n  }\n\n  // Project GeoJSON to Azimuthal Equidistant projection (convert to Meters)\n  var projection = defineProjection(geometry);\n  var projected = {\n    type: geometry.type,\n    coordinates: projectCoords(geometry.coordinates, projection),\n  };\n\n  // JSTS buffer operation\n  var reader = new turfJsts.GeoJSONReader();\n  var geom = reader.read(projected);\n  var distance = helpers.radiansToLength(helpers.lengthToRadians(radius, units), \"meters\");\n  var buffered = turfJsts.BufferOp.bufferOp(geom, distance, steps);\n  var writer = new turfJsts.GeoJSONWriter();\n  buffered = writer.write(buffered);\n\n  // Detect if empty geometries\n  if (coordsIsNaN(buffered.coordinates)) return undefined;\n\n  // Unproject coordinates (convert to Degrees)\n  var result = {\n    type: buffered.type,\n    coordinates: unprojectCoords(buffered.coordinates, projection),\n  };\n\n  return helpers.feature(result, properties);\n}\n\n/**\n * Coordinates isNaN\n *\n * @private\n * @param {Array<any>} coords GeoJSON Coordinates\n * @returns {boolean} if NaN exists\n */\nfunction coordsIsNaN(coords) {\n  if (Array.isArray(coords[0])) return coordsIsNaN(coords[0]);\n  return isNaN(coords[0]);\n}\n\n/**\n * Project coordinates to projection\n *\n * @private\n * @param {Array<any>} coords to project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array<any>} projected coordinates\n */\nfunction projectCoords(coords, proj) {\n  if (typeof coords[0] !== \"object\") return proj(coords);\n  return coords.map(function (coord) {\n    return projectCoords(coord, proj);\n  });\n}\n\n/**\n * Un-Project coordinates to projection\n *\n * @private\n * @param {Array<any>} coords to un-project\n * @param {GeoProjection} proj D3 Geo Projection\n * @returns {Array<any>} un-projected coordinates\n */\nfunction unprojectCoords(coords, proj) {\n  if (typeof coords[0] !== \"object\") return proj.invert(coords);\n  return coords.map(function (coord) {\n    return unprojectCoords(coord, proj);\n  });\n}\n\n/**\n * Define Azimuthal Equidistant projection\n *\n * @private\n * @param {Geometry|Feature<any>} geojson Base projection on center of GeoJSON\n * @returns {GeoProjection} D3 Geo Azimuthal Equidistant Projection\n */\nfunction defineProjection(geojson) {\n  var coords = center__default['default'](geojson).geometry.coordinates;\n  var rotation = [-coords[0], -coords[1]];\n  return d3Geo.geoAzimuthalEquidistant().rotate(rotation).scale(helpers.earthRadius);\n}\n\nmodule.exports = buffer;\nmodule.exports.default = buffer;\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\nvar rbush = require('rbush');\nvar area = require('@turf/area');\nvar booleanPointInPolygon = require('@turf/boolean-point-in-polygon');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar rbush__default = /*#__PURE__*/_interopDefaultLegacy(rbush);\nvar area__default = /*#__PURE__*/_interopDefaultLegacy(area);\nvar booleanPointInPolygon__default = /*#__PURE__*/_interopDefaultLegacy(booleanPointInPolygon);\n\n// Find self-intersections in geojson polygon (possibly with interior rings)\n\nfunction isects (feature, filterFn, useSpatialIndex) {\n  if (feature.geometry.type !== \"Polygon\")\n    throw new Error(\"The input feature must be a Polygon\");\n  if (useSpatialIndex === undefined) useSpatialIndex = 1;\n\n  var coord = feature.geometry.coordinates;\n\n  var output = [];\n  var seen = {};\n\n  if (useSpatialIndex) {\n    var allEdgesAsRbushTreeItems = [];\n    for (var ring0 = 0; ring0 < coord.length; ring0++) {\n      for (var edge0 = 0; edge0 < coord[ring0].length - 1; edge0++) {\n        allEdgesAsRbushTreeItems.push(rbushTreeItem(ring0, edge0));\n      }\n    }\n    var tree = rbush__default['default']();\n    tree.load(allEdgesAsRbushTreeItems);\n  }\n\n  for (var ringA = 0; ringA < coord.length; ringA++) {\n    for (var edgeA = 0; edgeA < coord[ringA].length - 1; edgeA++) {\n      if (useSpatialIndex) {\n        var bboxOverlaps = tree.search(rbushTreeItem(ringA, edgeA));\n        bboxOverlaps.forEach(function (bboxIsect) {\n          var ring1 = bboxIsect.ring;\n          var edge1 = bboxIsect.edge;\n          ifIsectAddToOutput(ringA, edgeA, ring1, edge1);\n        });\n      } else {\n        for (var ring1 = 0; ring1 < coord.length; ring1++) {\n          for (var edge1 = 0; edge1 < coord[ring1].length - 1; edge1++) {\n            // TODO: speedup possible if only interested in unique: start last two loops at ringA and edgeA+1\n            ifIsectAddToOutput(ringA, edgeA, ring1, edge1);\n          }\n        }\n      }\n    }\n  }\n\n  if (!filterFn)\n    output = {\n      type: \"Feature\",\n      geometry: { type: \"MultiPoint\", coordinates: output },\n    };\n  return output;\n\n  // Function to check if two edges intersect and add the intersection to the output\n  function ifIsectAddToOutput(ring0, edge0, ring1, edge1) {\n    var start0 = coord[ring0][edge0];\n    var end0 = coord[ring0][edge0 + 1];\n    var start1 = coord[ring1][edge1];\n    var end1 = coord[ring1][edge1 + 1];\n\n    var isect = intersect(start0, end0, start1, end1);\n\n    if (isect === null) return; // discard parallels and coincidence\n    var frac0;\n    var frac1;\n    if (end0[0] !== start0[0]) {\n      frac0 = (isect[0] - start0[0]) / (end0[0] - start0[0]);\n    } else {\n      frac0 = (isect[1] - start0[1]) / (end0[1] - start0[1]);\n    }\n    if (end1[0] !== start1[0]) {\n      frac1 = (isect[0] - start1[0]) / (end1[0] - start1[0]);\n    } else {\n      frac1 = (isect[1] - start1[1]) / (end1[1] - start1[1]);\n    }\n    if (frac0 >= 1 || frac0 <= 0 || frac1 >= 1 || frac1 <= 0) return; // require segment intersection\n\n    var key = isect;\n    var unique = !seen[key];\n    if (unique) {\n      seen[key] = true;\n    }\n\n    if (filterFn) {\n      output.push(\n        filterFn(\n          isect,\n          ring0,\n          edge0,\n          start0,\n          end0,\n          frac0,\n          ring1,\n          edge1,\n          start1,\n          end1,\n          frac1,\n          unique\n        )\n      );\n    } else {\n      output.push(isect);\n    }\n  }\n\n  // Function to return a rbush tree item given an ring and edge number\n  function rbushTreeItem(ring, edge) {\n    var start = coord[ring][edge];\n    var end = coord[ring][edge + 1];\n    var minX;\n    var maxX;\n    var minY;\n    var maxY;\n    if (start[0] < end[0]) {\n      minX = start[0];\n      maxX = end[0];\n    } else {\n      minX = end[0];\n      maxX = start[0];\n    }\n    if (start[1] < end[1]) {\n      minY = start[1];\n      maxY = end[1];\n    } else {\n      minY = end[1];\n      maxY = start[1];\n    }\n    return {\n      minX: minX,\n      minY: minY,\n      maxX: maxX,\n      maxY: maxY,\n      ring: ring,\n      edge: edge,\n    };\n  }\n}\n\n// Function to compute where two lines (not segments) intersect. From https://en.wikipedia.org/wiki/Line%E2%80%93line_intersection\nfunction intersect(start0, end0, start1, end1) {\n  if (\n    equalArrays(start0, start1) ||\n    equalArrays(start0, end1) ||\n    equalArrays(end0, start1) ||\n    equalArrays(end1, start1)\n  )\n    return null;\n  var x0 = start0[0],\n    y0 = start0[1],\n    x1 = end0[0],\n    y1 = end0[1],\n    x2 = start1[0],\n    y2 = start1[1],\n    x3 = end1[0],\n    y3 = end1[1];\n  var denom = (x0 - x1) * (y2 - y3) - (y0 - y1) * (x2 - x3);\n  if (denom === 0) return null;\n  var x4 =\n    ((x0 * y1 - y0 * x1) * (x2 - x3) - (x0 - x1) * (x2 * y3 - y2 * x3)) / denom;\n  var y4 =\n    ((x0 * y1 - y0 * x1) * (y2 - y3) - (y0 - y1) * (x2 * y3 - y2 * x3)) / denom;\n  return [x4, y4];\n}\n\n// Function to compare Arrays of numbers. From http://stackoverflow.com/questions/7837456/how-to-compare-arrays-in-javascript\nfunction equalArrays(array1, array2) {\n  // if the other array is a falsy value, return\n  if (!array1 || !array2) return false;\n\n  // compare lengths - can save a lot of time\n  if (array1.length !== array2.length) return false;\n\n  for (var i = 0, l = array1.length; i < l; i++) {\n    // Check if we have nested arrays\n    if (array1[i] instanceof Array && array2[i] instanceof Array) {\n      // recurse into the nested arrays\n      if (!equalArrays(array1[i], array2[i])) return false;\n    } else if (array1[i] !== array2[i]) {\n      // Warning - two different object instances will never be equal: {x:20} !== {x:20}\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Takes a complex (i.e. self-intersecting) geojson polygon, and breaks it down into its composite simple, non-self-intersecting one-ring polygons.\n *\n * @module simplepolygon\n * @param {Feature} feature Input polygon. This polygon may be unconform the {@link https://en.wikipedia.org/wiki/Simple_Features|Simple Features standard} in the sense that it's inner and outer rings may cross-intersect or self-intersect, that the outer ring must not contain the optional inner rings and that the winding number must not be positive for the outer and negative for the inner rings.\n * @return {FeatureCollection} Feature collection containing the simple, non-self-intersecting one-ring polygon features that the complex polygon is composed of. These simple polygons have properties such as their parent polygon, winding number and net winding number.\n *\n * @example\n * var poly = {\n *   \"type\": \"Feature\",\n *   \"geometry\": {\n *     \"type\": \"Polygon\",\n *     \"coordinates\": [[[0,0],[2,0],[0,2],[2,2],[0,0]]]\n *   }\n * };\n *\n * var result = simplepolygon(poly);\n *\n * // =result\n * // which will be a featureCollection of two polygons, one with coordinates [[[0,0],[2,0],[1,1],[0,0]]], parent -1, winding 1 and net winding 1, and one with coordinates [[[1,1],[0,2],[2,2],[1,1]]], parent -1, winding -1 and net winding -1\n */\nfunction simplepolygon (feature) {\n  // Check input\n  if (feature.type != \"Feature\")\n    throw new Error(\"The input must a geojson object of type Feature\");\n  if (feature.geometry === undefined || feature.geometry == null)\n    throw new Error(\n      \"The input must a geojson object with a non-empty geometry\"\n    );\n  if (feature.geometry.type != \"Polygon\")\n    throw new Error(\"The input must be a geojson Polygon\");\n\n  // Process input\n  var numRings = feature.geometry.coordinates.length;\n  var vertices = [];\n  for (var i = 0; i < numRings; i++) {\n    var ring = feature.geometry.coordinates[i];\n    if (!equalArrays$1(ring[0], ring[ring.length - 1])) {\n      ring.push(ring[0]); // Close input ring if it is not\n    }\n    vertices.push.apply(vertices, ring.slice(0, ring.length - 1));\n  }\n  if (!isUnique(vertices))\n    throw new Error(\n      \"The input polygon may not have duplicate vertices (except for the first and last vertex of each ring)\"\n    );\n  var numvertices = vertices.length; // number of input ring vertices, with the last closing vertices not counted\n\n  // Compute self-intersections\n  var selfIsectsData = isects(\n    feature,\n    function filterFn(\n      isect,\n      ring0,\n      edge0,\n      start0,\n      end0,\n      frac0,\n      ring1,\n      edge1,\n      start1,\n      end1,\n      frac1,\n      unique\n    ) {\n      return [\n        isect,\n        ring0,\n        edge0,\n        start0,\n        end0,\n        frac0,\n        ring1,\n        edge1,\n        start1,\n        end1,\n        frac1,\n        unique,\n      ];\n    }\n  );\n  var numSelfIsect = selfIsectsData.length;\n\n  // If no self-intersections are found, the input rings are the output rings. Hence, we must only compute their winding numbers, net winding numbers and (since ohers rings could lie outside the first ring) parents.\n  if (numSelfIsect == 0) {\n    var outputFeatureArray = [];\n    for (var i = 0; i < numRings; i++) {\n      outputFeatureArray.push(\n        helpers.polygon([feature.geometry.coordinates[i]], {\n          parent: -1,\n          winding: windingOfRing(feature.geometry.coordinates[i]),\n        })\n      );\n    }\n    var output = helpers.featureCollection(outputFeatureArray);\n    determineParents();\n    setNetWinding();\n\n    return output;\n  }\n\n  // If self-intersections are found, we will compute the output rings with the help of two intermediate variables\n  // First, we build the pseudo vertex list and intersection list\n  // The Pseudo vertex list is an array with for each ring an array with for each edge an array containing the pseudo-vertices (as made by their constructor) that have this ring and edge as ringAndEdgeIn, sorted for each edge by their fractional distance on this edge. It's length hence equals numRings.\n  var pseudoVtxListByRingAndEdge = [];\n  // The intersection list is an array containing intersections (as made by their constructor). First all numvertices ring-vertex-intersections, then all self-intersections (intra- and inter-ring). The order of the latter is not important but is permanent once given.\n  var isectList = [];\n  // Adding ring-pseudo-vertices to pseudoVtxListByRingAndEdge and ring-vertex-intersections to isectList\n  for (var i = 0; i < numRings; i++) {\n    pseudoVtxListByRingAndEdge.push([]);\n    for (var j = 0; j < feature.geometry.coordinates[i].length - 1; j++) {\n      // Each edge will feature one ring-pseudo-vertex in its array, on the last position. i.e. edge j features the ring-pseudo-vertex of the ring vertex j+1, which has ringAndEdgeIn = [i,j], on the last position.\n      pseudoVtxListByRingAndEdge[i].push([\n        new PseudoVtx(\n          feature.geometry.coordinates[i][\n            modulo(j + 1, feature.geometry.coordinates[i].length - 1)\n          ],\n          1,\n          [i, j],\n          [i, modulo(j + 1, feature.geometry.coordinates[i].length - 1)],\n          undefined\n        ),\n      ]);\n      // The first numvertices elements in isectList correspond to the ring-vertex-intersections\n      isectList.push(\n        new Isect(\n          feature.geometry.coordinates[i][j],\n          [i, modulo(j - 1, feature.geometry.coordinates[i].length - 1)],\n          [i, j],\n          undefined,\n          undefined,\n          false,\n          true\n        )\n      );\n    }\n  }\n  // Adding intersection-pseudo-vertices to pseudoVtxListByRingAndEdge and self-intersections to isectList\n  for (var i = 0; i < numSelfIsect; i++) {\n    // Adding intersection-pseudo-vertices made using selfIsectsData to pseudoVtxListByRingAndEdge's array corresponding to the incomming ring and edge\n    pseudoVtxListByRingAndEdge[selfIsectsData[i][1]][selfIsectsData[i][2]].push(\n      new PseudoVtx(\n        selfIsectsData[i][0],\n        selfIsectsData[i][5],\n        [selfIsectsData[i][1], selfIsectsData[i][2]],\n        [selfIsectsData[i][6], selfIsectsData[i][7]],\n        undefined\n      )\n    );\n    // selfIsectsData contains double mentions of each intersection, but we only want to add them once to isectList\n    if (selfIsectsData[i][11])\n      isectList.push(\n        new Isect(\n          selfIsectsData[i][0],\n          [selfIsectsData[i][1], selfIsectsData[i][2]],\n          [selfIsectsData[i][6], selfIsectsData[i][7]],\n          undefined,\n          undefined,\n          true,\n          true\n        )\n      );\n  }\n  var numIsect = isectList.length;\n  // Sort edge arrays of pseudoVtxListByRingAndEdge by the fractional distance 'param'\n  for (var i = 0; i < pseudoVtxListByRingAndEdge.length; i++) {\n    for (var j = 0; j < pseudoVtxListByRingAndEdge[i].length; j++) {\n      pseudoVtxListByRingAndEdge[i][j].sort(function (a, b) {\n        return a.param < b.param ? -1 : 1;\n      });\n    }\n  }\n\n  // Make a spatial index of intersections, in preperation for the following two steps\n  var allIsectsAsIsectRbushTreeItem = [];\n  for (var i = 0; i < numIsect; i++) {\n    allIsectsAsIsectRbushTreeItem.push({\n      minX: isectList[i].coord[0],\n      minY: isectList[i].coord[1],\n      maxX: isectList[i].coord[0],\n      maxY: isectList[i].coord[1],\n      index: i,\n    }); // could pass isect: isectList[i], but not necessary\n  }\n  var isectRbushTree = rbush__default['default']();\n  isectRbushTree.load(allIsectsAsIsectRbushTreeItem);\n\n  // Now we will teach each intersection in isectList which is the next intersection along both it's [ring, edge]'s, in two steps.\n  // First, we find the next intersection for each pseudo-vertex in pseudoVtxListByRingAndEdge:\n  // For each pseudovertex in pseudoVtxListByRingAndEdge (3 loops) look at the next pseudovertex on that edge and find the corresponding intersection by comparing coordinates\n  for (var i = 0; i < pseudoVtxListByRingAndEdge.length; i++) {\n    for (var j = 0; j < pseudoVtxListByRingAndEdge[i].length; j++) {\n      for (var k = 0; k < pseudoVtxListByRingAndEdge[i][j].length; k++) {\n        var coordToFind;\n        if (k == pseudoVtxListByRingAndEdge[i][j].length - 1) {\n          // If it's the last pseudoVertex on that edge, then the next pseudoVertex is the first one on the next edge of that ring.\n          coordToFind =\n            pseudoVtxListByRingAndEdge[i][\n              modulo(j + 1, feature.geometry.coordinates[i].length - 1)\n            ][0].coord;\n        } else {\n          coordToFind = pseudoVtxListByRingAndEdge[i][j][k + 1].coord;\n        }\n        var IsectRbushTreeItemFound = isectRbushTree.search({\n          minX: coordToFind[0],\n          minY: coordToFind[1],\n          maxX: coordToFind[0],\n          maxY: coordToFind[1],\n        })[0]; // We can take [0] of the result, because there is only one isect correponding to a pseudo-vertex\n        pseudoVtxListByRingAndEdge[i][j][k].nxtIsectAlongEdgeIn =\n          IsectRbushTreeItemFound.index;\n      }\n    }\n  }\n\n  // Second, we port this knowledge of the next intersection over to the intersections in isectList, by finding the intersection corresponding to each pseudo-vertex and copying the pseudo-vertex' knownledge of the next-intersection over to the intersection\n  for (var i = 0; i < pseudoVtxListByRingAndEdge.length; i++) {\n    for (var j = 0; j < pseudoVtxListByRingAndEdge[i].length; j++) {\n      for (var k = 0; k < pseudoVtxListByRingAndEdge[i][j].length; k++) {\n        var coordToFind = pseudoVtxListByRingAndEdge[i][j][k].coord;\n        var IsectRbushTreeItemFound = isectRbushTree.search({\n          minX: coordToFind[0],\n          minY: coordToFind[1],\n          maxX: coordToFind[0],\n          maxY: coordToFind[1],\n        })[0]; // We can take [0] of the result, because there is only one isect correponding to a pseudo-vertex\n        var l = IsectRbushTreeItemFound.index;\n        if (l < numvertices) {\n          // Special treatment at ring-vertices: we correct the misnaming that happened in the previous block, since ringAndEdgeOut = ringAndEdge2 for ring vertices.\n          isectList[l].nxtIsectAlongRingAndEdge2 =\n            pseudoVtxListByRingAndEdge[i][j][k].nxtIsectAlongEdgeIn;\n        } else {\n          // Port the knowledge of the next intersection from the pseudo-vertices to the intersections, depending on how the edges are labeled in the pseudo-vertex and intersection.\n          if (\n            equalArrays$1(\n              isectList[l].ringAndEdge1,\n              pseudoVtxListByRingAndEdge[i][j][k].ringAndEdgeIn\n            )\n          ) {\n            isectList[l].nxtIsectAlongRingAndEdge1 =\n              pseudoVtxListByRingAndEdge[i][j][k].nxtIsectAlongEdgeIn;\n          } else {\n            isectList[l].nxtIsectAlongRingAndEdge2 =\n              pseudoVtxListByRingAndEdge[i][j][k].nxtIsectAlongEdgeIn;\n          }\n        }\n      }\n    }\n  }\n  // This explains why, eventhough when we will walk away from an intersection, we will walk way from the corresponding pseudo-vertex along edgeOut, pseudo-vertices have the property 'nxtIsectAlongEdgeIn' in stead of some propery 'nxtPseudoVtxAlongEdgeOut'. This is because this property (which is easy to find out) is used in the above for nxtIsectAlongRingAndEdge1 and nxtIsectAlongRingAndEdge2!\n\n  // Before we start walking over the intersections to build the output rings, we prepare a queue that stores information on intersections we still have to deal with, and put at least one intersection in it.\n  // This queue will contain information on intersections where we can start walking from once the current walk is finished, and its parent output ring (the smallest output ring it lies within, -1 if no parent or parent unknown yet) and its winding number (which we can already determine).\n  var queue = [];\n  // For each output ring, add the ring-vertex-intersection with the smalles x-value (i.e. the left-most) as a start intersection. By choosing such an extremal intersections, we are sure to start at an intersection that is a convex vertex of its output ring. By adding them all to the queue, we are sure that no rings will be forgotten. If due to ring-intersections such an intersection will be encountered while walking, it will be removed from the queue.\n  var i = 0;\n  for (var j = 0; j < numRings; j++) {\n    var leftIsect = i;\n    for (var k = 0; k < feature.geometry.coordinates[j].length - 1; k++) {\n      if (isectList[i].coord[0] < isectList[leftIsect].coord[0]) {\n        leftIsect = i;\n      }\n      i++;\n    }\n    // Compute winding at this left-most ring-vertex-intersection. We thus this by using our knowledge that this extremal vertex must be a convex vertex.\n    // We first find the intersection before and after it, and then use them to determine the winding number of the corresponding output ring, since we know that an extremal vertex of a simple, non-self-intersecting ring is always convex, so the only reason it would not be is because the winding number we use to compute it is wrong\n    var isectAfterLeftIsect = isectList[leftIsect].nxtIsectAlongRingAndEdge2;\n    for (var k = 0; k < isectList.length; k++) {\n      if (\n        isectList[k].nxtIsectAlongRingAndEdge1 == leftIsect ||\n        isectList[k].nxtIsectAlongRingAndEdge2 == leftIsect\n      ) {\n        var isectBeforeLeftIsect = k;\n        break;\n      }\n    }\n    var windingAtIsect = isConvex(\n      [\n        isectList[isectBeforeLeftIsect].coord,\n        isectList[leftIsect].coord,\n        isectList[isectAfterLeftIsect].coord,\n      ],\n      true\n    )\n      ? 1\n      : -1;\n\n    queue.push({ isect: leftIsect, parent: -1, winding: windingAtIsect });\n  }\n  // Sort the queue by the same criterion used to find the leftIsect: the left-most leftIsect must be last in the queue, such that it will be popped first, such that we will work from out to in regarding input rings. This assumtion is used when predicting the winding number and parent of a new queue member.\n  queue.sort(function (a, b) {\n    return isectList[a.isect].coord > isectList[b.isect].coord ? -1 : 1;\n  });\n\n  // Initialise output\n  var outputFeatureArray = [];\n\n  // While the queue is not empty, take the last object (i.e. its intersection) out and start making an output ring by walking in the direction that has not been walked away over yet.\n  while (queue.length > 0) {\n    // Get the last object out of the queue\n    var popped = queue.pop();\n    var startIsect = popped.isect;\n    var currentOutputRingParent = popped.parent;\n    var currentOutputRingWinding = popped.winding;\n    // Make new output ring and add vertex from starting intersection\n    var currentOutputRing = outputFeatureArray.length;\n    var currentOutputRingCoords = [isectList[startIsect].coord];\n    // Set up the variables used while walking over intersections: 'currentIsect', 'nxtIsect' and 'walkingRingAndEdge'\n    var currentIsect = startIsect;\n    if (isectList[startIsect].ringAndEdge1Walkable) {\n      var walkingRingAndEdge = isectList[startIsect].ringAndEdge1;\n      var nxtIsect = isectList[startIsect].nxtIsectAlongRingAndEdge1;\n    } else {\n      var walkingRingAndEdge = isectList[startIsect].ringAndEdge2;\n      var nxtIsect = isectList[startIsect].nxtIsectAlongRingAndEdge2;\n    }\n    // While we have not arrived back at the same intersection, keep walking\n    while (\n      !equalArrays$1(isectList[startIsect].coord, isectList[nxtIsect].coord)\n    ) {\n      currentOutputRingCoords.push(isectList[nxtIsect].coord);\n      // If the next intersection is queued, we can remove it, because we will go there now.\n      var nxtIsectInQueue = undefined;\n      for (var i = 0; i < queue.length; i++) {\n        if (queue[i].isect == nxtIsect) {\n          nxtIsectInQueue = i;\n          break;\n        }\n      }\n      if (nxtIsectInQueue != undefined) {\n        queue.splice(nxtIsectInQueue, 1);\n      }\n      // Arriving at this new intersection, we know which will be our next walking ring and edge (if we came from 1 we will walk away from 2 and vice versa),\n      // So we can set it as our new walking ring and intersection and remember that we (will) have walked over it\n      // If we have never walked away from this new intersection along the other ring and edge then we will soon do, add the intersection (and the parent wand winding number) to the queue\n      // (We can predict the winding number and parent as follows: if the edge is convex, the other output ring started from there will have the alternate winding and lie outside of the current one, and thus have the same parent ring as the current ring. Otherwise, it will have the same winding number and lie inside of the current ring. We are, however, only sure of this of an output ring started from there does not enclose the current ring. This is why the initial queue's intersections must be sorted such that outer ones come out first.)\n      // We then update the other two walking variables.\n      if (equalArrays$1(walkingRingAndEdge, isectList[nxtIsect].ringAndEdge1)) {\n        walkingRingAndEdge = isectList[nxtIsect].ringAndEdge2;\n        isectList[nxtIsect].ringAndEdge2Walkable = false;\n        if (isectList[nxtIsect].ringAndEdge1Walkable) {\n          var pushing = { isect: nxtIsect };\n          if (\n            isConvex(\n              [\n                isectList[currentIsect].coord,\n                isectList[nxtIsect].coord,\n                isectList[isectList[nxtIsect].nxtIsectAlongRingAndEdge2].coord,\n              ],\n              currentOutputRingWinding == 1\n            )\n          ) {\n            pushing.parent = currentOutputRingParent;\n            pushing.winding = -currentOutputRingWinding;\n          } else {\n            pushing.parent = currentOutputRing;\n            pushing.winding = currentOutputRingWinding;\n          }\n          queue.push(pushing);\n        }\n        currentIsect = nxtIsect;\n        nxtIsect = isectList[nxtIsect].nxtIsectAlongRingAndEdge2;\n      } else {\n        walkingRingAndEdge = isectList[nxtIsect].ringAndEdge1;\n        isectList[nxtIsect].ringAndEdge1Walkable = false;\n        if (isectList[nxtIsect].ringAndEdge2Walkable) {\n          var pushing = { isect: nxtIsect };\n          if (\n            isConvex(\n              [\n                isectList[currentIsect].coord,\n                isectList[nxtIsect].coord,\n                isectList[isectList[nxtIsect].nxtIsectAlongRingAndEdge1].coord,\n              ],\n              currentOutputRingWinding == 1\n            )\n          ) {\n            pushing.parent = currentOutputRingParent;\n            pushing.winding = -currentOutputRingWinding;\n          } else {\n            pushing.parent = currentOutputRing;\n            pushing.winding = currentOutputRingWinding;\n          }\n          queue.push(pushing);\n        }\n        currentIsect = nxtIsect;\n        nxtIsect = isectList[nxtIsect].nxtIsectAlongRingAndEdge1;\n      }\n    }\n    // Close output ring\n    currentOutputRingCoords.push(isectList[nxtIsect].coord);\n    // Push output ring to output\n    outputFeatureArray.push(\n      helpers.polygon([currentOutputRingCoords], {\n        index: currentOutputRing,\n        parent: currentOutputRingParent,\n        winding: currentOutputRingWinding,\n        netWinding: undefined,\n      })\n    );\n  }\n\n  var output = helpers.featureCollection(outputFeatureArray);\n\n  determineParents();\n\n  setNetWinding();\n\n  // These functions are also used if no intersections are found\n  function determineParents() {\n    var featuresWithoutParent = [];\n    for (var i = 0; i < output.features.length; i++) {\n      if (output.features[i].properties.parent == -1)\n        featuresWithoutParent.push(i);\n    }\n    if (featuresWithoutParent.length > 1) {\n      for (var i = 0; i < featuresWithoutParent.length; i++) {\n        var parent = -1;\n        var parentArea = Infinity;\n        for (var j = 0; j < output.features.length; j++) {\n          if (featuresWithoutParent[i] == j) continue;\n          if (\n            booleanPointInPolygon__default['default'](\n              output.features[featuresWithoutParent[i]].geometry\n                .coordinates[0][0],\n              output.features[j],\n              { ignoreBoundary: true }\n            )\n          ) {\n            if (area__default['default'](output.features[j]) < parentArea) {\n              parent = j;\n            }\n          }\n        }\n        output.features[featuresWithoutParent[i]].properties.parent = parent;\n      }\n    }\n  }\n\n  function setNetWinding() {\n    for (var i = 0; i < output.features.length; i++) {\n      if (output.features[i].properties.parent == -1) {\n        var netWinding = output.features[i].properties.winding;\n        output.features[i].properties.netWinding = netWinding;\n        setNetWindingOfChildren(i, netWinding);\n      }\n    }\n  }\n\n  function setNetWindingOfChildren(parent, ParentNetWinding) {\n    for (var i = 0; i < output.features.length; i++) {\n      if (output.features[i].properties.parent == parent) {\n        var netWinding =\n          ParentNetWinding + output.features[i].properties.winding;\n        output.features[i].properties.netWinding = netWinding;\n        setNetWindingOfChildren(i, netWinding);\n      }\n    }\n  }\n\n  return output;\n}\n\n// Constructor for (ring- or intersection-) pseudo-vertices.\nvar PseudoVtx = function (\n  coord,\n  param,\n  ringAndEdgeIn,\n  ringAndEdgeOut,\n  nxtIsectAlongEdgeIn\n) {\n  this.coord = coord; // [x,y] of this pseudo-vertex\n  this.param = param; // fractional distance of this intersection on incomming edge\n  this.ringAndEdgeIn = ringAndEdgeIn; // [ring index, edge index] of incomming edge\n  this.ringAndEdgeOut = ringAndEdgeOut; // [ring index, edge index] of outgoing edge\n  this.nxtIsectAlongEdgeIn = nxtIsectAlongEdgeIn; // The next intersection when following the incomming edge (so not when following ringAndEdgeOut!)\n};\n\n// Constructor for an intersection. There are two intersection-pseudo-vertices per self-intersection and one ring-pseudo-vertex per ring-vertex-intersection. Their labels 1 and 2 are not assigned a particular meaning but are permanent once given.\nvar Isect = function (\n  coord,\n  ringAndEdge1,\n  ringAndEdge2,\n  nxtIsectAlongRingAndEdge1,\n  nxtIsectAlongRingAndEdge2,\n  ringAndEdge1Walkable,\n  ringAndEdge2Walkable\n) {\n  this.coord = coord; // [x,y] of this intersection\n  this.ringAndEdge1 = ringAndEdge1; // first edge of this intersection\n  this.ringAndEdge2 = ringAndEdge2; // second edge of this intersection\n  this.nxtIsectAlongRingAndEdge1 = nxtIsectAlongRingAndEdge1; // the next intersection when following ringAndEdge1\n  this.nxtIsectAlongRingAndEdge2 = nxtIsectAlongRingAndEdge2; // the next intersection when following ringAndEdge2\n  this.ringAndEdge1Walkable = ringAndEdge1Walkable; // May we (still) walk away from this intersection over ringAndEdge1?\n  this.ringAndEdge2Walkable = ringAndEdge2Walkable; // May we (still) walk away from this intersection over ringAndEdge2?\n};\n\n// Function to determine if three consecutive points of a simple, non-self-intersecting ring make up a convex vertex, assuming the ring is right- or lefthanded\nfunction isConvex(pts, righthanded) {\n  // 'pts' is an [x,y] pair\n  // 'righthanded' is a boolean\n  if (typeof righthanded === \"undefined\") righthanded = true;\n  if (pts.length != 3)\n    throw new Error(\"This function requires an array of three points [x,y]\");\n  var d =\n    (pts[1][0] - pts[0][0]) * (pts[2][1] - pts[0][1]) -\n    (pts[1][1] - pts[0][1]) * (pts[2][0] - pts[0][0]);\n  return d >= 0 == righthanded;\n}\n\n// Function to compute winding of simple, non-self-intersecting ring\nfunction windingOfRing(ring) {\n  // 'ring' is an array of [x,y] pairs with the last equal to the first\n  // Compute the winding number based on the vertex with the smallest x-value, it precessor and successor. An extremal vertex of a simple, non-self-intersecting ring is always convex, so the only reason it is not is because the winding number we use to compute it is wrong\n  var leftVtx = 0;\n  for (var i = 0; i < ring.length - 1; i++) {\n    if (ring[i][0] < ring[leftVtx][0]) leftVtx = i;\n  }\n  if (\n    isConvex(\n      [\n        ring[modulo(leftVtx - 1, ring.length - 1)],\n        ring[leftVtx],\n        ring[modulo(leftVtx + 1, ring.length - 1)],\n      ],\n      true\n    )\n  ) {\n    var winding = 1;\n  } else {\n    var winding = -1;\n  }\n  return winding;\n}\n\n// Function to compare Arrays of numbers. From http://stackoverflow.com/questions/7837456/how-to-compare-arrays-in-javascript\nfunction equalArrays$1(array1, array2) {\n  // if the other array is a falsy value, return\n  if (!array1 || !array2) return false;\n\n  // compare lengths - can save a lot of time\n  if (array1.length != array2.length) return false;\n\n  for (var i = 0, l = array1.length; i < l; i++) {\n    // Check if we have nested arrays\n    if (array1[i] instanceof Array && array2[i] instanceof Array) {\n      // recurse into the nested arrays\n      if (!equalArrays$1(array1[i], array2[i])) return false;\n    } else if (array1[i] != array2[i]) {\n      // Warning - two different object instances will never be equal: {x:20} != {x:20}\n      return false;\n    }\n  }\n  return true;\n}\n\n// Fix Javascript modulo for negative number. From http://stackoverflow.com/questions/4467539/javascript-modulo-not-behaving\nfunction modulo(n, m) {\n  return ((n % m) + m) % m;\n}\n\n// Function to check if array is unique (i.e. all unique elements, i.e. no duplicate elements)\nfunction isUnique(array) {\n  var u = {};\n  var isUnique = 1;\n  for (var i = 0, l = array.length; i < l; ++i) {\n    if (Object.prototype.hasOwnProperty.call(u, array[i])) {\n      isUnique = 0;\n      break;\n    }\n    u[array[i]] = 1;\n  }\n  return isUnique;\n}\n\n/**\n * Takes a kinked polygon and returns a feature collection of polygons that have no kinks.\n * Uses [simplepolygon](https://github.com/mclaeysb/simplepolygon) internally.\n *\n * @name unkinkPolygon\n * @param {FeatureCollection|Feature<Polygon|MultiPolygon>} geojson GeoJSON Polygon or MultiPolygon\n * @returns {FeatureCollection<Polygon>} Unkinked polygons\n * @example\n * var poly = turf.polygon([[[0, 0], [2, 0], [0, 2], [2, 2], [0, 0]]]);\n *\n * var result = turf.unkinkPolygon(poly);\n *\n * //addToMap\n * var addToMap = [poly, result]\n */\nfunction unkinkPolygon(geojson) {\n  var features = [];\n  meta.flattenEach(geojson, function (feature) {\n    if (feature.geometry.type !== \"Polygon\") return;\n    meta.featureEach(simplepolygon(feature), function (poly) {\n      features.push(helpers.polygon(poly.geometry.coordinates, feature.properties));\n    });\n  });\n  return helpers.featureCollection(features);\n}\n\nmodule.exports = unkinkPolygon;\nmodule.exports.default = unkinkPolygon;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar distance_weight_1 = __importDefault(require(\"@turf/distance-weight\"));\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Moran's I measures patterns of attribute values associated with features.\n * The method reveal whether similar values tend to occur near each other,\n * or whether high or low values are interspersed.\n *\n * Moran's I > 0 means a clusterd pattern.\n * Moran's I < 0 means a dispersed pattern.\n * Moran's I = 0 means a random pattern.\n *\n * In order to test the significance of the result. The z score is calculated.\n * A positive enough z-score (ex. >1.96) indicates clustering,\n * while a negative enough z-score (ex. <-1.96) indicates a dispersed pattern.\n *\n * the z-score can be calculated based on a normal or random assumption.\n *\n * **Bibliography***\n *\n * 1. [Moran's I](https://en.wikipedia.org/wiki/Moran%27s_I)\n *\n * 2. [pysal](http://pysal.readthedocs.io/en/latest/index.html)\n *\n * 3. Andy Mitchell, The ESRI Guide to GIS Analysis Volume 2: Spatial Measurements & Statistics.\n *\n * @name moranIndex\n * @param {FeatureCollection<any>} fc\n * @param {Object} options\n * @param {string} options.inputField the property name, must contain numeric values\n * @param {number} [options.threshold=100000] the distance threshold\n * @param {number} [options.p=2] the Minkowski p-norm distance parameter\n * @param {boolean} [options.binary=false] whether transfrom the distance to binary\n * @param {number} [options.alpha=-1] the distance decay parameter\n * @param {boolean} [options.standardization=true] wheter row standardization the distance\n * @returns {MoranIndex}\n * @example\n *\n * const bbox = [-65, 40, -63, 42];\n * const dataset = turf.randomPoint(100, { bbox: bbox });\n *\n * const result = turf.moranIndex(dataset, {\n *   inputField: 'CRIME',\n * });\n */\nfunction default_1(fc, options) {\n    var inputField = options.inputField;\n    var threshold = options.threshold || 100000;\n    var p = options.p || 2;\n    var binary = options.binary || false;\n    var alpha = options.alpha || -1;\n    var standardization = options.standardization || true;\n    var weight = distance_weight_1.default(fc, {\n        alpha: alpha,\n        binary: binary,\n        p: p,\n        standardization: standardization,\n        threshold: threshold,\n    });\n    var y = [];\n    meta_1.featureEach(fc, function (feature) {\n        var feaProperties = feature.properties || {};\n        // validate inputField exists\n        y.push(feaProperties[inputField]);\n    });\n    var yMean = mean(y);\n    var yVar = variance(y);\n    var weightSum = 0;\n    var s0 = 0;\n    var s1 = 0;\n    var s2 = 0;\n    var n = weight.length;\n    // validate y.length is the same as weight.length\n    for (var i = 0; i < n; i++) {\n        var subS2 = 0;\n        for (var j = 0; j < n; j++) {\n            weightSum += weight[i][j] * (y[i] - yMean) * (y[j] - yMean);\n            s0 += weight[i][j];\n            s1 += Math.pow(weight[i][j] + weight[j][i], 2);\n            subS2 += weight[i][j] + weight[j][i];\n        }\n        s2 += Math.pow(subS2, 2);\n    }\n    s1 = 0.5 * s1;\n    var moranIndex = weightSum / s0 / yVar;\n    var expectedMoranIndex = -1 / (n - 1);\n    var vNum = n * n * s1 - n * s2 + 3 * (s0 * s0);\n    var vDen = (n - 1) * (n + 1) * (s0 * s0);\n    var vNorm = vNum / vDen - expectedMoranIndex * expectedMoranIndex;\n    var stdNorm = Math.sqrt(vNorm);\n    var zNorm = (moranIndex - expectedMoranIndex) / stdNorm;\n    return {\n        expectedMoranIndex: expectedMoranIndex,\n        moranIndex: moranIndex,\n        stdNorm: stdNorm,\n        zNorm: zNorm,\n    };\n}\nexports.default = default_1;\n/**\n * get mean of a list\n * @param {number[]} y\n * @returns {number}\n *\n */\nfunction mean(y) {\n    var sum = 0;\n    for (var _i = 0, y_1 = y; _i < y_1.length; _i++) {\n        var item = y_1[_i];\n        sum += item;\n    }\n    return sum / y.length;\n}\n/**\n * get variance of a list\n * @param {number[]} y\n * @returns {number}\n *\n */\nfunction variance(y) {\n    var yMean = mean(y);\n    var sum = 0;\n    for (var _i = 0, y_2 = y; _i < y_2.length; _i++) {\n        var item = y_2[_i];\n        sum += Math.pow(item - yMean, 2);\n    }\n    return sum / y.length;\n}\n/**\n * @typedef {Object} MoranIndex\n * @property {number} moranIndex the moran's Index of the observed feature set\n * @property {number} expectedMoranIndex the moran's Index of the random distribution\n * @property {number} stdNorm the standard devitaion of the random distribution\n * @property {number} zNorm the z-score of the observe samples with regard to the random distribution\n */\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","/* eslint-disable no-restricted-syntax */\nimport React, { useRef } from 'react'\nimport GeoJsonMarker, {\n  makeIcon\n} from 'adhocracy4/adhocracy4/maps_react/static/a4maps_react/GeoJsonMarker'\nimport { Popup } from 'react-leaflet'\nimport ProjectTile from './ProjectTile'\n\nconst ProjectMarker = ({ project, onOpen, onClose, topicChoices }) => {\n  const ref = useRef(null)\n  const tileRef = useRef(null)\n  const markerElementRef = useRef(null)\n\n  // Generate a unique ID for this popup\n  const popupId = `popup-${project.properties.id || project.properties.slug || Date.now()}`\n\n  const focusFirstInteractiveElement = () => {\n    setTimeout(() => { if (tileRef.current) { tileRef.current.focus() } }, 100)\n  }\n\n  const setMarkerElementRef = () => {\n    const markerElement = ref.current?.getElement?.()\n    if (markerElement) {\n      markerElement.tabIndex = -1\n      markerElementRef.current = markerElement\n    }\n  }\n\n  const focusMarkerElement = () => {\n    const element = markerElementRef.current ?? ref.current?.getElement?.()\n    if (element) {\n      element.focus()\n    }\n  }\n\n  const announcePopup = (message) => {\n    const liveRegion = document.getElementById('map-live-region')\n    if (liveRegion) {\n      liveRegion.textContent = message\n    }\n  }\n\n  return (\n    <GeoJsonMarker\n      ref={ref}\n      key={project.properties.title}\n      feature={project}\n      eventHandlers={{\n        popupopen: (e) => {\n          ref.current?.setIcon(makeIcon('/static/images/map_pin_active.svg'))\n          setMarkerElementRef()\n          onOpen(e)\n          focusFirstInteractiveElement()\n          announcePopup(`Popup opened: ${project.properties.title}`)\n        },\n        popupclose: (e) => {\n          ref.current?.setIcon(makeIcon())\n          focusMarkerElement()\n          onClose(e)\n          announcePopup('Popup closed')\n        }\n      }}\n    >\n      <Popup\n        className=\"projects-map__popup\"\n        offset={[0, 225]}\n        maxWidth={400}\n        minWidth={400}\n      >\n        <div\n          role=\"dialog\"\n          aria-modal=\"false\"\n          aria-label={`Details: ${project.properties.title}`}\n          id={popupId}\n        >\n          <ProjectTile\n            project={project.properties}\n            isHorizontal\n            topicChoices={topicChoices}\n            isMapTile\n            ref={tileRef}\n          />\n        </div>\n      </Popup>\n    </GeoJsonMarker>\n  )\n}\n\nexport default ProjectMarker\n","\nexport default function quickselect(arr, k, left, right, compare) {\n    quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n    while (right > left) {\n        if (right - left > 600) {\n            var n = right - left + 1;\n            var m = k - left + 1;\n            var z = Math.log(n);\n            var s = 0.5 * Math.exp(2 * z / 3);\n            var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            quickselectStep(arr, k, newLeft, newRight, compare);\n        }\n\n        var t = arr[k];\n        var i = left;\n        var j = right;\n\n        swap(arr, left, k);\n        if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n        while (i < j) {\n            swap(arr, i, j);\n            i++;\n            j--;\n            while (compare(arr[i], t) < 0) i++;\n            while (compare(arr[j], t) > 0) j--;\n        }\n\n        if (compare(arr[left], t) === 0) swap(arr, left, j);\n        else {\n            j++;\n            swap(arr, j, right);\n        }\n\n        if (j <= k) left = j + 1;\n        if (k <= j) right = j - 1;\n    }\n}\n\nfunction swap(arr, i, j) {\n    var tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * BezierSpline\n * https://github.com/leszekr/bezier-spline-js\n *\n * @private\n * @copyright\n * Copyright (c) 2013 Leszek Rybicki\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar Spline = /** @class */ (function () {\n    function Spline(options) {\n        this.points = options.points || [];\n        this.duration = options.duration || 10000;\n        this.sharpness = options.sharpness || 0.85;\n        this.centers = [];\n        this.controls = [];\n        this.stepLength = options.stepLength || 60;\n        this.length = this.points.length;\n        this.delay = 0;\n        // this is to ensure compatibility with the 2d version\n        for (var i = 0; i < this.length; i++) {\n            this.points[i].z = this.points[i].z || 0;\n        }\n        for (var i = 0; i < this.length - 1; i++) {\n            var p1 = this.points[i];\n            var p2 = this.points[i + 1];\n            this.centers.push({\n                x: (p1.x + p2.x) / 2,\n                y: (p1.y + p2.y) / 2,\n                z: (p1.z + p2.z) / 2,\n            });\n        }\n        this.controls.push([this.points[0], this.points[0]]);\n        for (var i = 0; i < this.centers.length - 1; i++) {\n            var dx = this.points[i + 1].x - (this.centers[i].x + this.centers[i + 1].x) / 2;\n            var dy = this.points[i + 1].y - (this.centers[i].y + this.centers[i + 1].y) / 2;\n            var dz = this.points[i + 1].z - (this.centers[i].y + this.centers[i + 1].z) / 2;\n            this.controls.push([\n                {\n                    x: (1.0 - this.sharpness) * this.points[i + 1].x +\n                        this.sharpness * (this.centers[i].x + dx),\n                    y: (1.0 - this.sharpness) * this.points[i + 1].y +\n                        this.sharpness * (this.centers[i].y + dy),\n                    z: (1.0 - this.sharpness) * this.points[i + 1].z +\n                        this.sharpness * (this.centers[i].z + dz),\n                },\n                {\n                    x: (1.0 - this.sharpness) * this.points[i + 1].x +\n                        this.sharpness * (this.centers[i + 1].x + dx),\n                    y: (1.0 - this.sharpness) * this.points[i + 1].y +\n                        this.sharpness * (this.centers[i + 1].y + dy),\n                    z: (1.0 - this.sharpness) * this.points[i + 1].z +\n                        this.sharpness * (this.centers[i + 1].z + dz),\n                },\n            ]);\n        }\n        this.controls.push([\n            this.points[this.length - 1],\n            this.points[this.length - 1],\n        ]);\n        this.steps = this.cacheSteps(this.stepLength);\n        return this;\n    }\n    /**\n     * Caches an array of equidistant (more or less) points on the curve.\n     */\n    Spline.prototype.cacheSteps = function (mindist) {\n        var steps = [];\n        var laststep = this.pos(0);\n        steps.push(0);\n        for (var t = 0; t < this.duration; t += 10) {\n            var step = this.pos(t);\n            var dist = Math.sqrt((step.x - laststep.x) * (step.x - laststep.x) +\n                (step.y - laststep.y) * (step.y - laststep.y) +\n                (step.z - laststep.z) * (step.z - laststep.z));\n            if (dist > mindist) {\n                steps.push(t);\n                laststep = step;\n            }\n        }\n        return steps;\n    };\n    /**\n     * returns angle and speed in the given point in the curve\n     */\n    Spline.prototype.vector = function (t) {\n        var p1 = this.pos(t + 10);\n        var p2 = this.pos(t - 10);\n        return {\n            angle: (180 * Math.atan2(p1.y - p2.y, p1.x - p2.x)) / 3.14,\n            speed: Math.sqrt((p2.x - p1.x) * (p2.x - p1.x) +\n                (p2.y - p1.y) * (p2.y - p1.y) +\n                (p2.z - p1.z) * (p2.z - p1.z)),\n        };\n    };\n    /**\n     * Gets the position of the point, given time.\n     *\n     * WARNING: The speed is not constant. The time it takes between control points is constant.\n     *\n     * For constant speed, use Spline.steps[i];\n     */\n    Spline.prototype.pos = function (time) {\n        var t = time - this.delay;\n        if (t < 0) {\n            t = 0;\n        }\n        if (t > this.duration) {\n            t = this.duration - 1;\n        }\n        // t = t-this.delay;\n        var t2 = t / this.duration;\n        if (t2 >= 1) {\n            return this.points[this.length - 1];\n        }\n        var n = Math.floor((this.points.length - 1) * t2);\n        var t1 = (this.length - 1) * t2 - n;\n        return bezier(t1, this.points[n], this.controls[n][1], this.controls[n + 1][0], this.points[n + 1]);\n    };\n    return Spline;\n}());\nexports.default = Spline;\nfunction bezier(t, p1, c1, c2, p2) {\n    var b = B(t);\n    var pos = {\n        x: p2.x * b[0] + c2.x * b[1] + c1.x * b[2] + p1.x * b[3],\n        y: p2.y * b[0] + c2.y * b[1] + c1.y * b[2] + p1.y * b[3],\n        z: p2.z * b[0] + c2.z * b[1] + c1.z * b[2] + p1.z * b[3],\n    };\n    return pos;\n}\nfunction B(t) {\n    var t2 = t * t;\n    var t3 = t2 * t;\n    return [\n        t3,\n        3 * t2 * (1 - t),\n        3 * t * (1 - t) * (1 - t),\n        (1 - t) * (1 - t) * (1 - t),\n    ];\n}\n","/*\n * Leaflet.markercluster 1.5.4+main.159090a,\n * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps.\n * https://github.com/Leaflet/Leaflet.markercluster\n * (c) 2012-2017, Dave Leaver, smartrak\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(global = global || self, factory((global.Leaflet = global.Leaflet || {}, global.Leaflet.markercluster = {})));\n}(this, (function (exports) { 'use strict';\n\n\t/*\n\t * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within\n\t */\n\n\tvar MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({\n\n\t\toptions: {\n\t\t\tmaxClusterRadius: 80, //A cluster will cover at most this many pixels from its center\n\t\t\ticonCreateFunction: null,\n\t\t\tclusterPane: L.Marker.prototype.options.pane,\n\n\t\t\tspiderfyOnEveryZoom: false,\n\t\t\tspiderfyOnMaxZoom: true,\n\t\t\tshowCoverageOnHover: true,\n\t\t\tzoomToBoundsOnClick: true,\n\t\t\tsingleMarkerMode: false,\n\n\t\t\tdisableClusteringAtZoom: null,\n\n\t\t\t// Setting this to false prevents the removal of any clusters outside of the viewpoint, which\n\t\t\t// is the default behaviour for performance reasons.\n\t\t\tremoveOutsideVisibleBounds: true,\n\n\t\t\t// Set to false to disable all animations (zoom and spiderfy).\n\t\t\t// If false, option animateAddingMarkers below has no effect.\n\t\t\t// If L.DomUtil.TRANSITION is falsy, this option has no effect.\n\t\t\tanimate: true,\n\n\t\t\t//Whether to animate adding markers after adding the MarkerClusterGroup to the map\n\t\t\t// If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains.\n\t\t\tanimateAddingMarkers: false,\n\n\t\t\t// Make it possible to provide custom function to calculate spiderfy shape positions\n\t\t\tspiderfyShapePositions: null,\n\n\t\t\t//Increase to increase the distance away that spiderfied markers appear from the center\n\t\t\tspiderfyDistanceMultiplier: 1,\n\n\t\t\t// Make it possible to specify a polyline options on a spider leg\n\t\t\tspiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 },\n\n\t\t\t// When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts\n\t\t\tchunkedLoading: false,\n\t\t\tchunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback)\n\t\t\tchunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser\n\t\t\tchunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator)\n\n\t\t\t//Options to pass to the L.Polygon constructor\n\t\t\tpolygonOptions: {}\n\t\t},\n\n\t\tinitialize: function (options) {\n\t\t\tL.Util.setOptions(this, options);\n\t\t\tif (!this.options.iconCreateFunction) {\n\t\t\t\tthis.options.iconCreateFunction = this._defaultIconCreateFunction;\n\t\t\t}\n\n\t\t\tthis._featureGroup = L.featureGroup();\n\t\t\tthis._featureGroup.addEventParent(this);\n\n\t\t\tthis._nonPointGroup = L.featureGroup();\n\t\t\tthis._nonPointGroup.addEventParent(this);\n\n\t\t\tthis._inZoomAnimation = 0;\n\t\t\tthis._needsClustering = [];\n\t\t\tthis._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of\n\t\t\t//The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move\n\t\t\tthis._currentShownBounds = null;\n\n\t\t\tthis._queue = [];\n\n\t\t\tthis._childMarkerEventHandlers = {\n\t\t\t\t'dragstart': this._childMarkerDragStart,\n\t\t\t\t'move': this._childMarkerMoved,\n\t\t\t\t'dragend': this._childMarkerDragEnd,\n\t\t\t};\n\n\t\t\t// Hook the appropriate animation methods.\n\t\t\tvar animate = L.DomUtil.TRANSITION && this.options.animate;\n\t\t\tL.extend(this, animate ? this._withAnimation : this._noAnimation);\n\t\t\t// Remember which MarkerCluster class to instantiate (animated or not).\n\t\t\tthis._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated;\n\t\t},\n\n\t\taddLayer: function (layer) {\n\n\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\treturn this.addLayers([layer]);\n\t\t\t}\n\n\t\t\t//Don't cluster non point data\n\t\t\tif (!layer.getLatLng) {\n\t\t\t\tthis._nonPointGroup.addLayer(layer);\n\t\t\t\tthis.fire('layeradd', { layer: layer });\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!this._map) {\n\t\t\t\tthis._needsClustering.push(layer);\n\t\t\t\tthis.fire('layeradd', { layer: layer });\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (this.hasLayer(layer)) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\n\t\t\t//If we have already clustered we'll need to add this one to a cluster\n\n\t\t\tif (this._unspiderfy) {\n\t\t\t\tthis._unspiderfy();\n\t\t\t}\n\n\t\t\tthis._addLayer(layer, this._maxZoom);\n\t\t\tthis.fire('layeradd', { layer: layer });\n\n\t\t\t// Refresh bounds and weighted positions.\n\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\t//Work out what is visible\n\t\t\tvar visibleLayer = layer,\n\t\t\t    currentZoom = this._zoom;\n\t\t\tif (layer.__parent) {\n\t\t\t\twhile (visibleLayer.__parent._zoom >= currentZoom) {\n\t\t\t\t\t// Check if visibleLayer.__parent is undefined to avoid crashing in the next loop.\n\t\t\t\t\tif (visibleLayer.__parent === undefined) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tvisibleLayer = visibleLayer.__parent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._currentShownBounds.contains(visibleLayer.getLatLng())) {\n\t\t\t\tif (this.options.animateAddingMarkers) {\n\t\t\t\t\tthis._animationAddLayer(layer, visibleLayer);\n\t\t\t\t} else {\n\t\t\t\t\tthis._animationAddLayerNonAnimated(layer, visibleLayer);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tremoveLayer: function (layer) {\n\n\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\treturn this.removeLayers([layer]);\n\t\t\t}\n\n\t\t\t//Non point layers\n\t\t\tif (!layer.getLatLng) {\n\t\t\t\tthis._nonPointGroup.removeLayer(layer);\n\t\t\t\tthis.fire('layerremove', { layer: layer });\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!this._map) {\n\t\t\t\tif (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) {\n\t\t\t\t\tthis._needsRemoving.push({ layer: layer, latlng: layer._latlng });\n\t\t\t\t}\n\t\t\t\tthis.fire('layerremove', { layer: layer });\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!layer.__parent) {\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (this._unspiderfy) {\n\t\t\t\tthis._unspiderfy();\n\t\t\t\tthis._unspiderfyLayer(layer);\n\t\t\t}\n\n\t\t\t//Remove the marker from clusters\n\t\t\tthis._removeLayer(layer, true);\n\t\t\tthis.fire('layerremove', { layer: layer });\n\n\t\t\t// Refresh bounds and weighted positions.\n\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\tlayer.off(this._childMarkerEventHandlers, this);\n\n\t\t\tif (this._featureGroup.hasLayer(layer)) {\n\t\t\t\tthis._featureGroup.removeLayer(layer);\n\t\t\t\tif (layer.clusterShow) {\n\t\t\t\t\tlayer.clusterShow();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t//Takes an array of markers and adds them in bulk\n\t\taddLayers: function (layersArray, skipLayerAddEvent) {\n\t\t\tif (!L.Util.isArray(layersArray)) {\n\t\t\t\treturn this.addLayer(layersArray);\n\t\t\t}\n\n\t\t\tvar fg = this._featureGroup,\n\t\t\t    npg = this._nonPointGroup,\n\t\t\t    chunked = this.options.chunkedLoading,\n\t\t\t    chunkInterval = this.options.chunkInterval,\n\t\t\t    chunkProgress = this.options.chunkProgress,\n\t\t\t    l = layersArray.length,\n\t\t\t    offset = 0,\n\t\t\t    originalArray = true,\n\t\t\t    m;\n\n\t\t\tif (this._map) {\n\t\t\t\tvar started = (new Date()).getTime();\n\t\t\t\tvar process = L.bind(function () {\n\t\t\t\t\tvar start = (new Date()).getTime();\n\n\t\t\t\t\t// Make sure to unspiderfy before starting to add some layers\n\t\t\t\t\tif (this._map && this._unspiderfy) {\n\t\t\t\t\t\tthis._unspiderfy();\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (; offset < l; offset++) {\n\t\t\t\t\t\tif (chunked && offset % 200 === 0) {\n\t\t\t\t\t\t\t// every couple hundred markers, instrument the time elapsed since processing started:\n\t\t\t\t\t\t\tvar elapsed = (new Date()).getTime() - start;\n\t\t\t\t\t\t\tif (elapsed > chunkInterval) {\n\t\t\t\t\t\t\t\tbreak; // been working too hard, time to take a break :-)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tm = layersArray[offset];\n\n\t\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\t\t// Side effects:\n\t\t\t\t\t\t// - Total increases, so chunkProgress ratio jumps backward.\n\t\t\t\t\t\t// - Groups are not included in this group, only their non-group child layers (hasLayer).\n\t\t\t\t\t\t// Changing array length while looping does not affect performance in current browsers:\n\t\t\t\t\t\t// http://jsperf.com/for-loop-changing-length/6\n\t\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//Not point data, can't be clustered\n\t\t\t\t\t\tif (!m.getLatLng) {\n\t\t\t\t\t\t\tnpg.addLayer(m);\n\t\t\t\t\t\t\tif (!skipLayerAddEvent) {\n\t\t\t\t\t\t\t\tthis.fire('layeradd', { layer: m });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._addLayer(m, this._maxZoom);\n\t\t\t\t\t\tif (!skipLayerAddEvent) {\n\t\t\t\t\t\t\tthis.fire('layeradd', { layer: m });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will\n\t\t\t\t\t\tif (m.__parent) {\n\t\t\t\t\t\t\tif (m.__parent.getChildCount() === 2) {\n\t\t\t\t\t\t\t\tvar markers = m.__parent.getAllChildMarkers(),\n\t\t\t\t\t\t\t\t    otherMarker = markers[0] === m ? markers[1] : markers[0];\n\t\t\t\t\t\t\t\tfg.removeLayer(otherMarker);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chunkProgress) {\n\t\t\t\t\t\t// report progress and time elapsed:\n\t\t\t\t\t\tchunkProgress(offset, l, (new Date()).getTime() - started);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Completed processing all markers.\n\t\t\t\t\tif (offset === l) {\n\n\t\t\t\t\t\t// Refresh bounds and weighted positions.\n\t\t\t\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\t\t\t\tthis._refreshClustersIcons();\n\n\t\t\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetTimeout(process, this.options.chunkDelay);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\n\t\t\t\tprocess();\n\t\t\t} else {\n\t\t\t\tvar needsClustering = new Array(l - offset);\t// improve performance by preallocating the maximum size of our array\n\t\t\t\tvar tail = 0;\n\n\t\t\t\tfor (; offset < l; offset++) {\n\t\t\t\t\tm = layersArray[offset];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t//Not point data, can't be clustered\n\t\t\t\t\tif (!m.getLatLng) {\n\t\t\t\t\t\tnpg.addLayer(m);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsClustering[tail++] = m;\n\t\t\t\t}\n\n\t\t\t\tneedsClustering = needsClustering.slice(0, tail);\t// truncate empty elements\n\t\t\t\tthis._needsClustering = this._needsClustering.concat(needsClustering);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t//Takes an array of markers and removes them in bulk\n\t\tremoveLayers: function (layersArray) {\n\t\t\tvar i, m,\n\t\t\t    l = layersArray.length,\n\t\t\t    fg = this._featureGroup,\n\t\t\t    npg = this._nonPointGroup,\n\t\t\t    originalArray = true;\n\n\t\t\tif (!this._map) {\n\t\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\t\tm = layersArray[i];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._arraySplice(this._needsClustering, m);\n\t\t\t\t\tnpg.removeLayer(m);\n\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\tthis._needsRemoving.push({ layer: m, latlng: m._latlng });\n\t\t\t\t\t}\n\t\t\t\t\tthis.fire('layerremove', { layer: m });\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (this._unspiderfy) {\n\t\t\t\tthis._unspiderfy();\n\n\t\t\t\t// Work on a copy of the array, so that next loop is not affected.\n\t\t\t\tvar layersArray2 = layersArray.slice(),\n\t\t\t\t    l2 = l;\n\t\t\t\tfor (i = 0; i < l2; i++) {\n\t\t\t\t\tm = layersArray2[i];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray2);\n\t\t\t\t\t\tl2 = layersArray2.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._unspiderfyLayer(m);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\tm = layersArray[i];\n\n\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t}\n\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!m.__parent) {\n\t\t\t\t\tnpg.removeLayer(m);\n\t\t\t\t\tthis.fire('layerremove', { layer: m });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthis._removeLayer(m, true, true);\n\t\t\t\tthis.fire('layerremove', { layer: m });\n\n\t\t\t\tif (fg.hasLayer(m)) {\n\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Refresh bounds and weighted positions.\n\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\t//Fix up the clusters and markers on the map\n\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);\n\n\t\t\treturn this;\n\t\t},\n\n\t\t//Removes all layers from the MarkerClusterGroup\n\t\tclearLayers: function () {\n\t\t\t//Need our own special implementation as the LayerGroup one doesn't work for us\n\n\t\t\t//If we aren't on the map (yet), blow away the markers we know of\n\t\t\tif (!this._map) {\n\t\t\t\tthis._needsClustering = [];\n\t\t\t\tthis._needsRemoving = [];\n\t\t\t\tdelete this._gridClusters;\n\t\t\t\tdelete this._gridUnclustered;\n\t\t\t}\n\n\t\t\tif (this._noanimationUnspiderfy) {\n\t\t\t\tthis._noanimationUnspiderfy();\n\t\t\t}\n\n\t\t\t//Remove all the visible layers\n\t\t\tthis._featureGroup.clearLayers();\n\t\t\tthis._nonPointGroup.clearLayers();\n\n\t\t\tthis.eachLayer(function (marker) {\n\t\t\t\tmarker.off(this._childMarkerEventHandlers, this);\n\t\t\t\tdelete marker.__parent;\n\t\t\t}, this);\n\n\t\t\tif (this._map) {\n\t\t\t\t//Reset _topClusterLevel and the DistanceGrids\n\t\t\t\tthis._generateInitialClusters();\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t//Override FeatureGroup.getBounds as it doesn't work\n\t\tgetBounds: function () {\n\t\t\tvar bounds = new L.LatLngBounds();\n\n\t\t\tif (this._topClusterLevel) {\n\t\t\t\tbounds.extend(this._topClusterLevel._bounds);\n\t\t\t}\n\n\t\t\tfor (var i = this._needsClustering.length - 1; i >= 0; i--) {\n\t\t\t\tbounds.extend(this._needsClustering[i].getLatLng());\n\t\t\t}\n\n\t\t\tbounds.extend(this._nonPointGroup.getBounds());\n\n\t\t\treturn bounds;\n\t\t},\n\n\t\t//Overrides LayerGroup.eachLayer\n\t\teachLayer: function (method, context) {\n\t\t\tvar markers = this._needsClustering.slice(),\n\t\t\t\tneedsRemoving = this._needsRemoving,\n\t\t\t\tthisNeedsRemoving, i, j;\n\n\t\t\tif (this._topClusterLevel) {\n\t\t\t\tthis._topClusterLevel.getAllChildMarkers(markers);\n\t\t\t}\n\n\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\tthisNeedsRemoving = true;\n\n\t\t\t\tfor (j = needsRemoving.length - 1; j >= 0; j--) {\n\t\t\t\t\tif (needsRemoving[j].layer === markers[i]) {\n\t\t\t\t\t\tthisNeedsRemoving = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (thisNeedsRemoving) {\n\t\t\t\t\tmethod.call(context, markers[i]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._nonPointGroup.eachLayer(method, context);\n\t\t},\n\n\t\t//Overrides LayerGroup.getLayers\n\t\tgetLayers: function () {\n\t\t\tvar layers = [];\n\t\t\tthis.eachLayer(function (l) {\n\t\t\t\tlayers.push(l);\n\t\t\t});\n\t\t\treturn layers;\n\t\t},\n\n\t\t//Overrides LayerGroup.getLayer, WARNING: Really bad performance\n\t\tgetLayer: function (id) {\n\t\t\tvar result = null;\n\n\t\t\tid = parseInt(id, 10);\n\n\t\t\tthis.eachLayer(function (l) {\n\t\t\t\tif (L.stamp(l) === id) {\n\t\t\t\t\tresult = l;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result;\n\t\t},\n\n\t\t//Returns true if the given layer is in this MarkerClusterGroup\n\t\thasLayer: function (layer) {\n\t\t\tif (!layer) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar i, anArray = this._needsClustering;\n\n\t\t\tfor (i = anArray.length - 1; i >= 0; i--) {\n\t\t\t\tif (anArray[i] === layer) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tanArray = this._needsRemoving;\n\t\t\tfor (i = anArray.length - 1; i >= 0; i--) {\n\t\t\t\tif (anArray[i].layer === layer) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer);\n\t\t},\n\n\t\t//Zoom down to show the given layer (spiderfying if necessary) then calls the callback\n\t\tzoomToShowLayer: function (layer, callback) {\n\n\t\t\tvar map = this._map;\n\n\t\t\tif (typeof callback !== 'function') {\n\t\t\t\tcallback = function () {};\n\t\t\t}\n\n\t\t\tvar showMarker = function () {\n\t\t\t\t// Assumes that map.hasLayer checks for direct appearance on map, not recursively calling\n\t\t\t\t// hasLayer on Layer Groups that are on map (typically not calling this MarkerClusterGroup.hasLayer, which would always return true)\n\t\t\t\tif ((map.hasLayer(layer) || map.hasLayer(layer.__parent)) && !this._inZoomAnimation) {\n\t\t\t\t\tthis._map.off('moveend', showMarker, this);\n\t\t\t\t\tthis.off('animationend', showMarker, this);\n\n\t\t\t\t\tif (map.hasLayer(layer)) {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if (layer.__parent._icon) {\n\t\t\t\t\t\tthis.once('spiderfied', callback, this);\n\t\t\t\t\t\tlayer.__parent.spiderfy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif (layer._icon && this._map.getBounds().contains(layer.getLatLng())) {\n\t\t\t\t//Layer is visible ond on screen, immediate return\n\t\t\t\tcallback();\n\t\t\t} else if (layer.__parent._zoom < Math.round(this._map._zoom)) {\n\t\t\t\t//Layer should be visible at this zoom level. It must not be on screen so just pan over to it\n\t\t\t\tthis._map.on('moveend', showMarker, this);\n\t\t\t\tthis._map.panTo(layer.getLatLng());\n\t\t\t} else {\n\t\t\t\tthis._map.on('moveend', showMarker, this);\n\t\t\t\tthis.on('animationend', showMarker, this);\n\t\t\t\tlayer.__parent.zoomToBounds();\n\t\t\t}\n\t\t},\n\n\t\t//Overrides FeatureGroup.onAdd\n\t\tonAdd: function (map) {\n\t\t\tthis._map = map;\n\t\t\tvar i, l, layer;\n\n\t\t\tif (!isFinite(this._map.getMaxZoom())) {\n\t\t\t\tthrow \"Map has no maxZoom specified\";\n\t\t\t}\n\n\t\t\tthis._featureGroup.addTo(map);\n\t\t\tthis._nonPointGroup.addTo(map);\n\n\t\t\tif (!this._gridClusters) {\n\t\t\t\tthis._generateInitialClusters();\n\t\t\t}\n\n\t\t\tthis._maxLat = map.options.crs.projection.MAX_LATITUDE;\n\n\t\t\t//Restore all the positions as they are in the MCG before removing them\n\t\t\tfor (i = 0, l = this._needsRemoving.length; i < l; i++) {\n\t\t\t\tlayer = this._needsRemoving[i];\n\t\t\t\tlayer.newlatlng = layer.layer._latlng;\n\t\t\t\tlayer.layer._latlng = layer.latlng;\n\t\t\t}\n\t\t\t//Remove them, then restore their new positions\n\t\t\tfor (i = 0, l = this._needsRemoving.length; i < l; i++) {\n\t\t\t\tlayer = this._needsRemoving[i];\n\t\t\t\tthis._removeLayer(layer.layer, true);\n\t\t\t\tlayer.layer._latlng = layer.newlatlng;\n\t\t\t}\n\t\t\tthis._needsRemoving = [];\n\n\t\t\t//Remember the current zoom level and bounds\n\t\t\tthis._zoom = Math.round(this._map._zoom);\n\t\t\tthis._currentShownBounds = this._getExpandedVisibleBounds();\n\n\t\t\tthis._map.on('zoomend', this._zoomEnd, this);\n\t\t\tthis._map.on('moveend', this._moveEnd, this);\n\n\t\t\tif (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely\n\t\t\t\tthis._spiderfierOnAdd();\n\t\t\t}\n\n\t\t\tthis._bindEvents();\n\n\t\t\t//Actually add our markers to the map:\n\t\t\tl = this._needsClustering;\n\t\t\tthis._needsClustering = [];\n\t\t\tthis.addLayers(l, true);\n\t\t},\n\n\t\t//Overrides FeatureGroup.onRemove\n\t\tonRemove: function (map) {\n\t\t\tmap.off('zoomend', this._zoomEnd, this);\n\t\t\tmap.off('moveend', this._moveEnd, this);\n\n\t\t\tthis._unbindEvents();\n\n\t\t\t//In case we are in a cluster animation\n\t\t\tthis._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');\n\n\t\t\tif (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely\n\t\t\t\tthis._spiderfierOnRemove();\n\t\t\t}\n\n\t\t\tdelete this._maxLat;\n\n\t\t\t//Clean up all the layers we added to the map\n\t\t\tthis._hideCoverage();\n\t\t\tthis._featureGroup.remove();\n\t\t\tthis._nonPointGroup.remove();\n\n\t\t\tthis._featureGroup.clearLayers();\n\n\t\t\tthis._map = null;\n\t\t},\n\n\t\tgetVisibleParent: function (marker) {\n\t\t\tvar vMarker = marker;\n\t\t\twhile (vMarker && !vMarker._icon) {\n\t\t\t\tvMarker = vMarker.__parent;\n\t\t\t}\n\t\t\treturn vMarker || null;\n\t\t},\n\n\t\t//Remove the given object from the given array\n\t\t_arraySplice: function (anArray, obj) {\n\t\t\tfor (var i = anArray.length - 1; i >= 0; i--) {\n\t\t\t\tif (anArray[i] === obj) {\n\t\t\t\t\tanArray.splice(i, 1);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom.\n\t\t * @param marker to be removed from _gridUnclustered.\n\t\t * @param z integer bottom start zoom level (included)\n\t\t * @private\n\t\t */\n\t\t_removeFromGridUnclustered: function (marker, z) {\n\t\t\tvar map = this._map,\n\t\t\t    gridUnclustered = this._gridUnclustered,\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom());\n\n\t\t\tfor (; z >= minZoom; z--) {\n\t\t\t\tif (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_childMarkerDragStart: function (e) {\n\t\t\te.target.__dragStart = e.target._latlng;\n\t\t},\n\n\t\t_childMarkerMoved: function (e) {\n\t\t\tif (!this._ignoreMove && !e.target.__dragStart) {\n\t\t\t\tvar isPopupOpen = e.target._popup && e.target._popup.isOpen();\n\n\t\t\t\tthis._moveChild(e.target, e.oldLatLng, e.latlng);\n\n\t\t\t\tif (isPopupOpen) {\n\t\t\t\t\te.target.openPopup();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_moveChild: function (layer, from, to) {\n\t\t\tlayer._latlng = from;\n\t\t\tthis.removeLayer(layer);\n\n\t\t\tlayer._latlng = to;\n\t\t\tthis.addLayer(layer);\n\t\t},\n\n\t\t_childMarkerDragEnd: function (e) {\n\t\t\tvar dragStart = e.target.__dragStart;\n\t\t\tdelete e.target.__dragStart;\n\t\t\tif (dragStart) {\n\t\t\t\tthis._moveChild(e.target, dragStart, e.target._latlng);\n\t\t\t}\n\t\t},\n\n\n\t\t//Internal function for removing a marker from everything.\n\t\t//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)\n\t\t_removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) {\n\t\t\tvar gridClusters = this._gridClusters,\n\t\t\t\tgridUnclustered = this._gridUnclustered,\n\t\t\t\tfg = this._featureGroup,\n\t\t\t\tmap = this._map,\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom());\n\n\t\t\t//Remove the marker from distance clusters it might be in\n\t\t\tif (removeFromDistanceGrid) {\n\t\t\t\tthis._removeFromGridUnclustered(marker, this._maxZoom);\n\t\t\t}\n\n\t\t\t//Work our way up the clusters removing them as we go if required\n\t\t\tvar cluster = marker.__parent,\n\t\t\t\tmarkers = cluster._markers,\n\t\t\t\totherMarker;\n\n\t\t\t//Remove the marker from the immediate parents marker list\n\t\t\tthis._arraySplice(markers, marker);\n\n\t\t\twhile (cluster) {\n\t\t\t\tcluster._childCount--;\n\t\t\t\tcluster._boundsNeedUpdate = true;\n\n\t\t\t\tif (cluster._zoom < minZoom) {\n\t\t\t\t\t//Top level, do nothing\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required\n\t\t\t\t\t//We need to push the other marker up to the parent\n\t\t\t\t\totherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0];\n\n\t\t\t\t\t//Update distance grid\n\t\t\t\t\tgridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom));\n\t\t\t\t\tgridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom));\n\n\t\t\t\t\t//Move otherMarker up to parent\n\t\t\t\t\tthis._arraySplice(cluster.__parent._childClusters, cluster);\n\t\t\t\t\tcluster.__parent._markers.push(otherMarker);\n\t\t\t\t\totherMarker.__parent = cluster.__parent;\n\n\t\t\t\t\tif (cluster._icon) {\n\t\t\t\t\t\t//Cluster is currently on the map, need to put the marker on the map instead\n\t\t\t\t\t\tfg.removeLayer(cluster);\n\t\t\t\t\t\tif (!dontUpdateMap) {\n\t\t\t\t\t\t\tfg.addLayer(otherMarker);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcluster._iconNeedsUpdate = true;\n\t\t\t\t}\n\n\t\t\t\tcluster = cluster.__parent;\n\t\t\t}\n\n\t\t\tdelete marker.__parent;\n\t\t},\n\n\t\t_isOrIsParent: function (el, oel) {\n\t\t\twhile (oel) {\n\t\t\t\tif (el === oel) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\toel = oel.parentNode;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t//Override L.Evented.fire\n\t\tfire: function (type, data, propagate) {\n\t\t\tif (data && data.layer instanceof L.MarkerCluster) {\n\t\t\t\t//Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget)\n\t\t\t\tif (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttype = 'cluster' + type;\n\t\t\t}\n\n\t\t\tL.FeatureGroup.prototype.fire.call(this, type, data, propagate);\n\t\t},\n\n\t\t//Override L.Evented.listens\n\t\tlistens: function (type, propagate) {\n\t\t\treturn L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate);\n\t\t},\n\n\t\t//Default functionality\n\t\t_defaultIconCreateFunction: function (cluster) {\n\t\t\tvar childCount = cluster.getChildCount();\n\n\t\t\tvar c = ' marker-cluster-';\n\t\t\tif (childCount < 10) {\n\t\t\t\tc += 'small';\n\t\t\t} else if (childCount < 100) {\n\t\t\t\tc += 'medium';\n\t\t\t} else {\n\t\t\t\tc += 'large';\n\t\t\t}\n\n\t\t\treturn new L.DivIcon({ html: '<div><span>' + childCount + ' <span aria-label=\"markers\"></span>' + '</span></div>', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) });\n\t\t},\n\n\t\t_bindEvents: function () {\n\t\t\tvar map = this._map,\n\t\t\t    spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,\n\t\t\t    showCoverageOnHover = this.options.showCoverageOnHover,\n\t\t\t    zoomToBoundsOnClick = this.options.zoomToBoundsOnClick,\n\t\t\t    spiderfyOnEveryZoom = this.options.spiderfyOnEveryZoom;\n\n\t\t\t//Zoom on cluster click or spiderfy if we are at the lowest level\n\t\t\tif (spiderfyOnMaxZoom || zoomToBoundsOnClick || spiderfyOnEveryZoom) {\n\t\t\t\tthis.on('clusterclick clusterkeypress', this._zoomOrSpiderfy, this);\n\t\t\t}\n\n\t\t\t//Show convex hull (boundary) polygon on mouse over\n\t\t\tif (showCoverageOnHover) {\n\t\t\t\tthis.on('clustermouseover', this._showCoverage, this);\n\t\t\t\tthis.on('clustermouseout', this._hideCoverage, this);\n\t\t\t\tmap.on('zoomend', this._hideCoverage, this);\n\t\t\t}\n\t\t},\n\n\t\t_zoomOrSpiderfy: function (e) {\n\t\t\tvar cluster = e.layer,\n\t\t\t    bottomCluster = cluster;\n\n\t\t\tif (e.type === 'clusterkeypress' && e.originalEvent && e.originalEvent.keyCode !== 13) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twhile (bottomCluster._childClusters.length === 1) {\n\t\t\t\tbottomCluster = bottomCluster._childClusters[0];\n\t\t\t}\n\n\t\t\tif (bottomCluster._zoom === this._maxZoom &&\n\t\t\t\tbottomCluster._childCount === cluster._childCount &&\n\t\t\t\tthis.options.spiderfyOnMaxZoom) {\n\n\t\t\t\t// All child markers are contained in a single cluster from this._maxZoom to this cluster.\n\t\t\t\tcluster.spiderfy();\n\t\t\t} else if (this.options.zoomToBoundsOnClick) {\n\t\t\t\tcluster.zoomToBounds();\n\t\t\t}\n\n\t\t\tif (this.options.spiderfyOnEveryZoom) {\n\t\t\t\tcluster.spiderfy();\n\t\t\t}\n\n\t\t\t// Focus the map again for keyboard users.\n\t\t\tif (e.originalEvent && e.originalEvent.keyCode === 13) {\n\t\t\t\tthis._map._container.focus();\n\t\t\t}\n\t\t},\n\n\t\t_showCoverage: function (e) {\n\t\t\tvar map = this._map;\n\t\t\tif (this._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this._shownPolygon) {\n\t\t\t\tmap.removeLayer(this._shownPolygon);\n\t\t\t}\n\t\t\tif (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) {\n\t\t\t\tthis._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions);\n\t\t\t\tmap.addLayer(this._shownPolygon);\n\t\t\t}\n\t\t},\n\n\t\t_hideCoverage: function () {\n\t\t\tif (this._shownPolygon) {\n\t\t\t\tthis._map.removeLayer(this._shownPolygon);\n\t\t\t\tthis._shownPolygon = null;\n\t\t\t}\n\t\t},\n\n\t\t_unbindEvents: function () {\n\t\t\tvar spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,\n\t\t\t\tshowCoverageOnHover = this.options.showCoverageOnHover,\n\t\t\t\tzoomToBoundsOnClick = this.options.zoomToBoundsOnClick,\n\t\t\t\tspiderfyOnEveryZoom = this.options.spiderfyOnEveryZoom,\n\t\t\t\tmap = this._map;\n\n\t\t\tif (spiderfyOnMaxZoom || zoomToBoundsOnClick || spiderfyOnEveryZoom) {\n\t\t\t\tthis.off('clusterclick clusterkeypress', this._zoomOrSpiderfy, this);\n\t\t\t}\n\t\t\tif (showCoverageOnHover) {\n\t\t\t\tthis.off('clustermouseover', this._showCoverage, this);\n\t\t\t\tthis.off('clustermouseout', this._hideCoverage, this);\n\t\t\t\tmap.off('zoomend', this._hideCoverage, this);\n\t\t\t}\n\t\t},\n\n\t\t_zoomEnd: function () {\n\t\t\tif (!this._map) { //May have been removed from the map by a zoomEnd handler\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._mergeSplitClusters();\n\n\t\t\tthis._zoom = Math.round(this._map._zoom);\n\t\t\tthis._currentShownBounds = this._getExpandedVisibleBounds();\n\t\t},\n\n\t\t_moveEnd: function () {\n\t\t\tif (this._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar newBounds = this._getExpandedVisibleBounds();\n\n\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds);\n\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds);\n\n\t\t\tthis._currentShownBounds = newBounds;\n\t\t\treturn;\n\t\t},\n\n\t\t_generateInitialClusters: function () {\n\t\t\tvar maxZoom = Math.ceil(this._map.getMaxZoom()),\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom()),\n\t\t\t\tradius = this.options.maxClusterRadius,\n\t\t\t\tradiusFn = radius;\n\n\t\t\t//If we just set maxClusterRadius to a single number, we need to create\n\t\t\t//a simple function to return that number. Otherwise, we just have to\n\t\t\t//use the function we've passed in.\n\t\t\tif (typeof radius !== \"function\") {\n\t\t\t\tradiusFn = function () { return radius; };\n\t\t\t}\n\n\t\t\tif (this.options.disableClusteringAtZoom !== null) {\n\t\t\t\tmaxZoom = this.options.disableClusteringAtZoom - 1;\n\t\t\t}\n\t\t\tthis._maxZoom = maxZoom;\n\t\t\tthis._gridClusters = {};\n\t\t\tthis._gridUnclustered = {};\n\n\t\t\t//Set up DistanceGrids for each zoom\n\t\t\tfor (var zoom = maxZoom; zoom >= minZoom; zoom--) {\n\t\t\t\tthis._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));\n\t\t\t\tthis._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom));\n\t\t\t}\n\n\t\t\t// Instantiate the appropriate L.MarkerCluster class (animated or not).\n\t\t\tthis._topClusterLevel = new this._markerCluster(this, minZoom - 1);\n\t\t},\n\n\t\t//Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom)\n\t\t_addLayer: function (layer, zoom) {\n\t\t\tvar gridClusters = this._gridClusters,\n\t\t\t    gridUnclustered = this._gridUnclustered,\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom()),\n\t\t\t    markerPoint, z;\n\n\t\t\tif (this.options.singleMarkerMode) {\n\t\t\t\tthis._overrideMarkerIcon(layer);\n\t\t\t}\n\n\t\t\tlayer.on(this._childMarkerEventHandlers, this);\n\n\t\t\t//Find the lowest zoom level to slot this one in\n\t\t\tfor (; zoom >= minZoom; zoom--) {\n\t\t\t\tmarkerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position\n\n\t\t\t\t//Try find a cluster close by\n\t\t\t\tvar closest = gridClusters[zoom].getNearObject(markerPoint);\n\t\t\t\tif (closest) {\n\t\t\t\t\tclosest._addChild(layer);\n\t\t\t\t\tlayer.__parent = closest;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Try find a marker close by to form a new cluster with\n\t\t\t\tclosest = gridUnclustered[zoom].getNearObject(markerPoint);\n\t\t\t\tif (closest) {\n\t\t\t\t\tvar parent = closest.__parent;\n\t\t\t\t\tif (parent) {\n\t\t\t\t\t\tthis._removeLayer(closest, false);\n\t\t\t\t\t}\n\n\t\t\t\t\t//Create new cluster with these 2 in it\n\n\t\t\t\t\tvar newCluster = new this._markerCluster(this, zoom, closest, layer);\n\t\t\t\t\tgridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom));\n\t\t\t\t\tclosest.__parent = newCluster;\n\t\t\t\t\tlayer.__parent = newCluster;\n\n\t\t\t\t\t//First create any new intermediate parent clusters that don't exist\n\t\t\t\t\tvar lastParent = newCluster;\n\t\t\t\t\tfor (z = zoom - 1; z > parent._zoom; z--) {\n\t\t\t\t\t\tlastParent = new this._markerCluster(this, z, lastParent);\n\t\t\t\t\t\tgridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z));\n\t\t\t\t\t}\n\t\t\t\t\tparent._addChild(lastParent);\n\n\t\t\t\t\t//Remove closest from this zoom level and any above that it is in, replace with newCluster\n\t\t\t\t\tthis._removeFromGridUnclustered(closest, zoom);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards\n\t\t\t\tgridUnclustered[zoom].addObject(layer, markerPoint);\n\t\t\t}\n\n\t\t\t//Didn't get in anything, add us to the top\n\t\t\tthis._topClusterLevel._addChild(layer);\n\t\t\tlayer.__parent = this._topClusterLevel;\n\t\t\treturn;\n\t\t},\n\n\t\t/**\n\t\t * Refreshes the icon of all \"dirty\" visible clusters.\n\t\t * Non-visible \"dirty\" clusters will be updated when they are added to the map.\n\t\t * @private\n\t\t */\n\t\t_refreshClustersIcons: function () {\n\t\t\tthis._featureGroup.eachLayer(function (c) {\n\t\t\t\tif (c instanceof L.MarkerCluster && c._iconNeedsUpdate) {\n\t\t\t\t\tc._updateIcon();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t//Enqueue code to fire after the marker expand/contract has happened\n\t\t_enqueue: function (fn) {\n\t\t\tthis._queue.push(fn);\n\t\t\tif (!this._queueTimeout) {\n\t\t\t\tthis._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300);\n\t\t\t}\n\t\t},\n\t\t_processQueue: function () {\n\t\t\tfor (var i = 0; i < this._queue.length; i++) {\n\t\t\t\tthis._queue[i].call(this);\n\t\t\t}\n\t\t\tthis._queue.length = 0;\n\t\t\tclearTimeout(this._queueTimeout);\n\t\t\tthis._queueTimeout = null;\n\t\t},\n\n\t\t//Merge and split any existing clusters that are too big or small\n\t\t_mergeSplitClusters: function () {\n\t\t\tvar mapZoom = Math.round(this._map._zoom);\n\n\t\t\t//In case we are starting to split before the animation finished\n\t\t\tthis._processQueue();\n\n\t\t\tif (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split\n\t\t\t\tthis._animationStart();\n\t\t\t\t//Remove clusters now off screen\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds());\n\n\t\t\t\tthis._animationZoomIn(this._zoom, mapZoom);\n\n\t\t\t} else if (this._zoom > mapZoom) { //Zoom out, merge\n\t\t\t\tthis._animationStart();\n\n\t\t\t\tthis._animationZoomOut(this._zoom, mapZoom);\n\t\t\t} else {\n\t\t\t\tthis._moveEnd();\n\t\t\t}\n\t\t},\n\n\t\t//Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan)\n\t\t_getExpandedVisibleBounds: function () {\n\t\t\tif (!this.options.removeOutsideVisibleBounds) {\n\t\t\t\treturn this._mapBoundsInfinite;\n\t\t\t} else if (L.Browser.mobile) {\n\t\t\t\treturn this._checkBoundsMaxLat(this._map.getBounds());\n\t\t\t}\n\n\t\t\treturn this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor.\n\t\t},\n\n\t\t/**\n\t\t * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude\n\t\t * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas).\n\t\t * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without\n\t\t * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit,\n\t\t * making the user think that MCG \"eats\" them and never displays them again.\n\t\t * @param bounds L.LatLngBounds\n\t\t * @returns {L.LatLngBounds}\n\t\t * @private\n\t\t */\n\t\t_checkBoundsMaxLat: function (bounds) {\n\t\t\tvar maxLat = this._maxLat;\n\n\t\t\tif (maxLat !== undefined) {\n\t\t\t\tif (bounds.getNorth() >= maxLat) {\n\t\t\t\t\tbounds._northEast.lat = Infinity;\n\t\t\t\t}\n\t\t\t\tif (bounds.getSouth() <= -maxLat) {\n\t\t\t\t\tbounds._southWest.lat = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn bounds;\n\t\t},\n\n\t\t//Shared animation code\n\t\t_animationAddLayerNonAnimated: function (layer, newCluster) {\n\t\t\tif (newCluster === layer) {\n\t\t\t\tthis._featureGroup.addLayer(layer);\n\t\t\t} else if (newCluster._childCount === 2) {\n\t\t\t\tnewCluster._addToMap();\n\n\t\t\t\tvar markers = newCluster.getAllChildMarkers();\n\t\t\t\tthis._featureGroup.removeLayer(markers[0]);\n\t\t\t\tthis._featureGroup.removeLayer(markers[1]);\n\t\t\t} else {\n\t\t\t\tnewCluster._updateIcon();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Extracts individual (i.e. non-group) layers from a Layer Group.\n\t\t * @param group to extract layers from.\n\t\t * @param output {Array} in which to store the extracted layers.\n\t\t * @returns {*|Array}\n\t\t * @private\n\t\t */\n\t\t_extractNonGroupLayers: function (group, output) {\n\t\t\tvar layers = group.getLayers(),\n\t\t\t    i = 0,\n\t\t\t    layer;\n\n\t\t\toutput = output || [];\n\n\t\t\tfor (; i < layers.length; i++) {\n\t\t\t\tlayer = layers[i];\n\n\t\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\t\tthis._extractNonGroupLayers(layer, output);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\toutput.push(layer);\n\t\t\t}\n\n\t\t\treturn output;\n\t\t},\n\n\t\t/**\n\t\t * Implements the singleMarkerMode option.\n\t\t * @param layer Marker to re-style using the Clusters iconCreateFunction.\n\t\t * @returns {L.Icon} The newly created icon.\n\t\t * @private\n\t\t */\n\t\t_overrideMarkerIcon: function (layer) {\n\t\t\tvar icon = layer.options.icon = this.options.iconCreateFunction({\n\t\t\t\tgetChildCount: function () {\n\t\t\t\t\treturn 1;\n\t\t\t\t},\n\t\t\t\tgetAllChildMarkers: function () {\n\t\t\t\t\treturn [layer];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn icon;\n\t\t}\n\t});\n\n\t// Constant bounds used in case option \"removeOutsideVisibleBounds\" is set to false.\n\tL.MarkerClusterGroup.include({\n\t\t_mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity))\n\t});\n\n\tL.MarkerClusterGroup.include({\n\t\t_noAnimation: {\n\t\t\t//Non Animated versions of everything\n\t\t\t_animationStart: function () {\n\t\t\t\t//Do nothing...\n\t\t\t},\n\t\t\t_animationZoomIn: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);\n\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\n\t\t\t\t//We didn't actually animate, but we use this event to mean \"clustering animations have finished\"\n\t\t\t\tthis.fire('animationend');\n\t\t\t},\n\t\t\t_animationZoomOut: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);\n\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\n\t\t\t\t//We didn't actually animate, but we use this event to mean \"clustering animations have finished\"\n\t\t\t\tthis.fire('animationend');\n\t\t\t},\n\t\t\t_animationAddLayer: function (layer, newCluster) {\n\t\t\t\tthis._animationAddLayerNonAnimated(layer, newCluster);\n\t\t\t}\n\t\t},\n\n\t\t_withAnimation: {\n\t\t\t//Animated versions here\n\t\t\t_animationStart: function () {\n\t\t\t\tthis._map._mapPane.className += ' leaflet-cluster-anim';\n\t\t\t\tthis._inZoomAnimation++;\n\t\t\t},\n\n\t\t\t_animationZoomIn: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tvar bounds = this._getExpandedVisibleBounds(),\n\t\t\t\t    fg = this._featureGroup,\n\t\t\t\t\tminZoom = Math.floor(this._map.getMinZoom()),\n\t\t\t\t    i;\n\n\t\t\t\tthis._ignoreMove = true;\n\n\t\t\t\t//Add all children of current clusters to map and remove those clusters from map\n\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {\n\t\t\t\t\tvar startPos = c._latlng,\n\t\t\t\t\t    markers  = c._markers,\n\t\t\t\t\t    m;\n\n\t\t\t\t\tif (!bounds.contains(startPos)) {\n\t\t\t\t\t\tstartPos = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us\n\t\t\t\t\t\tfg.removeLayer(c);\n\t\t\t\t\t\tc._recursivelyAddChildrenToMap(null, newZoomLevel, bounds);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//Fade out old cluster\n\t\t\t\t\t\tc.clusterHide();\n\t\t\t\t\t\tc._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds);\n\t\t\t\t\t}\n\n\t\t\t\t\t//Remove all markers that aren't visible any more\n\t\t\t\t\t//TODO: Do we actually need to do this on the higher levels too?\n\t\t\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = markers[i];\n\t\t\t\t\t\tif (!bounds.contains(m._latlng)) {\n\t\t\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t});\n\n\t\t\t\tthis._forceLayout();\n\n\t\t\t\t//Update opacities\n\t\t\t\tthis._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel);\n\t\t\t\t//TODO Maybe? Update markers in _recursivelyBecomeVisible\n\t\t\t\tfg.eachLayer(function (n) {\n\t\t\t\t\tif (!(n instanceof L.MarkerCluster) && n._icon) {\n\t\t\t\t\t\tn.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//update the positions of the just added clusters/markers\n\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) {\n\t\t\t\t\tc._recursivelyRestoreChildPositions(newZoomLevel);\n\t\t\t\t});\n\n\t\t\t\tthis._ignoreMove = false;\n\n\t\t\t\t//Remove the old clusters and close the zoom animation\n\t\t\t\tthis._enqueue(function () {\n\t\t\t\t\t//update the positions of the just added clusters/markers\n\t\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {\n\t\t\t\t\t\tfg.removeLayer(c);\n\t\t\t\t\t\tc.clusterShow();\n\t\t\t\t\t});\n\n\t\t\t\t\tthis._animationEnd();\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t_animationZoomOut: function (previousZoomLevel, newZoomLevel) {\n\t\t\t\tthis._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel);\n\n\t\t\t\t//Need to add markers for those that weren't on the map before but are now\n\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\t\t\t\t//Remove markers that were on the map before but won't be now\n\t\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds());\n\t\t\t},\n\n\t\t\t_animationAddLayer: function (layer, newCluster) {\n\t\t\t\tvar me = this,\n\t\t\t\t    fg = this._featureGroup;\n\n\t\t\t\tfg.addLayer(layer);\n\t\t\t\tif (newCluster !== layer) {\n\t\t\t\t\tif (newCluster._childCount > 2) { //Was already a cluster\n\n\t\t\t\t\t\tnewCluster._updateIcon();\n\t\t\t\t\t\tthis._forceLayout();\n\t\t\t\t\t\tthis._animationStart();\n\n\t\t\t\t\t\tlayer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng()));\n\t\t\t\t\t\tlayer.clusterHide();\n\n\t\t\t\t\t\tthis._enqueue(function () {\n\t\t\t\t\t\t\tfg.removeLayer(layer);\n\t\t\t\t\t\t\tlayer.clusterShow();\n\n\t\t\t\t\t\t\tme._animationEnd();\n\t\t\t\t\t\t});\n\n\t\t\t\t\t} else { //Just became a cluster\n\t\t\t\t\t\tthis._forceLayout();\n\n\t\t\t\t\t\tme._animationStart();\n\t\t\t\t\t\tme._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Private methods for animated versions.\n\t\t_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {\n\t\t\tvar bounds = this._getExpandedVisibleBounds(),\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom());\n\n\t\t\t//Animate all of the markers in the clusters to move to their cluster center point\n\t\t\tcluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel);\n\n\t\t\tvar me = this;\n\n\t\t\t//Update the opacity (If we immediately set it they won't animate)\n\t\t\tthis._forceLayout();\n\t\t\tcluster._recursivelyBecomeVisible(bounds, newZoomLevel);\n\n\t\t\t//TODO: Maybe use the transition timing stuff to make this more reliable\n\t\t\t//When the animations are done, tidy up\n\t\t\tthis._enqueue(function () {\n\n\t\t\t\t//This cluster stopped being a cluster before the timeout fired\n\t\t\t\tif (cluster._childCount === 1) {\n\t\t\t\t\tvar m = cluster._markers[0];\n\t\t\t\t\t//If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it\n\t\t\t\t\tthis._ignoreMove = true;\n\t\t\t\t\tm.setLatLng(m.getLatLng());\n\t\t\t\t\tthis._ignoreMove = false;\n\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcluster._recursively(bounds, newZoomLevel, minZoom, function (c) {\n\t\t\t\t\t\tc._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tme._animationEnd();\n\t\t\t});\n\t\t},\n\n\t\t_animationEnd: function () {\n\t\t\tif (this._map) {\n\t\t\t\tthis._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');\n\t\t\t}\n\t\t\tthis._inZoomAnimation--;\n\t\t\tthis.fire('animationend');\n\t\t},\n\n\t\t//Force a browser layout of stuff in the map\n\t\t// Should apply the current opacity and location to all elements so we can update them again for an animation\n\t\t_forceLayout: function () {\n\t\t\t//In my testing this works, infact offsetWidth of any element seems to work.\n\t\t\t//Could loop all this._layers and do this for each _icon if it stops working\n\n\t\t\tL.Util.falseFn(document.body.offsetWidth);\n\t\t}\n\t});\n\n\tL.markerClusterGroup = function (options) {\n\t\treturn new L.MarkerClusterGroup(options);\n\t};\n\n\tvar MarkerCluster = L.MarkerCluster = L.Marker.extend({\n\t\toptions: L.Icon.prototype.options,\n\n\t\tinitialize: function (group, zoom, a, b) {\n\n\t\t\tL.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0),\n\t            { icon: this, pane: group.options.clusterPane });\n\n\t\t\tthis._group = group;\n\t\t\tthis._zoom = zoom;\n\n\t\t\tthis._markers = [];\n\t\t\tthis._childClusters = [];\n\t\t\tthis._childCount = 0;\n\t\t\tthis._iconNeedsUpdate = true;\n\t\t\tthis._boundsNeedUpdate = true;\n\n\t\t\tthis._bounds = new L.LatLngBounds();\n\n\t\t\tif (a) {\n\t\t\t\tthis._addChild(a);\n\t\t\t}\n\t\t\tif (b) {\n\t\t\t\tthis._addChild(b);\n\t\t\t}\n\t\t},\n\n\t\t//Recursively retrieve all child markers of this cluster\n\t\tgetAllChildMarkers: function (storageArray, ignoreDraggedMarker) {\n\t\t\tstorageArray = storageArray || [];\n\n\t\t\tfor (var i = this._childClusters.length - 1; i >= 0; i--) {\n\t\t\t\tthis._childClusters[i].getAllChildMarkers(storageArray, ignoreDraggedMarker);\n\t\t\t}\n\n\t\t\tfor (var j = this._markers.length - 1; j >= 0; j--) {\n\t\t\t\tif (ignoreDraggedMarker && this._markers[j].__dragStart) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstorageArray.push(this._markers[j]);\n\t\t\t}\n\n\t\t\treturn storageArray;\n\t\t},\n\n\t\t//Returns the count of how many child markers we have\n\t\tgetChildCount: function () {\n\t\t\treturn this._childCount;\n\t\t},\n\n\t\t//Zoom to the minimum of showing all of the child markers, or the extents of this cluster\n\t\tzoomToBounds: function (fitBoundsOptions) {\n\t\t\tvar childClusters = this._childClusters.slice(),\n\t\t\t\tmap = this._group._map,\n\t\t\t\tboundsZoom = map.getBoundsZoom(this._bounds),\n\t\t\t\tzoom = this._zoom + 1,\n\t\t\t\tmapZoom = map.getZoom(),\n\t\t\t\ti;\n\n\t\t\t//calculate how far we need to zoom down to see all of the markers\n\t\t\twhile (childClusters.length > 0 && boundsZoom > zoom) {\n\t\t\t\tzoom++;\n\t\t\t\tvar newClusters = [];\n\t\t\t\tfor (i = 0; i < childClusters.length; i++) {\n\t\t\t\t\tnewClusters = newClusters.concat(childClusters[i]._childClusters);\n\t\t\t\t}\n\t\t\t\tchildClusters = newClusters;\n\t\t\t}\n\n\t\t\tif (boundsZoom > zoom) {\n\t\t\t\tthis._group._map.setView(this._latlng, zoom);\n\t\t\t} else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead\n\t\t\t\tthis._group._map.setView(this._latlng, mapZoom + 1);\n\t\t\t} else {\n\t\t\t\tthis._group._map.fitBounds(this._bounds, fitBoundsOptions);\n\t\t\t}\n\t\t},\n\n\t\tgetBounds: function () {\n\t\t\tvar bounds = new L.LatLngBounds();\n\t\t\tbounds.extend(this._bounds);\n\t\t\treturn bounds;\n\t\t},\n\n\t\t_updateIcon: function () {\n\t\t\tthis._iconNeedsUpdate = true;\n\t\t\tif (this._icon) {\n\t\t\t\tthis.setIcon(this);\n\t\t\t}\n\t\t},\n\n\t\t//Cludge for Icon, we pretend to be an icon for performance\n\t\tcreateIcon: function () {\n\t\t\tif (this._iconNeedsUpdate) {\n\t\t\t\tthis._iconObj = this._group.options.iconCreateFunction(this);\n\t\t\t\tthis._iconNeedsUpdate = false;\n\t\t\t}\n\t\t\treturn this._iconObj.createIcon();\n\t\t},\n\t\tcreateShadow: function () {\n\t\t\treturn this._iconObj.createShadow();\n\t\t},\n\n\n\t\t_addChild: function (new1, isNotificationFromChild) {\n\n\t\t\tthis._iconNeedsUpdate = true;\n\n\t\t\tthis._boundsNeedUpdate = true;\n\t\t\tthis._setClusterCenter(new1);\n\n\t\t\tif (new1 instanceof L.MarkerCluster) {\n\t\t\t\tif (!isNotificationFromChild) {\n\t\t\t\t\tthis._childClusters.push(new1);\n\t\t\t\t\tnew1.__parent = this;\n\t\t\t\t}\n\t\t\t\tthis._childCount += new1._childCount;\n\t\t\t} else {\n\t\t\t\tif (!isNotificationFromChild) {\n\t\t\t\t\tthis._markers.push(new1);\n\t\t\t\t}\n\t\t\t\tthis._childCount++;\n\t\t\t}\n\n\t\t\tif (this.__parent) {\n\t\t\t\tthis.__parent._addChild(new1, true);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position.\n\t\t * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet.\n\t\t * @private\n\t\t */\n\t\t_setClusterCenter: function (child) {\n\t\t\tif (!this._cLatLng) {\n\t\t\t\t// when clustering, take position of the first point as the cluster center\n\t\t\t\tthis._cLatLng = child._cLatLng || child._latlng;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Assigns impossible bounding values so that the next extend entirely determines the new bounds.\n\t\t * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class.\n\t\t * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended.\n\t\t * @private\n\t\t */\n\t\t_resetBounds: function () {\n\t\t\tvar bounds = this._bounds;\n\n\t\t\tif (bounds._southWest) {\n\t\t\t\tbounds._southWest.lat = Infinity;\n\t\t\t\tbounds._southWest.lng = Infinity;\n\t\t\t}\n\t\t\tif (bounds._northEast) {\n\t\t\t\tbounds._northEast.lat = -Infinity;\n\t\t\t\tbounds._northEast.lng = -Infinity;\n\t\t\t}\n\t\t},\n\n\t\t_recalculateBounds: function () {\n\t\t\tvar markers = this._markers,\n\t\t\t    childClusters = this._childClusters,\n\t\t\t    latSum = 0,\n\t\t\t    lngSum = 0,\n\t\t\t    totalCount = this._childCount,\n\t\t\t    i, child, childLatLng, childCount;\n\n\t\t\t// Case where all markers are removed from the map and we are left with just an empty _topClusterLevel.\n\t\t\tif (totalCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Reset rather than creating a new object, for performance.\n\t\t\tthis._resetBounds();\n\n\t\t\t// Child markers.\n\t\t\tfor (i = 0; i < markers.length; i++) {\n\t\t\t\tchildLatLng = markers[i]._latlng;\n\n\t\t\t\tthis._bounds.extend(childLatLng);\n\n\t\t\t\tlatSum += childLatLng.lat;\n\t\t\t\tlngSum += childLatLng.lng;\n\t\t\t}\n\n\t\t\t// Child clusters.\n\t\t\tfor (i = 0; i < childClusters.length; i++) {\n\t\t\t\tchild = childClusters[i];\n\n\t\t\t\t// Re-compute child bounds and weighted position first if necessary.\n\t\t\t\tif (child._boundsNeedUpdate) {\n\t\t\t\t\tchild._recalculateBounds();\n\t\t\t\t}\n\n\t\t\t\tthis._bounds.extend(child._bounds);\n\n\t\t\t\tchildLatLng = child._wLatLng;\n\t\t\t\tchildCount = child._childCount;\n\n\t\t\t\tlatSum += childLatLng.lat * childCount;\n\t\t\t\tlngSum += childLatLng.lng * childCount;\n\t\t\t}\n\n\t\t\tthis._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount);\n\n\t\t\t// Reset dirty flag.\n\t\t\tthis._boundsNeedUpdate = false;\n\t\t},\n\n\t\t//Set our markers position as given and add it to the map\n\t\t_addToMap: function (startPos) {\n\t\t\tif (startPos) {\n\t\t\t\tthis._backupLatlng = this._latlng;\n\t\t\t\tthis.setLatLng(startPos);\n\t\t\t}\n\t\t\tthis._group._featureGroup.addLayer(this);\n\t\t},\n\n\t\t_recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) {\n\t\t\tthis._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1,\n\t\t\t\tfunction (c) {\n\t\t\t\t\tvar markers = c._markers,\n\t\t\t\t\t\ti, m;\n\t\t\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = markers[i];\n\n\t\t\t\t\t\t//Only do it if the icon is still on the map\n\t\t\t\t\t\tif (m._icon) {\n\t\t\t\t\t\t\tm._setPos(center);\n\t\t\t\t\t\t\tm.clusterHide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction (c) {\n\t\t\t\t\tvar childClusters = c._childClusters,\n\t\t\t\t\t\tj, cm;\n\t\t\t\t\tfor (j = childClusters.length - 1; j >= 0; j--) {\n\t\t\t\t\t\tcm = childClusters[j];\n\t\t\t\t\t\tif (cm._icon) {\n\t\t\t\t\t\t\tcm._setPos(center);\n\t\t\t\t\t\t\tcm.clusterHide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) {\n\t\t\tthis._recursively(bounds, newZoomLevel, mapMinZoom,\n\t\t\t\tfunction (c) {\n\t\t\t\t\tc._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);\n\n\t\t\t\t\t//TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be.\n\t\t\t\t\t//As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate\n\t\t\t\t\tif (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) {\n\t\t\t\t\t\tc.clusterShow();\n\t\t\t\t\t\tc._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds\n\t\t\t\t\t} else {\n\t\t\t\t\t\tc.clusterHide();\n\t\t\t\t\t}\n\n\t\t\t\t\tc._addToMap();\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t_recursivelyBecomeVisible: function (bounds, zoomLevel) {\n\t\t\tthis._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) {\n\t\t\t\tc.clusterShow();\n\t\t\t});\n\t\t},\n\n\t\t_recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) {\n\t\t\tthis._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel,\n\t\t\t\tfunction (c) {\n\t\t\t\t\tif (zoomLevel === c._zoom) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t//Add our child markers at startPos (so they can be animated out)\n\t\t\t\t\tfor (var i = c._markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tvar nm = c._markers[i];\n\n\t\t\t\t\t\tif (!bounds.contains(nm._latlng)) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (startPos) {\n\t\t\t\t\t\t\tnm._backupLatlng = nm.getLatLng();\n\n\t\t\t\t\t\t\tnm.setLatLng(startPos);\n\t\t\t\t\t\t\tif (nm.clusterHide) {\n\t\t\t\t\t\t\t\tnm.clusterHide();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tc._group._featureGroup.addLayer(nm);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction (c) {\n\t\t\t\t\tc._addToMap(startPos);\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t_recursivelyRestoreChildPositions: function (zoomLevel) {\n\t\t\t//Fix positions of child markers\n\t\t\tfor (var i = this._markers.length - 1; i >= 0; i--) {\n\t\t\t\tvar nm = this._markers[i];\n\t\t\t\tif (nm._backupLatlng) {\n\t\t\t\t\tnm.setLatLng(nm._backupLatlng);\n\t\t\t\t\tdelete nm._backupLatlng;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (zoomLevel - 1 === this._zoom) {\n\t\t\t\t//Reposition child clusters\n\t\t\t\tfor (var j = this._childClusters.length - 1; j >= 0; j--) {\n\t\t\t\t\tthis._childClusters[j]._restorePosition();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var k = this._childClusters.length - 1; k >= 0; k--) {\n\t\t\t\t\tthis._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_restorePosition: function () {\n\t\t\tif (this._backupLatlng) {\n\t\t\t\tthis.setLatLng(this._backupLatlng);\n\t\t\t\tdelete this._backupLatlng;\n\t\t\t}\n\t\t},\n\n\t\t//exceptBounds: If set, don't remove any markers/clusters in it\n\t\t_recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) {\n\t\t\tvar m, i;\n\t\t\tthis._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1,\n\t\t\t\tfunction (c) {\n\t\t\t\t\t//Remove markers at every level\n\t\t\t\t\tfor (i = c._markers.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = c._markers[i];\n\t\t\t\t\t\tif (!exceptBounds || !exceptBounds.contains(m._latlng)) {\n\t\t\t\t\t\t\tc._group._featureGroup.removeLayer(m);\n\t\t\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfunction (c) {\n\t\t\t\t\t//Remove child clusters at just the bottom level\n\t\t\t\t\tfor (i = c._childClusters.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tm = c._childClusters[i];\n\t\t\t\t\t\tif (!exceptBounds || !exceptBounds.contains(m._latlng)) {\n\t\t\t\t\t\t\tc._group._featureGroup.removeLayer(m);\n\t\t\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t//Run the given functions recursively to this and child clusters\n\t\t// boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to\n\t\t// zoomLevelToStart: zoom level to start running functions (inclusive)\n\t\t// zoomLevelToStop: zoom level to stop running functions (inclusive)\n\t\t// runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level\n\t\t// runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level\n\t\t_recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) {\n\t\t\tvar childClusters = this._childClusters,\n\t\t\t    zoom = this._zoom,\n\t\t\t    i, c;\n\n\t\t\tif (zoomLevelToStart <= zoom) {\n\t\t\t\tif (runAtEveryLevel) {\n\t\t\t\t\trunAtEveryLevel(this);\n\t\t\t\t}\n\t\t\t\tif (runAtBottomLevel && zoom === zoomLevelToStop) {\n\t\t\t\t\trunAtBottomLevel(this);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (zoom < zoomLevelToStart || zoom < zoomLevelToStop) {\n\t\t\t\tfor (i = childClusters.length - 1; i >= 0; i--) {\n\t\t\t\t\tc = childClusters[i];\n\t\t\t\t\tif (c._boundsNeedUpdate) {\n\t\t\t\t\t\tc._recalculateBounds();\n\t\t\t\t\t}\n\t\t\t\t\tif (boundsToApplyTo.intersects(c._bounds)) {\n\t\t\t\t\t\tc._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t//Returns true if we are the parent of only one cluster and that cluster is the same as us\n\t\t_isSingleParent: function () {\n\t\t\t//Don't need to check this._markers as the rest won't work if there are any\n\t\t\treturn this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount;\n\t\t}\n\t});\n\n\t/*\n\t* Extends L.Marker to include two extra methods: clusterHide and clusterShow.\n\t* \n\t* They work as setOpacity(0) and setOpacity(1) respectively, but\n\t* don't overwrite the options.opacity\n\t* \n\t*/\n\n\tL.Marker.include({\n\t\tclusterHide: function () {\n\t\t\tvar backup = this.options.opacity;\n\t\t\tthis.setOpacity(0);\n\t\t\tthis.options.opacity = backup;\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\tclusterShow: function () {\n\t\t\treturn this.setOpacity(this.options.opacity);\n\t\t}\n\t});\n\n\tL.DistanceGrid = function (cellSize) {\n\t\tthis._cellSize = cellSize;\n\t\tthis._sqCellSize = cellSize * cellSize;\n\t\tthis._grid = {};\n\t\tthis._objectPoint = { };\n\t};\n\n\tL.DistanceGrid.prototype = {\n\n\t\taddObject: function (obj, point) {\n\t\t\tvar x = this._getCoord(point.x),\n\t\t\t    y = this._getCoord(point.y),\n\t\t\t    grid = this._grid,\n\t\t\t    row = grid[y] = grid[y] || {},\n\t\t\t    cell = row[x] = row[x] || [],\n\t\t\t    stamp = L.Util.stamp(obj);\n\n\t\t\tthis._objectPoint[stamp] = point;\n\n\t\t\tcell.push(obj);\n\t\t},\n\n\t\tupdateObject: function (obj, point) {\n\t\t\tthis.removeObject(obj);\n\t\t\tthis.addObject(obj, point);\n\t\t},\n\n\t\t//Returns true if the object was found\n\t\tremoveObject: function (obj, point) {\n\t\t\tvar x = this._getCoord(point.x),\n\t\t\t    y = this._getCoord(point.y),\n\t\t\t    grid = this._grid,\n\t\t\t    row = grid[y] = grid[y] || {},\n\t\t\t    cell = row[x] = row[x] || [],\n\t\t\t    i, len;\n\n\t\t\tdelete this._objectPoint[L.Util.stamp(obj)];\n\n\t\t\tfor (i = 0, len = cell.length; i < len; i++) {\n\t\t\t\tif (cell[i] === obj) {\n\n\t\t\t\t\tcell.splice(i, 1);\n\n\t\t\t\t\tif (len === 1) {\n\t\t\t\t\t\tdelete row[x];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\n\t\teachObject: function (fn, context) {\n\t\t\tvar i, j, k, len, row, cell, removed,\n\t\t\t    grid = this._grid;\n\n\t\t\tfor (i in grid) {\n\t\t\t\trow = grid[i];\n\n\t\t\t\tfor (j in row) {\n\t\t\t\t\tcell = row[j];\n\n\t\t\t\t\tfor (k = 0, len = cell.length; k < len; k++) {\n\t\t\t\t\t\tremoved = fn.call(context, cell[k]);\n\t\t\t\t\t\tif (removed) {\n\t\t\t\t\t\t\tk--;\n\t\t\t\t\t\t\tlen--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tgetNearObject: function (point) {\n\t\t\tvar x = this._getCoord(point.x),\n\t\t\t    y = this._getCoord(point.y),\n\t\t\t    i, j, k, row, cell, len, obj, dist,\n\t\t\t    objectPoint = this._objectPoint,\n\t\t\t    closestDistSq = this._sqCellSize,\n\t\t\t    closest = null;\n\n\t\t\tfor (i = y - 1; i <= y + 1; i++) {\n\t\t\t\trow = this._grid[i];\n\t\t\t\tif (row) {\n\n\t\t\t\t\tfor (j = x - 1; j <= x + 1; j++) {\n\t\t\t\t\t\tcell = row[j];\n\t\t\t\t\t\tif (cell) {\n\n\t\t\t\t\t\t\tfor (k = 0, len = cell.length; k < len; k++) {\n\t\t\t\t\t\t\t\tobj = cell[k];\n\t\t\t\t\t\t\t\tdist = this._sqDist(objectPoint[L.Util.stamp(obj)], point);\n\t\t\t\t\t\t\t\tif (dist < closestDistSq ||\n\t\t\t\t\t\t\t\t\tdist <= closestDistSq && closest === null) {\n\t\t\t\t\t\t\t\t\tclosestDistSq = dist;\n\t\t\t\t\t\t\t\t\tclosest = obj;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn closest;\n\t\t},\n\n\t\t_getCoord: function (x) {\n\t\t\tvar coord = Math.floor(x / this._cellSize);\n\t\t\treturn isFinite(coord) ? coord : x;\n\t\t},\n\n\t\t_sqDist: function (p, p2) {\n\t\t\tvar dx = p2.x - p.x,\n\t\t\t    dy = p2.y - p.y;\n\t\t\treturn dx * dx + dy * dy;\n\t\t}\n\t};\n\n\t/* Copyright (c) 2012 the authors listed at the following URL, and/or\n\tthe authors of referenced articles or incorporated external code:\n\thttp://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256\n\n\tPermission is hereby granted, free of charge, to any person obtaining\n\ta copy of this software and associated documentation files (the\n\t\"Software\"), to deal in the Software without restriction, including\n\twithout limitation the rights to use, copy, modify, merge, publish,\n\tdistribute, sublicense, and/or sell copies of the Software, and to\n\tpermit persons to whom the Software is furnished to do so, subject to\n\tthe following conditions:\n\n\tThe above copyright notice and this permission notice shall be\n\tincluded in all copies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n\tEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\tMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n\tIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n\tCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n\tTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n\tSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\tRetrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434\n\t*/\n\n\t(function () {\n\t\tL.QuickHull = {\n\n\t\t\t/*\n\t\t\t * @param {Object} cpt a point to be measured from the baseline\n\t\t\t * @param {Array} bl the baseline, as represented by a two-element\n\t\t\t *   array of latlng objects.\n\t\t\t * @returns {Number} an approximate distance measure\n\t\t\t */\n\t\t\tgetDistant: function (cpt, bl) {\n\t\t\t\tvar vY = bl[1].lat - bl[0].lat,\n\t\t\t\t\tvX = bl[0].lng - bl[1].lng;\n\t\t\t\treturn (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng));\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * @param {Array} baseLine a two-element array of latlng objects\n\t\t\t *   representing the baseline to project from\n\t\t\t * @param {Array} latLngs an array of latlng objects\n\t\t\t * @returns {Object} the maximum point and all new points to stay\n\t\t\t *   in consideration for the hull.\n\t\t\t */\n\t\t\tfindMostDistantPointFromBaseLine: function (baseLine, latLngs) {\n\t\t\t\tvar maxD = 0,\n\t\t\t\t\tmaxPt = null,\n\t\t\t\t\tnewPoints = [],\n\t\t\t\t\ti, pt, d;\n\n\t\t\t\tfor (i = latLngs.length - 1; i >= 0; i--) {\n\t\t\t\t\tpt = latLngs[i];\n\t\t\t\t\td = this.getDistant(pt, baseLine);\n\n\t\t\t\t\tif (d > 0) {\n\t\t\t\t\t\tnewPoints.push(pt);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (d > maxD) {\n\t\t\t\t\t\tmaxD = d;\n\t\t\t\t\t\tmaxPt = pt;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn { maxPoint: maxPt, newPoints: newPoints };\n\t\t\t},\n\n\n\t\t\t/*\n\t\t\t * Given a baseline, compute the convex hull of latLngs as an array\n\t\t\t * of latLngs.\n\t\t\t *\n\t\t\t * @param {Array} latLngs\n\t\t\t * @returns {Array}\n\t\t\t */\n\t\t\tbuildConvexHull: function (baseLine, latLngs) {\n\t\t\t\tvar convexHullBaseLines = [],\n\t\t\t\t\tt = this.findMostDistantPointFromBaseLine(baseLine, latLngs);\n\n\t\t\t\tif (t.maxPoint) { // if there is still a point \"outside\" the base line\n\t\t\t\t\tconvexHullBaseLines =\n\t\t\t\t\t\tconvexHullBaseLines.concat(\n\t\t\t\t\t\t\tthis.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints)\n\t\t\t\t\t\t);\n\t\t\t\t\tconvexHullBaseLines =\n\t\t\t\t\t\tconvexHullBaseLines.concat(\n\t\t\t\t\t\t\tthis.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints)\n\t\t\t\t\t\t);\n\t\t\t\t\treturn convexHullBaseLines;\n\t\t\t\t} else {  // if there is no more point \"outside\" the base line, the current base line is part of the convex hull\n\t\t\t\t\treturn [baseLine[0]];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/*\n\t\t\t * Given an array of latlngs, compute a convex hull as an array\n\t\t\t * of latlngs\n\t\t\t *\n\t\t\t * @param {Array} latLngs\n\t\t\t * @returns {Array}\n\t\t\t */\n\t\t\tgetConvexHull: function (latLngs) {\n\t\t\t\t// find first baseline\n\t\t\t\tvar maxLat = false, minLat = false,\n\t\t\t\t\tmaxLng = false, minLng = false,\n\t\t\t\t\tmaxLatPt = null, minLatPt = null,\n\t\t\t\t\tmaxLngPt = null, minLngPt = null,\n\t\t\t\t\tmaxPt = null, minPt = null,\n\t\t\t\t\ti;\n\n\t\t\t\tfor (i = latLngs.length - 1; i >= 0; i--) {\n\t\t\t\t\tvar pt = latLngs[i];\n\t\t\t\t\tif (maxLat === false || pt.lat > maxLat) {\n\t\t\t\t\t\tmaxLatPt = pt;\n\t\t\t\t\t\tmaxLat = pt.lat;\n\t\t\t\t\t}\n\t\t\t\t\tif (minLat === false || pt.lat < minLat) {\n\t\t\t\t\t\tminLatPt = pt;\n\t\t\t\t\t\tminLat = pt.lat;\n\t\t\t\t\t}\n\t\t\t\t\tif (maxLng === false || pt.lng > maxLng) {\n\t\t\t\t\t\tmaxLngPt = pt;\n\t\t\t\t\t\tmaxLng = pt.lng;\n\t\t\t\t\t}\n\t\t\t\t\tif (minLng === false || pt.lng < minLng) {\n\t\t\t\t\t\tminLngPt = pt;\n\t\t\t\t\t\tminLng = pt.lng;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (minLat !== maxLat) {\n\t\t\t\t\tminPt = minLatPt;\n\t\t\t\t\tmaxPt = maxLatPt;\n\t\t\t\t} else {\n\t\t\t\t\tminPt = minLngPt;\n\t\t\t\t\tmaxPt = maxLngPt;\n\t\t\t\t}\n\n\t\t\t\tvar ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs),\n\t\t\t\t\t\t\t\t\tthis.buildConvexHull([maxPt, minPt], latLngs));\n\t\t\t\treturn ch;\n\t\t\t}\n\t\t};\n\t}());\n\n\tL.MarkerCluster.include({\n\t\tgetConvexHull: function () {\n\t\t\tvar childMarkers = this.getAllChildMarkers(),\n\t\t\t\tpoints = [],\n\t\t\t\tp, i;\n\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tp = childMarkers[i].getLatLng();\n\t\t\t\tpoints.push(p);\n\t\t\t}\n\n\t\t\treturn L.QuickHull.getConvexHull(points);\n\t\t}\n\t});\n\n\t//This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet\n\t//Huge thanks to jawj for implementing it first to make my job easy :-)\n\n\tL.MarkerCluster.include({\n\n\t\t_2PI: Math.PI * 2,\n\t\t_circleFootSeparation: 25, //related to circumference of circle\n\t\t_circleStartAngle: 0,\n\n\t\t_spiralFootSeparation:  28, //related to size of spiral (experiment!)\n\t\t_spiralLengthStart: 11,\n\t\t_spiralLengthFactor: 5,\n\n\t\t_circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards.\n\t\t\t\t\t\t\t\t\t// 0 -> always spiral; Infinity -> always circle\n\n\t\tspiderfy: function () {\n\t\t\tif (this._group._spiderfied === this || this._group._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar childMarkers = this.getAllChildMarkers(null, true),\n\t\t\t\tgroup = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tcenter = map.latLngToLayerPoint(this._latlng),\n\t\t\t\tpositions;\n\n\t\t\tthis._group._unspiderfy();\n\t\t\tthis._group._spiderfied = this;\n\n\t\t\t//TODO Maybe: childMarkers order by distance to center\n\n\t\t\tif (this._group.options.spiderfyShapePositions) {\n\t\t\t\tpositions = this._group.options.spiderfyShapePositions(childMarkers.length, center);\n\t\t\t} else if (childMarkers.length >= this._circleSpiralSwitchover) {\n\t\t\t\tpositions = this._generatePointsSpiral(childMarkers.length, center);\n\t\t\t} else {\n\t\t\t\tcenter.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons.\n\t\t\t\tpositions = this._generatePointsCircle(childMarkers.length, center);\n\t\t\t}\n\n\t\t\tthis._animationSpiderfy(childMarkers, positions);\n\t\t},\n\n\t\tunspiderfy: function (zoomDetails) {\n\t\t\t/// <param Name=\"zoomDetails\">Argument from zoomanim if being called in a zoom animation or null otherwise</param>\n\t\t\tif (this._group._inZoomAnimation) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._animationUnspiderfy(zoomDetails);\n\n\t\t\tthis._group._spiderfied = null;\n\t\t},\n\n\t\t_generatePointsCircle: function (count, centerPt) {\n\t\t\tvar circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count),\n\t\t\t\tlegLength = circumference / this._2PI,  //radius from circumference\n\t\t\t\tangleStep = this._2PI / count,\n\t\t\t\tres = [],\n\t\t\t\ti, angle;\n\n\t\t\tlegLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon.\n\n\t\t\tres.length = count;\n\n\t\t\tfor (i = 0; i < count; i++) { // Clockwise, like spiral.\n\t\t\t\tangle = this._circleStartAngle + i * angleStep;\n\t\t\t\tres[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();\n\t\t\t}\n\n\t\t\treturn res;\n\t\t},\n\n\t\t_generatePointsSpiral: function (count, centerPt) {\n\t\t\tvar spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier,\n\t\t\t\tlegLength = spiderfyDistanceMultiplier * this._spiralLengthStart,\n\t\t\t\tseparation = spiderfyDistanceMultiplier * this._spiralFootSeparation,\n\t\t\t\tlengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI,\n\t\t\t\tangle = 0,\n\t\t\t\tres = [],\n\t\t\t\ti;\n\n\t\t\tres.length = count;\n\n\t\t\t// Higher index, closer position to cluster center.\n\t\t\tfor (i = count; i >= 0; i--) {\n\t\t\t\t// Skip the first position, so that we are already farther from center and we avoid\n\t\t\t\t// being under the default cluster icon (especially important for Circle Markers).\n\t\t\t\tif (i < count) {\n\t\t\t\t\tres[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();\n\t\t\t\t}\n\t\t\t\tangle += separation / legLength + i * 0.0005;\n\t\t\t\tlegLength += lengthFactor / angle;\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\n\t\t_noanimationUnspiderfy: function () {\n\t\t\tvar group = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tchildMarkers = this.getAllChildMarkers(null, true),\n\t\t\t\tm, i;\n\n\t\t\tgroup._ignoreMove = true;\n\n\t\t\tthis.setOpacity(1);\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\tfg.removeLayer(m);\n\n\t\t\t\tif (m._preSpiderfyLatlng) {\n\t\t\t\t\tm.setLatLng(m._preSpiderfyLatlng);\n\t\t\t\t\tdelete m._preSpiderfyLatlng;\n\t\t\t\t}\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(0);\n\t\t\t\t}\n\n\t\t\t\tif (m._spiderLeg) {\n\t\t\t\t\tmap.removeLayer(m._spiderLeg);\n\t\t\t\t\tdelete m._spiderLeg;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroup.fire('unspiderfied', {\n\t\t\t\tcluster: this,\n\t\t\t\tmarkers: childMarkers\n\t\t\t});\n\t\t\tgroup._ignoreMove = false;\n\t\t\tgroup._spiderfied = null;\n\t\t}\n\t});\n\n\t//Non Animated versions of everything\n\tL.MarkerClusterNonAnimated = L.MarkerCluster.extend({\n\t\t_animationSpiderfy: function (childMarkers, positions) {\n\t\t\tvar group = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tlegOptions = this._group.options.spiderLegPolylineOptions,\n\t\t\t\ti, m, leg, newPos;\n\n\t\t\tgroup._ignoreMove = true;\n\n\t\t\t// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.\n\t\t\t// The reverse order trick no longer improves performance on modern browsers.\n\t\t\tfor (i = 0; i < childMarkers.length; i++) {\n\t\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.\n\t\t\t\tleg = new L.Polyline([this._latlng, newPos], legOptions);\n\t\t\t\tmap.addLayer(leg);\n\t\t\t\tm._spiderLeg = leg;\n\n\t\t\t\t// Now add the marker.\n\t\t\t\tm._preSpiderfyLatlng = m._latlng;\n\t\t\t\tm.setLatLng(newPos);\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING\n\t\t\t\t}\n\n\t\t\t\tfg.addLayer(m);\n\t\t\t}\n\t\t\tthis.setOpacity(0.3);\n\n\t\t\tgroup._ignoreMove = false;\n\t\t\tgroup.fire('spiderfied', {\n\t\t\t\tcluster: this,\n\t\t\t\tmarkers: childMarkers\n\t\t\t});\n\t\t},\n\n\t\t_animationUnspiderfy: function () {\n\t\t\tthis._noanimationUnspiderfy();\n\t\t}\n\t});\n\n\t//Animated versions here\n\tL.MarkerCluster.include({\n\n\t\t_animationSpiderfy: function (childMarkers, positions) {\n\t\t\tvar me = this,\n\t\t\t\tgroup = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tthisLayerLatLng = this._latlng,\n\t\t\t\tthisLayerPos = map.latLngToLayerPoint(thisLayerLatLng),\n\t\t\t\tsvg = L.Path.SVG,\n\t\t\t\tlegOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation.\n\t\t\t\tfinalLegOpacity = legOptions.opacity,\n\t\t\t\ti, m, leg, legPath, legLength, newPos;\n\n\t\t\tif (finalLegOpacity === undefined) {\n\t\t\t\tfinalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity;\n\t\t\t}\n\n\t\t\tif (svg) {\n\t\t\t\t// If the initial opacity of the spider leg is not 0 then it appears before the animation starts.\n\t\t\t\tlegOptions.opacity = 0;\n\n\t\t\t\t// Add the class for CSS transitions.\n\t\t\t\tlegOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg';\n\t\t\t} else {\n\t\t\t\t// Make sure we have a defined opacity.\n\t\t\t\tlegOptions.opacity = finalLegOpacity;\n\t\t\t}\n\n\t\t\tgroup._ignoreMove = true;\n\n\t\t\t// Add markers and spider legs to map, hidden at our center point.\n\t\t\t// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.\n\t\t\t// The reverse order trick no longer improves performance on modern browsers.\n\t\t\tfor (i = 0; i < childMarkers.length; i++) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\n\t\t\t\t// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.\n\t\t\t\tleg = new L.Polyline([thisLayerLatLng, newPos], legOptions);\n\t\t\t\tmap.addLayer(leg);\n\t\t\t\tm._spiderLeg = leg;\n\n\t\t\t\t// Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/\n\t\t\t\t// In our case the transition property is declared in the CSS file.\n\t\t\t\tif (svg) {\n\t\t\t\t\tlegPath = leg._path;\n\t\t\t\t\tlegLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox.\n\t\t\t\t\tlegPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated.\n\t\t\t\t\tlegPath.style.strokeDashoffset = legLength;\n\t\t\t\t}\n\n\t\t\t\t// If it is a marker, add it now and we'll animate it out\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING\n\t\t\t\t}\n\t\t\t\tif (m.clusterHide) {\n\t\t\t\t\tm.clusterHide();\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Vectors just get immediately added\n\t\t\t\tfg.addLayer(m);\n\n\t\t\t\tif (m._setPos) {\n\t\t\t\t\tm._setPos(thisLayerPos);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroup._forceLayout();\n\t\t\tgroup._animationStart();\n\n\t\t\t// Reveal markers and spider legs.\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t//Move marker to new position\n\t\t\t\tm._preSpiderfyLatlng = m._latlng;\n\t\t\t\tm.setLatLng(newPos);\n\t\t\t\t\n\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\tm.clusterShow();\n\t\t\t\t}\n\n\t\t\t\t// Animate leg (animation is actually delegated to CSS transition).\n\t\t\t\tif (svg) {\n\t\t\t\t\tleg = m._spiderLeg;\n\t\t\t\t\tlegPath = leg._path;\n\t\t\t\t\tlegPath.style.strokeDashoffset = 0;\n\t\t\t\t\t//legPath.style.strokeOpacity = finalLegOpacity;\n\t\t\t\t\tleg.setStyle({opacity: finalLegOpacity});\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.setOpacity(0.3);\n\n\t\t\tgroup._ignoreMove = false;\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tgroup._animationEnd();\n\t\t\t\tgroup.fire('spiderfied', {\n\t\t\t\t\tcluster: me,\n\t\t\t\t\tmarkers: childMarkers\n\t\t\t\t});\n\t\t\t}, 200);\n\t\t},\n\n\t\t_animationUnspiderfy: function (zoomDetails) {\n\t\t\tvar me = this,\n\t\t\t\tgroup = this._group,\n\t\t\t\tmap = group._map,\n\t\t\t\tfg = group._featureGroup,\n\t\t\t\tthisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng),\n\t\t\t\tchildMarkers = this.getAllChildMarkers(null, true),\n\t\t\t\tsvg = L.Path.SVG,\n\t\t\t\tm, i, leg, legPath, legLength, nonAnimatable;\n\n\t\t\tgroup._ignoreMove = true;\n\t\t\tgroup._animationStart();\n\n\t\t\t//Make us visible and bring the child markers back in\n\t\t\tthis.setOpacity(1);\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t//Marker was added to us after we were spiderfied\n\t\t\t\tif (!m._preSpiderfyLatlng) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t//Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll\n\t\t\t\tm.closePopup();\n\n\t\t\t\t//Fix up the location to the real one\n\t\t\t\tm.setLatLng(m._preSpiderfyLatlng);\n\t\t\t\tdelete m._preSpiderfyLatlng;\n\n\t\t\t\t//Hack override the location to be our center\n\t\t\t\tnonAnimatable = true;\n\t\t\t\tif (m._setPos) {\n\t\t\t\t\tm._setPos(thisLayerPos);\n\t\t\t\t\tnonAnimatable = false;\n\t\t\t\t}\n\t\t\t\tif (m.clusterHide) {\n\t\t\t\t\tm.clusterHide();\n\t\t\t\t\tnonAnimatable = false;\n\t\t\t\t}\n\t\t\t\tif (nonAnimatable) {\n\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t}\n\n\t\t\t\t// Animate the spider leg back in (animation is actually delegated to CSS transition).\n\t\t\t\tif (svg) {\n\t\t\t\t\tleg = m._spiderLeg;\n\t\t\t\t\tlegPath = leg._path;\n\t\t\t\t\tlegLength = legPath.getTotalLength() + 0.1;\n\t\t\t\t\tlegPath.style.strokeDashoffset = legLength;\n\t\t\t\t\tleg.setStyle({opacity: 0});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgroup._ignoreMove = false;\n\n\t\t\tsetTimeout(function () {\n\t\t\t\t//If we have only <= one child left then that marker will be shown on the map so don't remove it!\n\t\t\t\tvar stillThereChildCount = 0;\n\t\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\t\tm = childMarkers[i];\n\t\t\t\t\tif (m._spiderLeg) {\n\t\t\t\t\t\tstillThereChildCount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\n\t\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\t\tm = childMarkers[i];\n\n\t\t\t\t\tif (!m._spiderLeg) { //Has already been unspiderfied\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t}\n\t\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\t\tm.setZIndexOffset(0);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (stillThereChildCount > 1) {\n\t\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\t}\n\n\t\t\t\t\tmap.removeLayer(m._spiderLeg);\n\t\t\t\t\tdelete m._spiderLeg;\n\t\t\t\t}\n\t\t\t\tgroup._animationEnd();\n\t\t\t\tgroup.fire('unspiderfied', {\n\t\t\t\t\tcluster: me,\n\t\t\t\t\tmarkers: childMarkers\n\t\t\t\t});\n\t\t\t}, 200);\n\t\t}\n\t});\n\n\n\tL.MarkerClusterGroup.include({\n\t\t//The MarkerCluster currently spiderfied (if any)\n\t\t_spiderfied: null,\n\n\t\tunspiderfy: function () {\n\t\t\tthis._unspiderfy.apply(this, arguments);\n\t\t},\n\n\t\t_spiderfierOnAdd: function () {\n\t\t\tthis._map.on('click', this._unspiderfyWrapper, this);\n\n\t\t\tif (this._map.options.zoomAnimation) {\n\t\t\t\tthis._map.on('zoomstart', this._unspiderfyZoomStart, this);\n\t\t\t}\n\t\t\t//Browsers without zoomAnimation or a big zoom don't fire zoomstart\n\t\t\tthis._map.on('zoomend', this._noanimationUnspiderfy, this);\n\n\t\t\tif (!L.Browser.touch) {\n\t\t\t\tthis._map.getRenderer(this);\n\t\t\t\t//Needs to happen in the pageload, not after, or animations don't work in webkit\n\t\t\t\t//  http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements\n\t\t\t\t//Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable\n\t\t\t}\n\t\t},\n\n\t\t_spiderfierOnRemove: function () {\n\t\t\tthis._map.off('click', this._unspiderfyWrapper, this);\n\t\t\tthis._map.off('zoomstart', this._unspiderfyZoomStart, this);\n\t\t\tthis._map.off('zoomanim', this._unspiderfyZoomAnim, this);\n\t\t\tthis._map.off('zoomend', this._noanimationUnspiderfy, this);\n\n\t\t\t//Ensure that markers are back where they should be\n\t\t\t// Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane\n\t\t\tthis._noanimationUnspiderfy();\n\t\t},\n\n\t\t//On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated)\n\t\t//This means we can define the animation they do rather than Markers doing an animation to their actual location\n\t\t_unspiderfyZoomStart: function () {\n\t\t\tif (!this._map) { //May have been removed from the map by a zoomEnd handler\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._map.on('zoomanim', this._unspiderfyZoomAnim, this);\n\t\t},\n\n\t\t_unspiderfyZoomAnim: function (zoomDetails) {\n\t\t\t//Wait until the first zoomanim after the user has finished touch-zooming before running the animation\n\t\t\tif (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._map.off('zoomanim', this._unspiderfyZoomAnim, this);\n\t\t\tthis._unspiderfy(zoomDetails);\n\t\t},\n\n\t\t_unspiderfyWrapper: function () {\n\t\t\t/// <summary>_unspiderfy but passes no arguments</summary>\n\t\t\tthis._unspiderfy();\n\t\t},\n\n\t\t_unspiderfy: function (zoomDetails) {\n\t\t\tif (this._spiderfied) {\n\t\t\t\tthis._spiderfied.unspiderfy(zoomDetails);\n\t\t\t}\n\t\t},\n\n\t\t_noanimationUnspiderfy: function () {\n\t\t\tif (this._spiderfied) {\n\t\t\t\tthis._spiderfied._noanimationUnspiderfy();\n\t\t\t}\n\t\t},\n\n\t\t//If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc\n\t\t_unspiderfyLayer: function (layer) {\n\t\t\tif (layer._spiderLeg) {\n\t\t\t\tthis._featureGroup.removeLayer(layer);\n\n\t\t\t\tif (layer.clusterShow) {\n\t\t\t\t\tlayer.clusterShow();\n\t\t\t\t}\n\t\t\t\t\t//Position will be fixed up immediately in _animationUnspiderfy\n\t\t\t\tif (layer.setZIndexOffset) {\n\t\t\t\t\tlayer.setZIndexOffset(0);\n\t\t\t\t}\n\n\t\t\t\tthis._map.removeLayer(layer._spiderLeg);\n\t\t\t\tdelete layer._spiderLeg;\n\t\t\t}\n\t\t}\n\t});\n\n\t/**\n\t * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing\n\t * markers' icon options and refreshing their icon and their parent clusters\n\t * accordingly (case where their iconCreateFunction uses data of childMarkers\n\t * to make up the cluster icon).\n\t */\n\n\n\tL.MarkerClusterGroup.include({\n\t\t/**\n\t\t * Updates the icon of all clusters which are parents of the given marker(s).\n\t\t * In singleMarkerMode, also updates the given marker(s) icon.\n\t\t * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)|\n\t\t * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent\n\t\t * clusters need to be updated. If not provided, retrieves all child markers of this.\n\t\t * @returns {L.MarkerClusterGroup}\n\t\t */\n\t\trefreshClusters: function (layers) {\n\t\t\tif (!layers) {\n\t\t\t\tlayers = this._topClusterLevel.getAllChildMarkers();\n\t\t\t} else if (layers instanceof L.MarkerClusterGroup) {\n\t\t\t\tlayers = layers._topClusterLevel.getAllChildMarkers();\n\t\t\t} else if (layers instanceof L.LayerGroup) {\n\t\t\t\tlayers = layers._layers;\n\t\t\t} else if (layers instanceof L.MarkerCluster) {\n\t\t\t\tlayers = layers.getAllChildMarkers();\n\t\t\t} else if (layers instanceof L.Marker) {\n\t\t\t\tlayers = [layers];\n\t\t\t} // else: must be an Array(L.Marker)|Map(L.Marker)\n\t\t\tthis._flagParentsIconsNeedUpdate(layers);\n\t\t\tthis._refreshClustersIcons();\n\n\t\t\t// In case of singleMarkerMode, also re-draw the markers.\n\t\t\tif (this.options.singleMarkerMode) {\n\t\t\t\tthis._refreshSingleMarkerModeMarkers(layers);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * Simply flags all parent clusters of the given markers as having a \"dirty\" icon.\n\t\t * @param layers Array(L.Marker)|Map(L.Marker) list of markers.\n\t\t * @private\n\t\t */\n\t\t_flagParentsIconsNeedUpdate: function (layers) {\n\t\t\tvar id, parent;\n\n\t\t\t// Assumes layers is an Array or an Object whose prototype is non-enumerable.\n\t\t\tfor (id in layers) {\n\t\t\t\t// Flag parent clusters' icon as \"dirty\", all the way up.\n\t\t\t\t// Dumb process that flags multiple times upper parents, but still\n\t\t\t\t// much more efficient than trying to be smart and make short lists,\n\t\t\t\t// at least in the case of a hierarchy following a power law:\n\t\t\t\t// http://jsperf.com/flag-nodes-in-power-hierarchy/2\n\t\t\t\tparent = layers[id].__parent;\n\t\t\t\twhile (parent) {\n\t\t\t\t\tparent._iconNeedsUpdate = true;\n\t\t\t\t\tparent = parent.__parent;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Re-draws the icon of the supplied markers.\n\t\t * To be used in singleMarkerMode only.\n\t\t * @param layers Array(L.Marker)|Map(L.Marker) list of markers.\n\t\t * @private\n\t\t */\n\t\t_refreshSingleMarkerModeMarkers: function (layers) {\n\t\t\tvar id, layer;\n\n\t\t\tfor (id in layers) {\n\t\t\t\tlayer = layers[id];\n\n\t\t\t\t// Make sure we do not override markers that do not belong to THIS group.\n\t\t\t\tif (this.hasLayer(layer)) {\n\t\t\t\t\t// Need to re-create the icon first, then re-draw the marker.\n\t\t\t\t\tlayer.setIcon(this._overrideMarkerIcon(layer));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tL.Marker.include({\n\t\t/**\n\t\t * Updates the given options in the marker's icon and refreshes the marker.\n\t\t * @param options map object of icon options.\n\t\t * @param directlyRefreshClusters boolean (optional) true to trigger\n\t\t * MCG.refreshClustersOf() right away with this single marker.\n\t\t * @returns {L.Marker}\n\t\t */\n\t\trefreshIconOptions: function (options, directlyRefreshClusters) {\n\t\t\tvar icon = this.options.icon;\n\n\t\t\tL.setOptions(icon, options);\n\n\t\t\tthis.setIcon(icon);\n\n\t\t\t// Shortcut to refresh the associated MCG clusters right away.\n\t\t\t// To be used when refreshing a single marker.\n\t\t\t// Otherwise, better use MCG.refreshClusters() once at the end with\n\t\t\t// the list of modified markers.\n\t\t\tif (directlyRefreshClusters && this.__parent) {\n\t\t\t\tthis.__parent._group.refreshClusters(this);\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\t});\n\n\texports.MarkerCluster = MarkerCluster;\n\texports.MarkerClusterGroup = MarkerClusterGroup;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=leaflet.markercluster-src.js.map\n","'use strict';\n\nvar bbox = require('@turf/bbox');\nvar booleanPointInPolygon = require('@turf/boolean-point-in-polygon');\nvar distance = require('@turf/distance');\nvar scale = require('@turf/transform-scale');\nvar cleanCoords = require('@turf/clean-coords');\nvar bboxPolygon = require('@turf/bbox-polygon');\nvar invariant = require('@turf/invariant');\nvar helpers = require('@turf/helpers');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bbox__default = /*#__PURE__*/_interopDefaultLegacy(bbox);\nvar booleanPointInPolygon__default = /*#__PURE__*/_interopDefaultLegacy(booleanPointInPolygon);\nvar distance__default = /*#__PURE__*/_interopDefaultLegacy(distance);\nvar scale__default = /*#__PURE__*/_interopDefaultLegacy(scale);\nvar cleanCoords__default = /*#__PURE__*/_interopDefaultLegacy(cleanCoords);\nvar bboxPolygon__default = /*#__PURE__*/_interopDefaultLegacy(bboxPolygon);\n\n// javascript-astar 0.4.1\n// http://github.com/bgrins/javascript-astar\n// Freely distributable under the MIT License.\n// Implements the astar search algorithm in javascript using a Binary Heap.\n// Includes Binary Heap (with modifications) from Marijn Haverbeke.\n// http://eloquentjavascript.net/appendix2.html\n\nfunction pathTo(node) {\n  var curr = node,\n    path = [];\n  while (curr.parent) {\n    path.unshift(curr);\n    curr = curr.parent;\n  }\n  return path;\n}\n\nfunction getHeap() {\n  return new BinaryHeap(function (node) {\n    return node.f;\n  });\n}\n\n/**\n * Astar\n * @private\n */\nvar astar = {\n  /**\n   * Perform an A* Search on a graph given a start and end node.\n   *\n   * @private\n   * @memberof astar\n   * @param {Graph} graph Graph\n   * @param {GridNode} start Start\n   * @param {GridNode} end End\n   * @param {Object} [options] Options\n   * @param {bool} [options.closest] Specifies whether to return the path to the closest node if the target is unreachable.\n   * @param {Function} [options.heuristic] Heuristic function (see astar.heuristics).\n   * @returns {Object} Search\n   */\n  search: function (graph, start, end, options) {\n    graph.cleanDirty();\n    options = options || {};\n    var heuristic = options.heuristic || astar.heuristics.manhattan,\n      closest = options.closest || false;\n\n    var openHeap = getHeap(),\n      closestNode = start; // set the start node to be the closest if required\n\n    start.h = heuristic(start, end);\n\n    openHeap.push(start);\n\n    while (openHeap.size() > 0) {\n      // Grab the lowest f(x) to process next.  Heap keeps this sorted for us.\n      var currentNode = openHeap.pop();\n\n      // End case -- result has been found, return the traced path.\n      if (currentNode === end) {\n        return pathTo(currentNode);\n      }\n\n      // Normal case -- move currentNode from open to closed, process each of its neighbors.\n      currentNode.closed = true;\n\n      // Find all neighbors for the current node.\n      var neighbors = graph.neighbors(currentNode);\n\n      for (var i = 0, il = neighbors.length; i < il; ++i) {\n        var neighbor = neighbors[i];\n\n        if (neighbor.closed || neighbor.isWall()) {\n          // Not a valid node to process, skip to next neighbor.\n          continue;\n        }\n\n        // The g score is the shortest distance from start to current node.\n        // We need to check if the path we have arrived at this neighbor is the shortest one we have seen yet.\n        var gScore = currentNode.g + neighbor.getCost(currentNode),\n          beenVisited = neighbor.visited;\n\n        if (!beenVisited || gScore < neighbor.g) {\n          // Found an optimal (so far) path to this node.  Take score for node to see how good it is.\n          neighbor.visited = true;\n          neighbor.parent = currentNode;\n          neighbor.h = neighbor.h || heuristic(neighbor, end);\n          neighbor.g = gScore;\n          neighbor.f = neighbor.g + neighbor.h;\n          graph.markDirty(neighbor);\n          if (closest) {\n            // If the neighbour is closer than the current closestNode or if it's equally close but has\n            // a cheaper path than the current closest node then it becomes the closest node\n            if (\n              neighbor.h < closestNode.h ||\n              (neighbor.h === closestNode.h && neighbor.g < closestNode.g)\n            ) {\n              closestNode = neighbor;\n            }\n          }\n\n          if (!beenVisited) {\n            // Pushing to heap will put it in proper place based on the 'f' value.\n            openHeap.push(neighbor);\n          } else {\n            // Already seen the node, but since it has been rescored we need to reorder it in the heap\n            openHeap.rescoreElement(neighbor);\n          }\n        }\n      }\n    }\n\n    if (closest) {\n      return pathTo(closestNode);\n    }\n\n    // No result was found - empty array signifies failure to find path.\n    return [];\n  },\n  // See list of heuristics: http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html\n  heuristics: {\n    manhattan: function (pos0, pos1) {\n      var d1 = Math.abs(pos1.x - pos0.x);\n      var d2 = Math.abs(pos1.y - pos0.y);\n      return d1 + d2;\n    },\n    diagonal: function (pos0, pos1) {\n      var D = 1;\n      var D2 = Math.sqrt(2);\n      var d1 = Math.abs(pos1.x - pos0.x);\n      var d2 = Math.abs(pos1.y - pos0.y);\n      return D * (d1 + d2) + (D2 - 2 * D) * Math.min(d1, d2);\n    },\n  },\n  cleanNode: function (node) {\n    node.f = 0;\n    node.g = 0;\n    node.h = 0;\n    node.visited = false;\n    node.closed = false;\n    node.parent = null;\n  },\n};\n\n/**\n * A graph memory structure\n *\n * @private\n * @param {Array} gridIn 2D array of input weights\n * @param {Object} [options] Options\n * @param {boolean} [options.diagonal] Specifies whether diagonal moves are allowed\n * @returns {void} Graph\n */\nfunction Graph(gridIn, options) {\n  options = options || {};\n  this.nodes = [];\n  this.diagonal = !!options.diagonal;\n  this.grid = [];\n  for (var x = 0; x < gridIn.length; x++) {\n    this.grid[x] = [];\n\n    for (var y = 0, row = gridIn[x]; y < row.length; y++) {\n      var node = new GridNode(x, y, row[y]);\n      this.grid[x][y] = node;\n      this.nodes.push(node);\n    }\n  }\n  this.init();\n}\n\nGraph.prototype.init = function () {\n  this.dirtyNodes = [];\n  for (var i = 0; i < this.nodes.length; i++) {\n    astar.cleanNode(this.nodes[i]);\n  }\n};\n\nGraph.prototype.cleanDirty = function () {\n  for (var i = 0; i < this.dirtyNodes.length; i++) {\n    astar.cleanNode(this.dirtyNodes[i]);\n  }\n  this.dirtyNodes = [];\n};\n\nGraph.prototype.markDirty = function (node) {\n  this.dirtyNodes.push(node);\n};\n\nGraph.prototype.neighbors = function (node) {\n  var ret = [],\n    x = node.x,\n    y = node.y,\n    grid = this.grid;\n\n  // West\n  if (grid[x - 1] && grid[x - 1][y]) {\n    ret.push(grid[x - 1][y]);\n  }\n\n  // East\n  if (grid[x + 1] && grid[x + 1][y]) {\n    ret.push(grid[x + 1][y]);\n  }\n\n  // South\n  if (grid[x] && grid[x][y - 1]) {\n    ret.push(grid[x][y - 1]);\n  }\n\n  // North\n  if (grid[x] && grid[x][y + 1]) {\n    ret.push(grid[x][y + 1]);\n  }\n\n  if (this.diagonal) {\n    // Southwest\n    if (grid[x - 1] && grid[x - 1][y - 1]) {\n      ret.push(grid[x - 1][y - 1]);\n    }\n\n    // Southeast\n    if (grid[x + 1] && grid[x + 1][y - 1]) {\n      ret.push(grid[x + 1][y - 1]);\n    }\n\n    // Northwest\n    if (grid[x - 1] && grid[x - 1][y + 1]) {\n      ret.push(grid[x - 1][y + 1]);\n    }\n\n    // Northeast\n    if (grid[x + 1] && grid[x + 1][y + 1]) {\n      ret.push(grid[x + 1][y + 1]);\n    }\n  }\n\n  return ret;\n};\n\nGraph.prototype.toString = function () {\n  var graphString = [],\n    nodes = this.grid, // when using grid\n    rowDebug,\n    row,\n    y,\n    l;\n  for (var x = 0, len = nodes.length; x < len; x++) {\n    rowDebug = [];\n    row = nodes[x];\n    for (y = 0, l = row.length; y < l; y++) {\n      rowDebug.push(row[y].weight);\n    }\n    graphString.push(rowDebug.join(\" \"));\n  }\n  return graphString.join(\"\\n\");\n};\n\nfunction GridNode(x, y, weight) {\n  this.x = x;\n  this.y = y;\n  this.weight = weight;\n}\n\nGridNode.prototype.toString = function () {\n  return \"[\" + this.x + \" \" + this.y + \"]\";\n};\n\nGridNode.prototype.getCost = function (fromNeighbor) {\n  // Take diagonal weight into consideration.\n  if (fromNeighbor && fromNeighbor.x !== this.x && fromNeighbor.y !== this.y) {\n    return this.weight * 1.41421;\n  }\n  return this.weight;\n};\n\nGridNode.prototype.isWall = function () {\n  return this.weight === 0;\n};\n\nfunction BinaryHeap(scoreFunction) {\n  this.content = [];\n  this.scoreFunction = scoreFunction;\n}\n\nBinaryHeap.prototype = {\n  push: function (element) {\n    // Add the new element to the end of the array.\n    this.content.push(element);\n\n    // Allow it to sink down.\n    this.sinkDown(this.content.length - 1);\n  },\n  pop: function () {\n    // Store the first element so we can return it later.\n    var result = this.content[0];\n    // Get the element at the end of the array.\n    var end = this.content.pop();\n    // If there are any elements left, put the end element at the\n    // start, and let it bubble up.\n    if (this.content.length > 0) {\n      this.content[0] = end;\n      this.bubbleUp(0);\n    }\n    return result;\n  },\n  remove: function (node) {\n    var i = this.content.indexOf(node);\n\n    // When it is found, the process seen in 'pop' is repeated\n    // to fill up the hole.\n    var end = this.content.pop();\n\n    if (i !== this.content.length - 1) {\n      this.content[i] = end;\n\n      if (this.scoreFunction(end) < this.scoreFunction(node)) {\n        this.sinkDown(i);\n      } else {\n        this.bubbleUp(i);\n      }\n    }\n  },\n  size: function () {\n    return this.content.length;\n  },\n  rescoreElement: function (node) {\n    this.sinkDown(this.content.indexOf(node));\n  },\n  sinkDown: function (n) {\n    // Fetch the element that has to be sunk.\n    var element = this.content[n];\n\n    // When at 0, an element can not sink any further.\n    while (n > 0) {\n      // Compute the parent element's index, and fetch it.\n      var parentN = ((n + 1) >> 1) - 1,\n        parent = this.content[parentN];\n      // Swap the elements if the parent is greater.\n      if (this.scoreFunction(element) < this.scoreFunction(parent)) {\n        this.content[parentN] = element;\n        this.content[n] = parent;\n        // Update 'n' to continue at the new position.\n        n = parentN;\n        // Found a parent that is less, no need to sink any further.\n      } else {\n        break;\n      }\n    }\n  },\n  bubbleUp: function (n) {\n    // Look up the target element and its score.\n    var length = this.content.length,\n      element = this.content[n],\n      elemScore = this.scoreFunction(element);\n\n    while (true) {\n      // Compute the indices of the child elements.\n      var child2N = (n + 1) << 1,\n        child1N = child2N - 1;\n      // This is used to store the new position of the element, if any.\n      var swap = null,\n        child1Score;\n      // If the first child exists (is inside the array)...\n      if (child1N < length) {\n        // Look it up and compute its score.\n        var child1 = this.content[child1N];\n        child1Score = this.scoreFunction(child1);\n\n        // If the score is less than our element's, we need to swap.\n        if (child1Score < elemScore) {\n          swap = child1N;\n        }\n      }\n\n      // Do the same checks for the other child.\n      if (child2N < length) {\n        var child2 = this.content[child2N],\n          child2Score = this.scoreFunction(child2);\n        if (child2Score < (swap === null ? elemScore : child1Score)) {\n          swap = child2N;\n        }\n      }\n\n      // If the element needs to be moved, swap it, and continue.\n      if (swap !== null) {\n        this.content[n] = this.content[swap];\n        this.content[swap] = element;\n        n = swap;\n        // Otherwise, we are done.\n      } else {\n        break;\n      }\n    }\n  },\n};\n\n/**\n * Returns the shortest {@link LineString|path} from {@link Point|start} to {@link Point|end} without colliding with\n * any {@link Feature} in {@link FeatureCollection<Polygon>| obstacles}\n *\n * @name shortestPath\n * @param {Coord} start point\n * @param {Coord} end point\n * @param {Object} [options={}] optional parameters\n * @param {Geometry|Feature|FeatureCollection<Polygon>} [options.obstacles] areas which path cannot travel\n * @param {number} [options.minDistance] minimum distance between shortest path and obstacles\n * @param {string} [options.units='kilometers'] unit in which resolution & minimum distance will be expressed in; it can be degrees, radians, miles, kilometers, ...\n * @param {number} [options.resolution=100] distance between matrix points on which the path will be calculated\n * @returns {Feature<LineString>} shortest path between start and end\n * @example\n * var start = [-5, -6];\n * var end = [9, -6];\n * var options = {\n *   obstacles: turf.polygon([[[0, -7], [5, -7], [5, -3], [0, -3], [0, -7]]])\n * };\n *\n * var path = turf.shortestPath(start, end, options);\n *\n * //addToMap\n * var addToMap = [start, end, options.obstacles, path];\n */\nfunction shortestPath(start, end, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var resolution = options.resolution;\n  var minDistance = options.minDistance;\n  var obstacles = options.obstacles || helpers.featureCollection([]);\n\n  // validation\n  if (!start) throw new Error(\"start is required\");\n  if (!end) throw new Error(\"end is required\");\n  if ((resolution && !helpers.isNumber(resolution)) || resolution <= 0)\n    throw new Error(\"options.resolution must be a number, greater than 0\");\n  if (minDistance)\n    throw new Error(\"options.minDistance is not yet implemented\");\n\n  // Normalize Inputs\n  var startCoord = invariant.getCoord(start);\n  var endCoord = invariant.getCoord(end);\n  start = helpers.point(startCoord);\n  end = helpers.point(endCoord);\n\n  // Handle obstacles\n  switch (invariant.getType(obstacles)) {\n    case \"FeatureCollection\":\n      if (obstacles.features.length === 0)\n        return helpers.lineString([startCoord, endCoord]);\n      break;\n    case \"Polygon\":\n      obstacles = helpers.featureCollection([helpers.feature(invariant.getGeom(obstacles))]);\n      break;\n    default:\n      throw new Error(\"invalid obstacles\");\n  }\n\n  // define path grid area\n  var collection = obstacles;\n  collection.features.push(start);\n  collection.features.push(end);\n  var box = bbox__default['default'](scale__default['default'](bboxPolygon__default['default'](bbox__default['default'](collection)), 1.15)); // extend 15%\n  if (!resolution) {\n    var width = distance__default['default']([box[0], box[1]], [box[2], box[1]], options);\n    resolution = width / 100;\n  }\n  collection.features.pop();\n  collection.features.pop();\n\n  var west = box[0];\n  var south = box[1];\n  var east = box[2];\n  var north = box[3];\n\n  var xFraction = resolution / distance__default['default']([west, south], [east, south], options);\n  var cellWidth = xFraction * (east - west);\n  var yFraction = resolution / distance__default['default']([west, south], [west, north], options);\n  var cellHeight = yFraction * (north - south);\n\n  var bboxHorizontalSide = east - west;\n  var bboxVerticalSide = north - south;\n  var columns = Math.floor(bboxHorizontalSide / cellWidth);\n  var rows = Math.floor(bboxVerticalSide / cellHeight);\n  // adjust origin of the grid\n  var deltaX = (bboxHorizontalSide - columns * cellWidth) / 2;\n  var deltaY = (bboxVerticalSide - rows * cellHeight) / 2;\n\n  // loop through points only once to speed up process\n  // define matrix grid for A-star algorithm\n  var pointMatrix = [];\n  var matrix = [];\n\n  var closestToStart = [];\n  var closestToEnd = [];\n  var minDistStart = Infinity;\n  var minDistEnd = Infinity;\n  var currentY = north - deltaY;\n  var r = 0;\n  while (currentY >= south) {\n    // var currentY = south + deltaY;\n    var matrixRow = [];\n    var pointMatrixRow = [];\n    var currentX = west + deltaX;\n    var c = 0;\n    while (currentX <= east) {\n      var pt = helpers.point([currentX, currentY]);\n      var isInsideObstacle = isInside(pt, obstacles);\n      // feed obstacles matrix\n      matrixRow.push(isInsideObstacle ? 0 : 1); // with javascript-astar\n      // matrixRow.push(isInsideObstacle ? 1 : 0); // with astar-andrea\n      // map point's coords\n      pointMatrixRow.push(currentX + \"|\" + currentY);\n      // set closest points\n      var distStart = distance__default['default'](pt, start);\n      // if (distStart < minDistStart) {\n      if (!isInsideObstacle && distStart < minDistStart) {\n        minDistStart = distStart;\n        closestToStart = { x: c, y: r };\n      }\n      var distEnd = distance__default['default'](pt, end);\n      // if (distEnd < minDistEnd) {\n      if (!isInsideObstacle && distEnd < minDistEnd) {\n        minDistEnd = distEnd;\n        closestToEnd = { x: c, y: r };\n      }\n      currentX += cellWidth;\n      c++;\n    }\n    matrix.push(matrixRow);\n    pointMatrix.push(pointMatrixRow);\n    currentY -= cellHeight;\n    r++;\n  }\n\n  // find path on matrix grid\n\n  // javascript-astar ----------------------\n  var graph = new Graph(matrix, { diagonal: true });\n  var startOnMatrix = graph.grid[closestToStart.y][closestToStart.x];\n  var endOnMatrix = graph.grid[closestToEnd.y][closestToEnd.x];\n  var result = astar.search(graph, startOnMatrix, endOnMatrix);\n\n  var path = [startCoord];\n  result.forEach(function (coord) {\n    var coords = pointMatrix[coord.x][coord.y].split(\"|\");\n    path.push([+coords[0], +coords[1]]); // make sure coords are numbers\n  });\n  path.push(endCoord);\n  // ---------------------------------------\n\n  // astar-andrea ------------------------\n  // var result = aStar(matrix, [closestToStart.x, closestToStart.y], [closestToEnd.x, closestToEnd.y], 'DiagonalFree');\n  // var path = [start.geometry.coordinates];\n  // result.forEach(function (coord) {\n  //     var coords = pointMatrix[coord[1]][coord[0]].split('|');\n  //     path.push([+coords[0], +coords[1]]); // make sure coords are numbers\n  // });\n  // path.push(end.geometry.coordinates);\n  // ---------------------------------------\n\n  return cleanCoords__default['default'](helpers.lineString(path));\n}\n\n/**\n * Checks if Point is inside any of the Polygons\n *\n * @private\n * @param {Feature<Point>} pt to check\n * @param {FeatureCollection<Polygon>} polygons features\n * @returns {boolean} if inside or not\n */\nfunction isInside(pt, polygons) {\n  for (var i = 0; i < polygons.features.length; i++) {\n    if (booleanPointInPolygon__default['default'](pt, polygons.features[i])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = shortestPath;\nmodule.exports.default = shortestPath;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bbox_1 = __importDefault(require(\"@turf/bbox\"));\nvar boolean_point_in_polygon_1 = __importDefault(require(\"@turf/boolean-point-in-polygon\"));\nvar rbush_1 = __importDefault(require(\"rbush\"));\n/**\n * Merges a specified property from a FeatureCollection of points into a\n * FeatureCollection of polygons. Given an `inProperty` on points and an `outProperty`\n * for polygons, this finds every point that lies within each polygon, collects the\n * `inProperty` values from those points, and adds them as an array to `outProperty`\n * on the polygon.\n *\n * @name collect\n * @param {FeatureCollection<Polygon>} polygons polygons with values on which to aggregate\n * @param {FeatureCollection<Point>} points points to be aggregated\n * @param {string} inProperty property to be nested from\n * @param {string} outProperty property to be nested into\n * @returns {FeatureCollection<Polygon>} polygons with properties listed based on `outField`\n * @example\n * var poly1 = turf.polygon([[[0,0],[10,0],[10,10],[0,10],[0,0]]]);\n * var poly2 = turf.polygon([[[10,0],[20,10],[20,20],[20,0],[10,0]]]);\n * var polyFC = turf.featureCollection([poly1, poly2]);\n * var pt1 = turf.point([5,5], {population: 200});\n * var pt2 = turf.point([1,3], {population: 600});\n * var pt3 = turf.point([14,2], {population: 100});\n * var pt4 = turf.point([13,1], {population: 200});\n * var pt5 = turf.point([19,7], {population: 300});\n * var pointFC = turf.featureCollection([pt1, pt2, pt3, pt4, pt5]);\n * var collected = turf.collect(polyFC, pointFC, 'population', 'values');\n * var values = collected.features[0].properties.values\n * //=values => [200, 600]\n *\n * //addToMap\n * var addToMap = [pointFC, collected]\n */\nfunction collect(polygons, points, inProperty, outProperty) {\n    var rtree = rbush_1.default(6);\n    var treeItems = points.features.map(function (item) {\n        var _a;\n        return {\n            minX: item.geometry.coordinates[0],\n            minY: item.geometry.coordinates[1],\n            maxX: item.geometry.coordinates[0],\n            maxY: item.geometry.coordinates[1],\n            property: (_a = item.properties) === null || _a === void 0 ? void 0 : _a[inProperty],\n        };\n    });\n    rtree.load(treeItems);\n    polygons.features.forEach(function (poly) {\n        if (!poly.properties) {\n            poly.properties = {};\n        }\n        var bbox = bbox_1.default(poly);\n        var potentialPoints = rtree.search({\n            minX: bbox[0],\n            minY: bbox[1],\n            maxX: bbox[2],\n            maxY: bbox[3],\n        });\n        var values = [];\n        potentialPoints.forEach(function (pt) {\n            if (boolean_point_in_polygon_1.default([pt.minX, pt.minY], poly)) {\n                values.push(pt.property);\n            }\n        });\n        poly.properties[outProperty] = values;\n    });\n    return polygons;\n}\nexports.default = collect;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar polygon_clipping_1 = __importDefault(require(\"polygon-clipping\"));\nvar invariant_1 = require(\"@turf/invariant\");\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes two {@link (Multi)Polygon(s)} and returns a combined polygon. If the input polygons are not contiguous, this function returns a {@link MultiPolygon} feature.\n *\n * @name union\n * @param {Feature<Polygon|MultiPolygon>} polygon1 input Polygon feature\n * @param {Feature<Polygon|MultiPolygon>} polygon2 Polygon feature to difference from polygon1\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] Translate Properties to output Feature\n * @returns {Feature<(Polygon|MultiPolygon)>} a combined {@link Polygon} or {@link MultiPolygon} feature, or null if the inputs are empty\n * @example\n * var poly1 = turf.polygon([[\n *     [-82.574787, 35.594087],\n *     [-82.574787, 35.615581],\n *     [-82.545261, 35.615581],\n *     [-82.545261, 35.594087],\n *     [-82.574787, 35.594087]\n * ]], {\"fill\": \"#0f0\"});\n * var poly2 = turf.polygon([[\n *     [-82.560024, 35.585153],\n *     [-82.560024, 35.602602],\n *     [-82.52964, 35.602602],\n *     [-82.52964, 35.585153],\n *     [-82.560024, 35.585153]\n * ]], {\"fill\": \"#00f\"});\n *\n * var union = turf.union(poly1, poly2);\n *\n * //addToMap\n * var addToMap = [poly1, poly2, union];\n */\nfunction union(poly1, poly2, options) {\n    if (options === void 0) { options = {}; }\n    var geom1 = invariant_1.getGeom(poly1);\n    var geom2 = invariant_1.getGeom(poly2);\n    var unioned = polygon_clipping_1.default.union(geom1.coordinates, geom2.coordinates);\n    if (unioned.length === 0)\n        return null;\n    if (unioned.length === 1)\n        return helpers_1.polygon(unioned[0], options.properties);\n    else\n        return helpers_1.multiPolygon(unioned, options.properties);\n}\nexports.default = union;\n","'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = require('gopd');\nvar defineProperty = Object.defineProperty;\nvar $TypeError = require('es-errors');\nvar getProto = require('get-proto');\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */\nfunction bbox(geojson) {\n    var result = [Infinity, Infinity, -Infinity, -Infinity];\n    meta_1.coordEach(geojson, function (coord) {\n        if (result[0] > coord[0]) {\n            result[0] = coord[0];\n        }\n        if (result[1] > coord[1]) {\n            result[1] = coord[1];\n        }\n        if (result[2] < coord[0]) {\n            result[2] = coord[0];\n        }\n        if (result[3] < coord[1]) {\n            result[3] = coord[1];\n        }\n    });\n    return result;\n}\nbbox[\"default\"] = bbox;\nexports.default = bbox;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes one or more features and calculates the centroid using the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.\n *\n * @name centroid\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature<Point>} the centroid of the input features\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var centroid = turf.centroid(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, centroid]\n */\nfunction centroid(geojson, options) {\n    if (options === void 0) { options = {}; }\n    var xSum = 0;\n    var ySum = 0;\n    var len = 0;\n    meta_1.coordEach(geojson, function (coord) {\n        xSum += coord[0];\n        ySum += coord[1];\n        len++;\n    }, true);\n    return helpers_1.point([xSum / len, ySum / len], options.properties);\n}\nexports.default = centroid;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar destination_1 = __importDefault(require(\"@turf/destination\"));\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a {@link Point} and calculates the circle polygon given a radius in degrees, radians, miles, or kilometers; and steps for precision.\n *\n * @name circle\n * @param {Feature<Point>|number[]} center center point\n * @param {number} radius radius of the circle\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.steps=64] number of steps\n * @param {string} [options.units='kilometers'] miles, kilometers, degrees, or radians\n * @param {Object} [options.properties={}] properties\n * @returns {Feature<Polygon>} circle polygon\n * @example\n * var center = [-75.343, 39.984];\n * var radius = 5;\n * var options = {steps: 10, units: 'kilometers', properties: {foo: 'bar'}};\n * var circle = turf.circle(center, radius, options);\n *\n * //addToMap\n * var addToMap = [turf.point(center), circle]\n */\nfunction circle(center, radius, options) {\n    if (options === void 0) { options = {}; }\n    // default params\n    var steps = options.steps || 64;\n    var properties = options.properties\n        ? options.properties\n        : !Array.isArray(center) && center.type === \"Feature\" && center.properties\n            ? center.properties\n            : {};\n    // main\n    var coordinates = [];\n    for (var i = 0; i < steps; i++) {\n        coordinates.push(destination_1.default(center, radius, (i * -360) / steps, options).geometry\n            .coordinates);\n    }\n    coordinates.push(coordinates[0]);\n    return helpers_1.polygon([coordinates], properties);\n}\nexports.default = circle;\n","import React from 'react'\nimport { classNames } from 'adhocracy4'\nimport useCombobox from 'adhocracy4/adhocracy4/static/forms/useCombobox'\n\n/*\n  Choice formatting looks like:\n  { name: 'Swedish', value: 'sv' },\n  { name: 'English', value: 'en' }\n  Values need to be unique!\n */\nexport const MultiSelect = ({\n  label,\n  className,\n  liClassName,\n  comboboxClassName,\n  choices,\n  onChange,\n  placeholder,\n  values,\n  defaultValue = [],\n  ...rest\n}) => {\n  const { opened, labelId, activeItems, listboxAttrs, comboboxAttrs, getChoicesAttr } = useCombobox({\n    choices,\n    values,\n    defaultValue,\n    onChange,\n    isMultiple: true\n  })\n  const classes = classNames(\n    'form-control input__element a4-combo-box__container',\n    opened && 'a4-combo-box__container--opened',\n    className\n  )\n  const comboboxClasses = classNames(\n    'form-control a4-combo-box__combobox',\n    comboboxClassName\n  )\n\n  return (\n    <div className=\"form-group a4-combo-box\">\n      <p id={labelId} className=\"label\">\n        {label}\n      </p>\n      <div className={comboboxClasses} {...comboboxAttrs}>\n        {activeItems.length ? activeItems.map(item => item.name).join(', ') : placeholder}\n      </div>\n      <ul className={classes} {...listboxAttrs} {...rest}>\n        {\n    choices.map((choice, index) => {\n      const choiceAttrs = getChoicesAttr(choice, index)\n      const liClasses = classNames(\n        liClassName,\n        'a4-combo-box__option',\n        choiceAttrs.active && 'a4-combo-box__option--active',\n        choiceAttrs.focused && 'a4-combo-box__option--focus'\n      )\n\n      return (\n        <li\n          key={choice.value}\n          className={liClasses}\n          {...choiceAttrs}\n        >\n          <span>{choice.name}</span>\n          {choiceAttrs.active && <i className=\"bicon bicon-check\" aria-hidden=\"true\" />}\n        </li>\n      )\n    })\n  }\n      </ul>\n    </div>\n  )\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar helpers = require('@turf/helpers');\nvar polygonClipping = require('polygon-clipping');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar polygonClipping__default = /*#__PURE__*/_interopDefaultLegacy(polygonClipping);\n\n/**\n * Takes any type of {@link Polygon|polygon} and an optional mask and returns a {@link Polygon|polygon} exterior ring with holes.\n *\n * @name mask\n * @param {FeatureCollection|Feature<Polygon|MultiPolygon>} polygon GeoJSON Polygon used as interior rings or holes.\n * @param {Feature<Polygon>} [mask] GeoJSON Polygon used as the exterior ring (if undefined, the world extent is used)\n * @returns {Feature<Polygon>} Masked Polygon (exterior ring with holes).\n * @example\n * var polygon = turf.polygon([[[112, -21], [116, -36], [146, -39], [153, -24], [133, -10], [112, -21]]]);\n * var mask = turf.polygon([[[90, -55], [170, -55], [170, 10], [90, 10], [90, -55]]]);\n *\n * var masked = turf.mask(polygon, mask);\n *\n * //addToMap\n * var addToMap = [masked]\n */\nfunction mask(polygon, mask) {\n  // Define mask\n  var maskPolygon = createMask(mask);\n\n  var polygonOuters = null;\n  if (polygon.type === \"FeatureCollection\") polygonOuters = unionFc(polygon);\n  else\n    polygonOuters = createGeomFromPolygonClippingOutput(\n      polygonClipping__default['default'].union(polygon.geometry.coordinates)\n    );\n\n  polygonOuters.geometry.coordinates.forEach(function (contour) {\n    maskPolygon.geometry.coordinates.push(contour[0]);\n  });\n\n  return maskPolygon;\n}\n\nfunction unionFc(fc) {\n  var unioned =\n    fc.features.length === 2\n      ? polygonClipping__default['default'].union(\n          fc.features[0].geometry.coordinates,\n          fc.features[1].geometry.coordinates\n        )\n      : polygonClipping__default['default'].union.apply(\n          polygonClipping__default['default'],\n          fc.features.map(function (f) {\n            return f.geometry.coordinates;\n          })\n        );\n  return createGeomFromPolygonClippingOutput(unioned);\n}\n\nfunction createGeomFromPolygonClippingOutput(unioned) {\n  return helpers.multiPolygon(unioned);\n}\n\n/**\n * Create Mask Coordinates\n *\n * @private\n * @param {Feature<Polygon>} [mask] default to world if undefined\n * @returns {Feature<Polygon>} mask coordinate\n */\nfunction createMask(mask) {\n  var world = [\n    [\n      [180, 90],\n      [-180, 90],\n      [-180, -90],\n      [180, -90],\n      [180, 90],\n    ],\n  ];\n  var coordinates = (mask && mask.geometry.coordinates) || world;\n  return helpers.polygon(coordinates);\n}\n\nmodule.exports = mask;\nmodule.exports.default = mask;\n","/* eslint-disable no-restricted-syntax */\nimport React, { useState, useRef, useEffect } from 'react'\nimport { Typeahead } from 'react-bootstrap-typeahead'\nimport django from 'django'\n\nconst suggestionsText = django.gettext('Suggestions will appear as you type.')\nconst resultsText = django.ngettext('%s suggestion available', '%s suggestions available', 0)\nconst paginationText = django.gettext('Display additional results...')\nconst emptyLabel = django.gettext('No matches found')\n\nexport const TypeaheadField = (props) => {\n  const {\n    typeaheadHeading,\n    uniqueId,\n    onTypeaheadChange,\n    typeaheadOptions,\n    typeaheadSelected,\n    typeaheadPlaceholder,\n    multipleBoolean\n  } = props\n\n  const [suggestionCount, setSuggestionCount] = useState(0)\n  const [inputValue, setInputValue] = useState('')\n  const typeaheadRef = useRef(null)\n\n  const handleInputChange = (text, e) => {\n    setInputValue(text)\n\n    if (text) {\n      const filtered = typeaheadOptions.filter(option =>\n        typeof option === 'string'\n          ? option.toLowerCase().includes(text.toLowerCase())\n          : option.name.toLowerCase().includes(text.toLowerCase())\n      )\n      setSuggestionCount(filtered.length)\n    } else {\n      setSuggestionCount(0)\n    }\n  }\n\n  useEffect(() => {\n    const liveRegion = document.getElementById(`${uniqueId}-description`)\n    if (liveRegion) {\n      if (inputValue && suggestionCount > 0) {\n        liveRegion.textContent = django.interpolate(resultsText, [suggestionCount])\n      } else {\n        liveRegion.textContent = ''\n      }\n    }\n  }, [suggestionCount, inputValue, uniqueId])\n\n  return (\n    <div className=\"form-group typeahead\">\n      <label htmlFor={uniqueId} className=\"label\">\n        {typeaheadHeading}\n        <span className=\"sr-only\"> {suggestionsText}</span>\n      </label>\n      <span className=\"typeahead__input-group\">\n        <Typeahead\n          id={uniqueId}\n          ref={typeaheadRef}\n          className=\"typeahead__input-group-append\"\n          onChange={onTypeaheadChange}\n          onInputChange={handleInputChange}\n          labelKey=\"name\"\n          multiple={multipleBoolean}\n          options={typeaheadOptions}\n          selected={typeaheadSelected}\n          placeholder={typeaheadPlaceholder}\n          aria-describedby={`${uniqueId}-description`}\n          paginationText={paginationText}\n          emptyLabel={emptyLabel}\n        />\n      </span>\n      <span\n        id={`${uniqueId}-description`}\n        className=\"sr-only\"\n        role=\"status\"\n        aria-live=\"polite\"\n        aria-atomic=\"true\"\n      >\n        {inputValue && suggestionCount > 0\n          ? django.interpolate(resultsText, [suggestionCount])\n          : ''}\n      </span>\n    </div>\n  )\n}\n","'use strict';\n\nvar booleanPointInPolygon = require('@turf/boolean-point-in-polygon');\nvar clone = require('@turf/clone');\nvar meta = require('@turf/meta');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar booleanPointInPolygon__default = /*#__PURE__*/_interopDefaultLegacy(booleanPointInPolygon);\nvar clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);\n\n/**\n * Takes a set of {@link Point|points} and a set of {@link Polygon|polygons} and/or {@link MultiPolygon|multipolygons} and performs a spatial join.\n *\n * @name tag\n * @param {FeatureCollection<Point>} points input points\n * @param {FeatureCollection<Polygon|MultiPolygon>} polygons input (multi)polygons\n * @param {string} field property in `polygons` to add to joined {<Point>} features\n * @param {string} outField property in `points` in which to store joined property from `polygons`\n * @returns {FeatureCollection<Point>} points with `containingPolyId` property containing values from `polyId`\n * @example\n * var pt1 = turf.point([-77, 44]);\n * var pt2 = turf.point([-77, 38]);\n * var poly1 = turf.polygon([[\n *   [-81, 41],\n *   [-81, 47],\n *   [-72, 47],\n *   [-72, 41],\n *   [-81, 41]\n * ]], {pop: 3000});\n * var poly2 = turf.polygon([[\n *   [-81, 35],\n *   [-81, 41],\n *   [-72, 41],\n *   [-72, 35],\n *   [-81, 35]\n * ]], {pop: 1000});\n *\n * var points = turf.featureCollection([pt1, pt2]);\n * var polygons = turf.featureCollection([poly1, poly2]);\n *\n * var tagged = turf.tag(points, polygons, 'pop', 'population');\n *\n * //addToMap\n * var addToMap = [tagged, polygons]\n */\nfunction tag(points, polygons, field, outField) {\n  // prevent mutations\n  points = clone__default['default'](points);\n  polygons = clone__default['default'](polygons);\n  meta.featureEach(points, function (pt) {\n    if (!pt.properties) pt.properties = {};\n    meta.featureEach(polygons, function (poly) {\n      if (pt.properties[outField] === undefined) {\n        if (booleanPointInPolygon__default['default'](pt, poly))\n          pt.properties[outField] = poly.properties[field];\n      }\n    });\n  });\n  return points;\n}\n\nmodule.exports = tag;\nmodule.exports.default = tag;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Node_1 = __importDefault(require(\"./Node\"));\nvar Edge_1 = __importDefault(require(\"./Edge\"));\nvar EdgeRing_1 = __importDefault(require(\"./EdgeRing\"));\nvar meta_1 = require(\"@turf/meta\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Validates the geoJson.\n *\n * @param {GeoJSON} geoJson - input geoJson.\n * @throws {Error} if geoJson is invalid.\n */\nfunction validateGeoJson(geoJson) {\n    if (!geoJson)\n        throw new Error(\"No geojson passed\");\n    if (geoJson.type !== \"FeatureCollection\" &&\n        geoJson.type !== \"GeometryCollection\" &&\n        geoJson.type !== \"MultiLineString\" &&\n        geoJson.type !== \"LineString\" &&\n        geoJson.type !== \"Feature\")\n        throw new Error(\"Invalid input type '\" + geoJson.type + \"'. Geojson must be FeatureCollection, GeometryCollection, LineString, MultiLineString or Feature\");\n}\n/**\n * Represents a planar graph of edges and nodes that can be used to compute a polygonization.\n *\n * Although, this class is inspired by GEOS's `geos::operation::polygonize::PolygonizeGraph`,\n * it isn't a rewrite. As regards algorithm, this class implements the same logic, but it\n * isn't a javascript transcription of the C++ source.\n *\n * This graph is directed (both directions are created)\n */\nvar Graph = /** @class */ (function () {\n    function Graph() {\n        this.edges = []; //< {Edge[]} dirEdges\n        // The key is the `id` of the Node (ie: coordinates.join(','))\n        this.nodes = {};\n    }\n    /**\n     * Creates a graph from a GeoJSON.\n     *\n     * @param {FeatureCollection<LineString>} geoJson - it must comply with the restrictions detailed in the index\n     * @returns {Graph} - The newly created graph\n     * @throws {Error} if geoJson is invalid.\n     */\n    Graph.fromGeoJson = function (geoJson) {\n        validateGeoJson(geoJson);\n        var graph = new Graph();\n        meta_1.flattenEach(geoJson, function (feature) {\n            invariant_1.featureOf(feature, \"LineString\", \"Graph::fromGeoJson\");\n            // When a LineString if formed by many segments, split them\n            meta_1.coordReduce(feature, function (prev, cur) {\n                if (prev) {\n                    var start = graph.getNode(prev), end = graph.getNode(cur);\n                    graph.addEdge(start, end);\n                }\n                return cur;\n            });\n        });\n        return graph;\n    };\n    /**\n     * Creates or get a Node.\n     *\n     * @param {number[]} coordinates - Coordinates of the node\n     * @returns {Node} - The created or stored node\n     */\n    Graph.prototype.getNode = function (coordinates) {\n        var id = Node_1.default.buildId(coordinates);\n        var node = this.nodes[id];\n        if (!node)\n            node = this.nodes[id] = new Node_1.default(coordinates);\n        return node;\n    };\n    /**\n     * Adds an Edge and its symetricall.\n     *\n     * Edges are added symetrically, i.e.: we also add its symetric\n     *\n     * @param {Node} from - Node which starts the Edge\n     * @param {Node} to - Node which ends the Edge\n     */\n    Graph.prototype.addEdge = function (from, to) {\n        var edge = new Edge_1.default(from, to), symetricEdge = edge.getSymetric();\n        this.edges.push(edge);\n        this.edges.push(symetricEdge);\n    };\n    /**\n     * Removes Dangle Nodes (nodes with grade 1).\n     */\n    Graph.prototype.deleteDangles = function () {\n        var _this = this;\n        Object.keys(this.nodes)\n            .map(function (id) { return _this.nodes[id]; })\n            .forEach(function (node) { return _this._removeIfDangle(node); });\n    };\n    /**\n     * Check if node is dangle, if so, remove it.\n     *\n     * It calls itself recursively, removing a dangling node might cause another dangling node\n     *\n     * @param {Node} node - Node to check if it's a dangle\n     */\n    Graph.prototype._removeIfDangle = function (node) {\n        var _this = this;\n        // As edges are directed and symetrical, we count only innerEdges\n        if (node.innerEdges.length <= 1) {\n            var outerNodes = node.getOuterEdges().map(function (e) { return e.to; });\n            this.removeNode(node);\n            outerNodes.forEach(function (n) { return _this._removeIfDangle(n); });\n        }\n    };\n    /**\n     * Delete cut-edges (bridge edges).\n     *\n     * The graph will be traversed, all the edges will be labeled according the ring\n     * in which they are. (The label is a number incremented by 1). Edges with the same\n     * label are cut-edges.\n     */\n    Graph.prototype.deleteCutEdges = function () {\n        var _this = this;\n        this._computeNextCWEdges();\n        this._findLabeledEdgeRings();\n        // Cut-edges (bridges) are edges where both edges have the same label\n        this.edges.forEach(function (edge) {\n            if (edge.label === edge.symetric.label) {\n                _this.removeEdge(edge.symetric);\n                _this.removeEdge(edge);\n            }\n        });\n    };\n    /**\n     * Set the `next` property of each Edge.\n     *\n     * The graph will be transversed in a CW form, so, we set the next of the symetrical edge as the previous one.\n     * OuterEdges are sorted CCW.\n     *\n     * @param {Node} [node] - If no node is passed, the function calls itself for every node in the Graph\n     */\n    Graph.prototype._computeNextCWEdges = function (node) {\n        var _this = this;\n        if (typeof node === \"undefined\") {\n            Object.keys(this.nodes).forEach(function (id) {\n                return _this._computeNextCWEdges(_this.nodes[id]);\n            });\n        }\n        else {\n            node.getOuterEdges().forEach(function (edge, i) {\n                node.getOuterEdge((i === 0 ? node.getOuterEdges().length : i) - 1).symetric.next = edge;\n            });\n        }\n    };\n    /**\n     * Computes the next edge pointers going CCW around the given node, for the given edgering label.\n     *\n     * This algorithm has the effect of converting maximal edgerings into minimal edgerings\n     *\n     * XXX: method literally transcribed from `geos::operation::polygonize::PolygonizeGraph::computeNextCCWEdges`,\n     * could be written in a more javascript way.\n     *\n     * @param {Node} node - Node\n     * @param {number} label - Ring's label\n     */\n    Graph.prototype._computeNextCCWEdges = function (node, label) {\n        var edges = node.getOuterEdges();\n        var firstOutDE, prevInDE;\n        for (var i = edges.length - 1; i >= 0; --i) {\n            var de = edges[i], sym = de.symetric, outDE = void 0, inDE = void 0;\n            if (de.label === label)\n                outDE = de;\n            if (sym.label === label)\n                inDE = sym;\n            if (!outDE || !inDE)\n                // This edge is not in edgering\n                continue;\n            if (inDE)\n                prevInDE = inDE;\n            if (outDE) {\n                if (prevInDE) {\n                    prevInDE.next = outDE;\n                    prevInDE = undefined;\n                }\n                if (!firstOutDE)\n                    firstOutDE = outDE;\n            }\n        }\n        if (prevInDE)\n            prevInDE.next = firstOutDE;\n    };\n    /**\n     * Finds rings and labels edges according to which rings are.\n     *\n     * The label is a number which is increased for each ring.\n     *\n     * @returns {Edge[]} edges that start rings\n     */\n    Graph.prototype._findLabeledEdgeRings = function () {\n        var edgeRingStarts = [];\n        var label = 0;\n        this.edges.forEach(function (edge) {\n            if (edge.label >= 0)\n                return;\n            edgeRingStarts.push(edge);\n            var e = edge;\n            do {\n                e.label = label;\n                e = e.next;\n            } while (!edge.isEqual(e));\n            label++;\n        });\n        return edgeRingStarts;\n    };\n    /**\n     * Computes the EdgeRings formed by the edges in this graph.\n     *\n     * @returns {EdgeRing[]} - A list of all the EdgeRings in the graph.\n     */\n    Graph.prototype.getEdgeRings = function () {\n        var _this = this;\n        this._computeNextCWEdges();\n        // Clear labels\n        this.edges.forEach(function (edge) {\n            edge.label = undefined;\n        });\n        this._findLabeledEdgeRings().forEach(function (edge) {\n            // convertMaximalToMinimalEdgeRings\n            _this._findIntersectionNodes(edge).forEach(function (node) {\n                _this._computeNextCCWEdges(node, edge.label);\n            });\n        });\n        var edgeRingList = [];\n        // find all edgerings\n        this.edges.forEach(function (edge) {\n            if (edge.ring)\n                return;\n            edgeRingList.push(_this._findEdgeRing(edge));\n        });\n        return edgeRingList;\n    };\n    /**\n     * Find all nodes in a Maxima EdgeRing which are self-intersection nodes.\n     *\n     * @param {Node} startEdge - Start Edge of the Ring\n     * @returns {Node[]} - intersection nodes\n     */\n    Graph.prototype._findIntersectionNodes = function (startEdge) {\n        var intersectionNodes = [];\n        var edge = startEdge;\n        var _loop_1 = function () {\n            // getDegree\n            var degree = 0;\n            edge.from.getOuterEdges().forEach(function (e) {\n                if (e.label === startEdge.label)\n                    ++degree;\n            });\n            if (degree > 1)\n                intersectionNodes.push(edge.from);\n            edge = edge.next;\n        };\n        do {\n            _loop_1();\n        } while (!startEdge.isEqual(edge));\n        return intersectionNodes;\n    };\n    /**\n     * Get the edge-ring which starts from the provided Edge.\n     *\n     * @param {Edge} startEdge - starting edge of the edge ring\n     * @returns {EdgeRing} - EdgeRing which start Edge is the provided one.\n     */\n    Graph.prototype._findEdgeRing = function (startEdge) {\n        var edge = startEdge;\n        var edgeRing = new EdgeRing_1.default();\n        do {\n            edgeRing.push(edge);\n            edge.ring = edgeRing;\n            edge = edge.next;\n        } while (!startEdge.isEqual(edge));\n        return edgeRing;\n    };\n    /**\n     * Removes a node from the Graph.\n     *\n     * It also removes edges asociated to that node\n     * @param {Node} node - Node to be removed\n     */\n    Graph.prototype.removeNode = function (node) {\n        var _this = this;\n        node.getOuterEdges().forEach(function (edge) { return _this.removeEdge(edge); });\n        node.innerEdges.forEach(function (edge) { return _this.removeEdge(edge); });\n        delete this.nodes[node.id];\n    };\n    /**\n     * Remove edge from the graph and deletes the edge.\n     *\n     * @param {Edge} edge - Edge to be removed\n     */\n    Graph.prototype.removeEdge = function (edge) {\n        this.edges = this.edges.filter(function (e) { return !e.isEqual(edge); });\n        edge.deleteEdge();\n    };\n    return Graph;\n}());\nexports.default = Graph;\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar intersect_1 = __importDefault(require(\"@turf/intersect\"));\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a bounding box and a cell depth and returns a set of triangular {@link Polygon|polygons} in a grid.\n *\n * @name triangleGrid\n * @param {Array<number>} bbox extent in [minX, minY, maxX, maxY] order\n * @param {number} cellSide dimension of each cell\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] used in calculating cellSide, can be degrees, radians, miles, or kilometers\n * @param {Feature<Polygon>} [options.mask] if passed a Polygon or MultiPolygon, the grid Points will be created only inside it\n * @param {Object} [options.properties={}] passed to each point of the grid\n * @returns {FeatureCollection<Polygon>} grid of polygons\n * @example\n * var bbox = [-95, 30 ,-85, 40];\n * var cellSide = 50;\n * var options = {units: 'miles'};\n *\n * var triangleGrid = turf.triangleGrid(bbox, cellSide, options);\n *\n * //addToMap\n * var addToMap = [triangleGrid];\n */\nfunction triangleGrid(bbox, cellSide, options) {\n    if (options === void 0) { options = {}; }\n    // Containers\n    var results = [];\n    // Input Validation is being handled by Typescript\n    // if (cellSide === null || cellSide === undefined) throw new Error('cellSide is required');\n    // if (!isNumber(cellSide)) throw new Error('cellSide is invalid');\n    // if (!bbox) throw new Error('bbox is required');\n    // if (!Array.isArray(bbox)) throw new Error('bbox must be array');\n    // if (bbox.length !== 4) throw new Error('bbox must contain 4 numbers');\n    // if (mask && ['Polygon', 'MultiPolygon'].indexOf(getType(mask)) === -1) throw new Error('options.mask must be a (Multi)Polygon');\n    // Main\n    var xFraction = cellSide / distance_1.default([bbox[0], bbox[1]], [bbox[2], bbox[1]], options);\n    var cellWidth = xFraction * (bbox[2] - bbox[0]);\n    var yFraction = cellSide / distance_1.default([bbox[0], bbox[1]], [bbox[0], bbox[3]], options);\n    var cellHeight = yFraction * (bbox[3] - bbox[1]);\n    var xi = 0;\n    var currentX = bbox[0];\n    while (currentX <= bbox[2]) {\n        var yi = 0;\n        var currentY = bbox[1];\n        while (currentY <= bbox[3]) {\n            var cellTriangle1 = null;\n            var cellTriangle2 = null;\n            if (xi % 2 === 0 && yi % 2 === 0) {\n                cellTriangle1 = helpers_1.polygon([\n                    [\n                        [currentX, currentY],\n                        [currentX, currentY + cellHeight],\n                        [currentX + cellWidth, currentY],\n                        [currentX, currentY],\n                    ],\n                ], options.properties);\n                cellTriangle2 = helpers_1.polygon([\n                    [\n                        [currentX, currentY + cellHeight],\n                        [currentX + cellWidth, currentY + cellHeight],\n                        [currentX + cellWidth, currentY],\n                        [currentX, currentY + cellHeight],\n                    ],\n                ], options.properties);\n            }\n            else if (xi % 2 === 0 && yi % 2 === 1) {\n                cellTriangle1 = helpers_1.polygon([\n                    [\n                        [currentX, currentY],\n                        [currentX + cellWidth, currentY + cellHeight],\n                        [currentX + cellWidth, currentY],\n                        [currentX, currentY],\n                    ],\n                ], options.properties);\n                cellTriangle2 = helpers_1.polygon([\n                    [\n                        [currentX, currentY],\n                        [currentX, currentY + cellHeight],\n                        [currentX + cellWidth, currentY + cellHeight],\n                        [currentX, currentY],\n                    ],\n                ], options.properties);\n            }\n            else if (yi % 2 === 0 && xi % 2 === 1) {\n                cellTriangle1 = helpers_1.polygon([\n                    [\n                        [currentX, currentY],\n                        [currentX, currentY + cellHeight],\n                        [currentX + cellWidth, currentY + cellHeight],\n                        [currentX, currentY],\n                    ],\n                ], options.properties);\n                cellTriangle2 = helpers_1.polygon([\n                    [\n                        [currentX, currentY],\n                        [currentX + cellWidth, currentY + cellHeight],\n                        [currentX + cellWidth, currentY],\n                        [currentX, currentY],\n                    ],\n                ], options.properties);\n            }\n            else if (yi % 2 === 1 && xi % 2 === 1) {\n                cellTriangle1 = helpers_1.polygon([\n                    [\n                        [currentX, currentY],\n                        [currentX, currentY + cellHeight],\n                        [currentX + cellWidth, currentY],\n                        [currentX, currentY],\n                    ],\n                ], options.properties);\n                cellTriangle2 = helpers_1.polygon([\n                    [\n                        [currentX, currentY + cellHeight],\n                        [currentX + cellWidth, currentY + cellHeight],\n                        [currentX + cellWidth, currentY],\n                        [currentX, currentY + cellHeight],\n                    ],\n                ], options.properties);\n            }\n            if (options.mask) {\n                if (intersect_1.default(options.mask, cellTriangle1))\n                    results.push(cellTriangle1);\n                if (intersect_1.default(options.mask, cellTriangle2))\n                    results.push(cellTriangle2);\n            }\n            else {\n                results.push(cellTriangle1);\n                results.push(cellTriangle2);\n            }\n            currentY += cellHeight;\n            yi++;\n        }\n        xi++;\n        currentX += cellWidth;\n    }\n    return helpers_1.featureCollection(results);\n}\nexports.default = triangleGrid;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar polygon_clipping_1 = __importDefault(require(\"polygon-clipping\"));\n/**\n * Takes two {@link Polygon|polygon} or {@link MultiPolygon|multi-polygon} geometries and\n * finds their polygonal intersection. If they don't intersect, returns null.\n *\n * @name intersect\n * @param {Feature<Polygon | MultiPolygon>} poly1 the first polygon or multipolygon\n * @param {Feature<Polygon | MultiPolygon>} poly2 the second polygon or multipolygon\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] Translate GeoJSON Properties to Feature\n * @returns {Feature|null} returns a feature representing the area they share (either a {@link Polygon} or\n * {@link MultiPolygon}). If they do not share any area, returns `null`.\n * @example\n * var poly1 = turf.polygon([[\n *   [-122.801742, 45.48565],\n *   [-122.801742, 45.60491],\n *   [-122.584762, 45.60491],\n *   [-122.584762, 45.48565],\n *   [-122.801742, 45.48565]\n * ]]);\n *\n * var poly2 = turf.polygon([[\n *   [-122.520217, 45.535693],\n *   [-122.64038, 45.553967],\n *   [-122.720031, 45.526554],\n *   [-122.669906, 45.507309],\n *   [-122.723464, 45.446643],\n *   [-122.532577, 45.408574],\n *   [-122.487258, 45.477466],\n *   [-122.520217, 45.535693]\n * ]]);\n *\n * var intersection = turf.intersect(poly1, poly2);\n *\n * //addToMap\n * var addToMap = [poly1, poly2, intersection];\n */\nfunction intersect(poly1, poly2, options) {\n    if (options === void 0) { options = {}; }\n    var geom1 = invariant_1.getGeom(poly1);\n    var geom2 = invariant_1.getGeom(poly2);\n    var intersection = polygon_clipping_1.default.intersection(geom1.coordinates, geom2.coordinates);\n    if (intersection.length === 0)\n        return null;\n    if (intersection.length === 1)\n        return helpers_1.polygon(intersection[0], options.properties);\n    return helpers_1.multiPolygon(intersection, options.properties);\n}\nexports.default = intersect;\n","'use strict';\n\nvar bbox = require('@turf/bbox');\nvar hexGrid = require('@turf/hex-grid');\nvar pointGrid = require('@turf/point-grid');\nvar distance = require('@turf/distance');\nvar centroid = require('@turf/centroid');\nvar squareGrid = require('@turf/square-grid');\nvar triangleGrid = require('@turf/triangle-grid');\nvar clone = require('@turf/clone');\nvar helpers = require('@turf/helpers');\nvar meta = require('@turf/meta');\nvar invariant = require('@turf/invariant');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bbox__default = /*#__PURE__*/_interopDefaultLegacy(bbox);\nvar hexGrid__default = /*#__PURE__*/_interopDefaultLegacy(hexGrid);\nvar pointGrid__default = /*#__PURE__*/_interopDefaultLegacy(pointGrid);\nvar distance__default = /*#__PURE__*/_interopDefaultLegacy(distance);\nvar centroid__default = /*#__PURE__*/_interopDefaultLegacy(centroid);\nvar squareGrid__default = /*#__PURE__*/_interopDefaultLegacy(squareGrid);\nvar triangleGrid__default = /*#__PURE__*/_interopDefaultLegacy(triangleGrid);\nvar clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);\n\n/**\n * Takes a set of points and estimates their 'property' values on a grid using the [Inverse Distance Weighting (IDW) method](https://en.wikipedia.org/wiki/Inverse_distance_weighting).\n *\n * @name interpolate\n * @param {FeatureCollection<Point>} points with known value\n * @param {number} cellSize the distance across each grid point\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.gridType='square'] defines the output format based on a Grid Type (options: 'square' | 'point' | 'hex' | 'triangle')\n * @param {string} [options.property='elevation'] the property name in `points` from which z-values will be pulled, zValue fallbacks to 3rd coordinate if no property exists.\n * @param {string} [options.units='kilometers'] used in calculating cellSize, can be degrees, radians, miles, or kilometers\n * @param {number} [options.weight=1] exponent regulating the distance-decay weighting\n * @returns {FeatureCollection<Point|Polygon>} grid of points or polygons with interpolated 'property'\n * @example\n * var points = turf.randomPoint(30, {bbox: [50, 30, 70, 50]});\n *\n * // add a random property to each point\n * turf.featureEach(points, function(point) {\n *     point.properties.solRad = Math.random() * 50;\n * });\n * var options = {gridType: 'points', property: 'solRad', units: 'miles'};\n * var grid = turf.interpolate(points, 100, options);\n *\n * //addToMap\n * var addToMap = [grid];\n */\nfunction interpolate(points, cellSize, options) {\n  // Optional parameters\n  options = options || {};\n  if (typeof options !== \"object\") throw new Error(\"options is invalid\");\n  var gridType = options.gridType;\n  var property = options.property;\n  var weight = options.weight;\n\n  // validation\n  if (!points) throw new Error(\"points is required\");\n  invariant.collectionOf(points, \"Point\", \"input must contain Points\");\n  if (!cellSize) throw new Error(\"cellSize is required\");\n  if (weight !== undefined && typeof weight !== \"number\")\n    throw new Error(\"weight must be a number\");\n\n  // default values\n  property = property || \"elevation\";\n  gridType = gridType || \"square\";\n  weight = weight || 1;\n\n  var box = bbox__default['default'](points);\n  var grid;\n  switch (gridType) {\n    case \"point\":\n    case \"points\":\n      grid = pointGrid__default['default'](box, cellSize, options);\n      break;\n    case \"square\":\n    case \"squares\":\n      grid = squareGrid__default['default'](box, cellSize, options);\n      break;\n    case \"hex\":\n    case \"hexes\":\n      grid = hexGrid__default['default'](box, cellSize, options);\n      break;\n    case \"triangle\":\n    case \"triangles\":\n      grid = triangleGrid__default['default'](box, cellSize, options);\n      break;\n    default:\n      throw new Error(\"invalid gridType\");\n  }\n  var results = [];\n  meta.featureEach(grid, function (gridFeature) {\n    var zw = 0;\n    var sw = 0;\n    // calculate the distance from each input point to the grid points\n    meta.featureEach(points, function (point) {\n      var gridPoint =\n        gridType === \"point\" ? gridFeature : centroid__default['default'](gridFeature);\n      var d = distance__default['default'](gridPoint, point, options);\n      var zValue;\n      // property has priority for zValue, fallbacks to 3rd coordinate from geometry\n      if (property !== undefined) zValue = point.properties[property];\n      if (zValue === undefined) zValue = point.geometry.coordinates[2];\n      if (zValue === undefined) throw new Error(\"zValue is missing\");\n      if (d === 0) zw = zValue;\n      var w = 1.0 / Math.pow(d, weight);\n      sw += w;\n      zw += w * zValue;\n    });\n    // write interpolated value for each grid point\n    var newFeature = clone__default['default'](gridFeature);\n    newFeature.properties[property] = zw / sw;\n    results.push(newFeature);\n  });\n  return helpers.featureCollection(results);\n}\n\nmodule.exports = interpolate;\nmodule.exports.default = interpolate;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"./util\");\nvar helpers_1 = require(\"@turf/helpers\");\nvar envelope_1 = __importDefault(require(\"@turf/envelope\"));\nvar boolean_point_in_polygon_1 = __importDefault(require(\"@turf/boolean-point-in-polygon\"));\n/**\n * Ring of edges which form a polygon.\n *\n * The ring may be either an outer shell or a hole.\n *\n * This class is inspired in GEOS's geos::operation::polygonize::EdgeRing\n */\nvar EdgeRing = /** @class */ (function () {\n    function EdgeRing() {\n        this.edges = [];\n        this.polygon = undefined; //< Caches Polygon representation\n        this.envelope = undefined; //< Caches Envelope representation\n    }\n    /**\n     * Add an edge to the ring, inserting it in the last position.\n     *\n     * @memberof EdgeRing\n     * @param {Edge} edge - Edge to be inserted\n     */\n    EdgeRing.prototype.push = function (edge) {\n        this.edges.push(edge);\n        this.polygon = this.envelope = undefined;\n    };\n    /**\n     * Get Edge.\n     *\n     * @memberof EdgeRing\n     * @param {number} i - Index\n     * @returns {Edge} - Edge in the i position\n     */\n    EdgeRing.prototype.get = function (i) {\n        return this.edges[i];\n    };\n    Object.defineProperty(EdgeRing.prototype, \"length\", {\n        /**\n         * Getter of length property.\n         *\n         * @memberof EdgeRing\n         * @returns {number} - Length of the edge ring.\n         */\n        get: function () {\n            return this.edges.length;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Similar to Array.prototype.forEach for the list of Edges in the EdgeRing.\n     *\n     * @memberof EdgeRing\n     * @param {Function} f - The same function to be passed to Array.prototype.forEach\n     */\n    EdgeRing.prototype.forEach = function (f) {\n        this.edges.forEach(f);\n    };\n    /**\n     * Similar to Array.prototype.map for the list of Edges in the EdgeRing.\n     *\n     * @memberof EdgeRing\n     * @param {Function} f - The same function to be passed to Array.prototype.map\n     * @returns {Array} - The mapped values in the function\n     */\n    EdgeRing.prototype.map = function (f) {\n        return this.edges.map(f);\n    };\n    /**\n     * Similar to Array.prototype.some for the list of Edges in the EdgeRing.\n     *\n     * @memberof EdgeRing\n     * @param {Function} f - The same function to be passed to Array.prototype.some\n     * @returns {boolean} - True if an Edge check the condition\n     */\n    EdgeRing.prototype.some = function (f) {\n        return this.edges.some(f);\n    };\n    /**\n     * Check if the ring is valid in geomtry terms.\n     *\n     * A ring must have either 0 or 4 or more points. The first and the last must be\n     * equal (in 2D)\n     * geos::geom::LinearRing::validateConstruction\n     *\n     * @memberof EdgeRing\n     * @returns {boolean} - Validity of the EdgeRing\n     */\n    EdgeRing.prototype.isValid = function () {\n        // TODO: stub\n        return true;\n    };\n    /**\n     * Tests whether this ring is a hole.\n     *\n     * A ring is a hole if it is oriented counter-clockwise.\n     * Similar implementation of geos::algorithm::CGAlgorithms::isCCW\n     *\n     * @memberof EdgeRing\n     * @returns {boolean} - true: if it is a hole\n     */\n    EdgeRing.prototype.isHole = function () {\n        var _this = this;\n        // XXX: Assuming Ring is valid\n        // Find highest point\n        var hiIndex = this.edges.reduce(function (high, edge, i) {\n            if (edge.from.coordinates[1] > _this.edges[high].from.coordinates[1])\n                high = i;\n            return high;\n        }, 0), iPrev = (hiIndex === 0 ? this.length : hiIndex) - 1, iNext = (hiIndex + 1) % this.length, disc = util_1.orientationIndex(this.edges[iPrev].from.coordinates, this.edges[hiIndex].from.coordinates, this.edges[iNext].from.coordinates);\n        if (disc === 0)\n            return (this.edges[iPrev].from.coordinates[0] >\n                this.edges[iNext].from.coordinates[0]);\n        return disc > 0;\n    };\n    /**\n     * Creates a MultiPoint representing the EdgeRing (discarts edges directions).\n     *\n     * @memberof EdgeRing\n     * @returns {Feature<MultiPoint>} - Multipoint representation of the EdgeRing\n     */\n    EdgeRing.prototype.toMultiPoint = function () {\n        return helpers_1.multiPoint(this.edges.map(function (edge) { return edge.from.coordinates; }));\n    };\n    /**\n     * Creates a Polygon representing the EdgeRing.\n     *\n     * @memberof EdgeRing\n     * @returns {Feature<Polygon>} - Polygon representation of the Edge Ring\n     */\n    EdgeRing.prototype.toPolygon = function () {\n        if (this.polygon)\n            return this.polygon;\n        var coordinates = this.edges.map(function (edge) { return edge.from.coordinates; });\n        coordinates.push(this.edges[0].from.coordinates);\n        return (this.polygon = helpers_1.polygon([coordinates]));\n    };\n    /**\n     * Calculates the envelope of the EdgeRing.\n     *\n     * @memberof EdgeRing\n     * @returns {Feature<Polygon>} - envelope\n     */\n    EdgeRing.prototype.getEnvelope = function () {\n        if (this.envelope)\n            return this.envelope;\n        return (this.envelope = envelope_1.default(this.toPolygon()));\n    };\n    /**\n     * `geos::operation::polygonize::EdgeRing::findEdgeRingContaining`\n     *\n     * @param {EdgeRing} testEdgeRing - EdgeRing to look in the list\n     * @param {EdgeRing[]} shellList - List of EdgeRing in which to search\n     *\n     * @returns {EdgeRing} - EdgeRing which contains the testEdgeRing\n     */\n    EdgeRing.findEdgeRingContaining = function (testEdgeRing, shellList) {\n        var testEnvelope = testEdgeRing.getEnvelope();\n        var minEnvelope, minShell;\n        shellList.forEach(function (shell) {\n            var tryEnvelope = shell.getEnvelope();\n            if (minShell)\n                minEnvelope = minShell.getEnvelope();\n            // the hole envelope cannot equal the shell envelope\n            if (util_1.envelopeIsEqual(tryEnvelope, testEnvelope))\n                return;\n            if (util_1.envelopeContains(tryEnvelope, testEnvelope)) {\n                var testEdgeRingCoordinates = testEdgeRing.map(function (edge) { return edge.from.coordinates; });\n                var testPoint = void 0;\n                var _loop_1 = function (pt) {\n                    if (!shell.some(function (edge) { return util_1.coordinatesEqual(pt, edge.from.coordinates); })) {\n                        testPoint = pt;\n                    }\n                };\n                for (var _i = 0, testEdgeRingCoordinates_1 = testEdgeRingCoordinates; _i < testEdgeRingCoordinates_1.length; _i++) {\n                    var pt = testEdgeRingCoordinates_1[_i];\n                    _loop_1(pt);\n                }\n                if (testPoint && shell.inside(helpers_1.point(testPoint))) {\n                    if (!minShell || util_1.envelopeContains(minEnvelope, tryEnvelope))\n                        minShell = shell;\n                }\n            }\n        });\n        return minShell;\n    };\n    /**\n     * Checks if the point is inside the edgeRing\n     *\n     * @param {Feature<Point>} pt - Point to check if it is inside the edgeRing\n     * @returns {boolean} - True if it is inside, False otherwise\n     */\n    EdgeRing.prototype.inside = function (pt) {\n        return boolean_point_in_polygon_1.default(pt, this.toPolygon());\n    };\n    return EdgeRing;\n}());\nexports.default = EdgeRing;\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e(t.jsts={})}(this,function(t){\"use strict\";function e(){}function n(t){this.message=t||\"\"}function i(t){this.message=t||\"\"}function r(t){this.message=t||\"\"}function o(){}function s(t){return null===t?Mt:t.color}function a(t){return null===t?null:t.parent}function u(t,e){null!==t&&(t.color=e)}function l(t){return null===t?null:t.left}function c(t){return null===t?null:t.right}function p(){this.root_=null,this.size_=0}function h(){}function f(){this.array_=[],arguments[0]instanceof It&&this.addAll(arguments[0])}function g(){}function d(t){this.message=t||\"\"}function y(){this.array_=[]}\"fill\"in Array.prototype||Object.defineProperty(Array.prototype,\"fill\",{configurable:!0,value:function(t){if(void 0===this||null===this)throw new TypeError(this+\" is not an object\");var e=Object(this),n=Math.max(Math.min(e.length,9007199254740991),0)||0,i=1 in arguments?parseInt(Number(arguments[1]),10)||0:0;i=i<0?Math.max(n+i,0):Math.min(i,n);var r=2 in arguments&&void 0!==arguments[2]?parseInt(Number(arguments[2]),10)||0:n;for(r=r<0?Math.max(n+arguments[2],0):Math.min(r,n);i<r;)e[i]=t,++i;return e},writable:!0}),Number.isFinite=Number.isFinite||function(t){return\"number\"==typeof t&&isFinite(t)},Number.isInteger=Number.isInteger||function(t){return\"number\"==typeof t&&isFinite(t)&&Math.floor(t)===t},Number.parseFloat=Number.parseFloat||parseFloat,Number.isNaN=Number.isNaN||function(t){return t!=t},Math.trunc=Math.trunc||function(t){return t<0?Math.ceil(t):Math.floor(t)};var _=function(){};_.prototype.interfaces_=function(){return[]},_.prototype.getClass=function(){return _},_.prototype.equalsWithTolerance=function(t,e,n){return Math.abs(t-e)<=n};var m=function(t){function e(e){t.call(this,e),this.name=\"IllegalArgumentException\",this.message=e,this.stack=(new t).stack}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error),v=function(){},I={MAX_VALUE:{configurable:!0}};v.isNaN=function(t){return Number.isNaN(t)},v.doubleToLongBits=function(t){return t},v.longBitsToDouble=function(t){return t},v.isInfinite=function(t){return!Number.isFinite(t)},I.MAX_VALUE.get=function(){return Number.MAX_VALUE},Object.defineProperties(v,I);var E=function(){},x=function(){},N=function(){},C=function t(){if(this.x=null,this.y=null,this.z=null,0===arguments.length)this.x=0,this.y=0,this.z=t.NULL_ORDINATE;else if(1===arguments.length){var e=arguments[0];this.x=e.x,this.y=e.y,this.z=e.z}else 2===arguments.length?(this.x=arguments[0],this.y=arguments[1],this.z=t.NULL_ORDINATE):3===arguments.length&&(this.x=arguments[0],this.y=arguments[1],this.z=arguments[2])},S={DimensionalComparator:{configurable:!0},serialVersionUID:{configurable:!0},NULL_ORDINATE:{configurable:!0},X:{configurable:!0},Y:{configurable:!0},Z:{configurable:!0}};C.prototype.setOrdinate=function(t,e){switch(t){case C.X:this.x=e;break;case C.Y:this.y=e;break;case C.Z:this.z=e;break;default:throw new m(\"Invalid ordinate index: \"+t)}},C.prototype.equals2D=function(){if(1===arguments.length){var t=arguments[0];return this.x===t.x&&this.y===t.y}if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!_.equalsWithTolerance(this.x,e.x,n)&&!!_.equalsWithTolerance(this.y,e.y,n)}},C.prototype.getOrdinate=function(t){switch(t){case C.X:return this.x;case C.Y:return this.y;case C.Z:return this.z}throw new m(\"Invalid ordinate index: \"+t)},C.prototype.equals3D=function(t){return this.x===t.x&&this.y===t.y&&(this.z===t.z||v.isNaN(this.z))&&v.isNaN(t.z)},C.prototype.equals=function(t){return t instanceof C&&this.equals2D(t)},C.prototype.equalInZ=function(t,e){return _.equalsWithTolerance(this.z,t.z,e)},C.prototype.compareTo=function(t){var e=t;return this.x<e.x?-1:this.x>e.x?1:this.y<e.y?-1:this.y>e.y?1:0},C.prototype.clone=function(){},C.prototype.copy=function(){return new C(this)},C.prototype.toString=function(){return\"(\"+this.x+\", \"+this.y+\", \"+this.z+\")\"},C.prototype.distance3D=function(t){var e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return Math.sqrt(e*e+n*n+i*i)},C.prototype.distance=function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},C.prototype.hashCode=function(){var t=17;return t=37*t+C.hashCode(this.x),t=37*t+C.hashCode(this.y)},C.prototype.setCoordinate=function(t){this.x=t.x,this.y=t.y,this.z=t.z},C.prototype.interfaces_=function(){return[E,x,e]},C.prototype.getClass=function(){return C},C.hashCode=function(){if(1===arguments.length){var t=arguments[0],e=v.doubleToLongBits(t);return Math.trunc((e^e)>>>32)}},S.DimensionalComparator.get=function(){return L},S.serialVersionUID.get=function(){return 0x5cbf2c235c7e5800},S.NULL_ORDINATE.get=function(){return v.NaN},S.X.get=function(){return 0},S.Y.get=function(){return 1},S.Z.get=function(){return 2},Object.defineProperties(C,S);var L=function(t){if(this._dimensionsToTest=2,0===arguments.length);else if(1===arguments.length){var e=arguments[0];if(2!==e&&3!==e)throw new m(\"only 2 or 3 dimensions may be specified\");this._dimensionsToTest=e}};L.prototype.compare=function(t,e){var n=t,i=e,r=L.compare(n.x,i.x);if(0!==r)return r;var o=L.compare(n.y,i.y);if(0!==o)return o;if(this._dimensionsToTest<=2)return 0;return L.compare(n.z,i.z)},L.prototype.interfaces_=function(){return[N]},L.prototype.getClass=function(){return L},L.compare=function(t,e){return t<e?-1:t>e?1:v.isNaN(t)?v.isNaN(e)?0:-1:v.isNaN(e)?1:0};var b=function(){};b.prototype.create=function(){},b.prototype.interfaces_=function(){return[]},b.prototype.getClass=function(){return b};var w=function(){},O={INTERIOR:{configurable:!0},BOUNDARY:{configurable:!0},EXTERIOR:{configurable:!0},NONE:{configurable:!0}};w.prototype.interfaces_=function(){return[]},w.prototype.getClass=function(){return w},w.toLocationSymbol=function(t){switch(t){case w.EXTERIOR:return\"e\";case w.BOUNDARY:return\"b\";case w.INTERIOR:return\"i\";case w.NONE:return\"-\"}throw new m(\"Unknown location value: \"+t)},O.INTERIOR.get=function(){return 0},O.BOUNDARY.get=function(){return 1},O.EXTERIOR.get=function(){return 2},O.NONE.get=function(){return-1},Object.defineProperties(w,O);var T=function(t,e){return t.interfaces_&&t.interfaces_().indexOf(e)>-1},R=function(){},P={LOG_10:{configurable:!0}};R.prototype.interfaces_=function(){return[]},R.prototype.getClass=function(){return R},R.log10=function(t){var e=Math.log(t);return v.isInfinite(e)?e:v.isNaN(e)?e:e/R.LOG_10},R.min=function(t,e,n,i){var r=t;return e<r&&(r=e),n<r&&(r=n),i<r&&(r=i),r},R.clamp=function(){if(\"number\"==typeof arguments[2]&&\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1],n=arguments[2];return t<e?e:t>n?n:t}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var i=arguments[0],r=arguments[1],o=arguments[2];return i<r?r:i>o?o:i}},R.wrap=function(t,e){return t<0?e- -t%e:t%e},R.max=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=t;return e>i&&(i=e),n>i&&(i=n),i}if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3],u=r;return o>u&&(u=o),s>u&&(u=s),a>u&&(u=a),u}},R.average=function(t,e){return(t+e)/2},P.LOG_10.get=function(){return Math.log(10)},Object.defineProperties(R,P);var D=function(t){this.str=t};D.prototype.append=function(t){this.str+=t},D.prototype.setCharAt=function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)},D.prototype.toString=function(t){return this.str};var M=function(t){this.value=t};M.prototype.intValue=function(){return this.value},M.prototype.compareTo=function(t){return this.value<t?-1:this.value>t?1:0},M.isNaN=function(t){return Number.isNaN(t)};var A=function(){};A.isWhitespace=function(t){return t<=32&&t>=0||127===t},A.toUpperCase=function(t){return t.toUpperCase()};var F=function t(){if(this._hi=0,this._lo=0,0===arguments.length)this.init(0);else if(1===arguments.length){if(\"number\"==typeof arguments[0]){var e=arguments[0];this.init(e)}else if(arguments[0]instanceof t){var n=arguments[0];this.init(n)}else if(\"string\"==typeof arguments[0]){var i=arguments[0];t.call(this,t.parse(i))}}else if(2===arguments.length){var r=arguments[0],o=arguments[1];this.init(r,o)}},G={PI:{configurable:!0},TWO_PI:{configurable:!0},PI_2:{configurable:!0},E:{configurable:!0},NaN:{configurable:!0},EPS:{configurable:!0},SPLIT:{configurable:!0},MAX_PRINT_DIGITS:{configurable:!0},TEN:{configurable:!0},ONE:{configurable:!0},SCI_NOT_EXPONENT_CHAR:{configurable:!0},SCI_NOT_ZERO:{configurable:!0}};F.prototype.le=function(t){return(this._hi<t._hi||this._hi===t._hi)&&this._lo<=t._lo},F.prototype.extractSignificantDigits=function(t,e){var n=this.abs(),i=F.magnitude(n._hi),r=F.TEN.pow(i);(n=n.divide(r)).gt(F.TEN)?(n=n.divide(F.TEN),i+=1):n.lt(F.ONE)&&(n=n.multiply(F.TEN),i-=1);for(var o=i+1,s=new D,a=F.MAX_PRINT_DIGITS-1,u=0;u<=a;u++){t&&u===o&&s.append(\".\");var l=Math.trunc(n._hi);if(l<0)break;var c=!1,p=0;l>9?(c=!0,p=\"9\"):p=\"0\"+l,s.append(p),n=n.subtract(F.valueOf(l)).multiply(F.TEN),c&&n.selfAdd(F.TEN);var h=!0,f=F.magnitude(n._hi);if(f<0&&Math.abs(f)>=a-u&&(h=!1),!h)break}return e[0]=i,s.toString()},F.prototype.sqr=function(){return this.multiply(this)},F.prototype.doubleValue=function(){return this._hi+this._lo},F.prototype.subtract=function(){if(arguments[0]instanceof F){var t=arguments[0];return this.add(t.negate())}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.add(-e)}},F.prototype.equals=function(){if(1===arguments.length){var t=arguments[0];return this._hi===t._hi&&this._lo===t._lo}},F.prototype.isZero=function(){return 0===this._hi&&0===this._lo},F.prototype.selfSubtract=function(){if(arguments[0]instanceof F){var t=arguments[0];return this.isNaN()?this:this.selfAdd(-t._hi,-t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.isNaN()?this:this.selfAdd(-e,0)}},F.prototype.getSpecialNumberString=function(){return this.isZero()?\"0.0\":this.isNaN()?\"NaN \":null},F.prototype.min=function(t){return this.le(t)?this:t},F.prototype.selfDivide=function(){if(1===arguments.length){if(arguments[0]instanceof F){var t=arguments[0];return this.selfDivide(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.selfDivide(e,0)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1],r=null,o=null,s=null,a=null,u=null,l=null,c=null,p=null;return u=this._hi/n,l=F.SPLIT*u,r=l-u,p=F.SPLIT*n,r=l-r,o=u-r,s=p-n,c=u*n,s=p-s,a=n-s,p=r*s-c+r*a+o*s+o*a,l=(this._hi-c-p+this._lo-u*i)/n,p=u+l,this._hi=p,this._lo=u-p+l,this}},F.prototype.dump=function(){return\"DD<\"+this._hi+\", \"+this._lo+\">\"},F.prototype.divide=function(){if(arguments[0]instanceof F){var t=arguments[0],e=null,n=null,i=null,r=null,o=null,s=null,a=null,u=null;n=(o=this._hi/t._hi)-(e=(s=F.SPLIT*o)-(e=s-o)),u=e*(i=(u=F.SPLIT*t._hi)-(i=u-t._hi))-(a=o*t._hi)+e*(r=t._hi-i)+n*i+n*r,s=(this._hi-a-u+this._lo-o*t._lo)/t._hi;return new F(u=o+s,o-u+s)}if(\"number\"==typeof arguments[0]){var l=arguments[0];return v.isNaN(l)?F.createNaN():F.copy(this).selfDivide(l,0)}},F.prototype.ge=function(t){return(this._hi>t._hi||this._hi===t._hi)&&this._lo>=t._lo},F.prototype.pow=function(t){if(0===t)return F.valueOf(1);var e=new F(this),n=F.valueOf(1),i=Math.abs(t);if(i>1)for(;i>0;)i%2==1&&n.selfMultiply(e),(i/=2)>0&&(e=e.sqr());else n=e;return t<0?n.reciprocal():n},F.prototype.ceil=function(){if(this.isNaN())return F.NaN;var t=Math.ceil(this._hi),e=0;return t===this._hi&&(e=Math.ceil(this._lo)),new F(t,e)},F.prototype.compareTo=function(t){var e=t;return this._hi<e._hi?-1:this._hi>e._hi?1:this._lo<e._lo?-1:this._lo>e._lo?1:0},F.prototype.rint=function(){if(this.isNaN())return this;return this.add(.5).floor()},F.prototype.setValue=function(){if(arguments[0]instanceof F){var t=arguments[0];return this.init(t),this}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.init(e),this}},F.prototype.max=function(t){return this.ge(t)?this:t},F.prototype.sqrt=function(){if(this.isZero())return F.valueOf(0);if(this.isNegative())return F.NaN;var t=1/Math.sqrt(this._hi),e=this._hi*t,n=F.valueOf(e),i=this.subtract(n.sqr())._hi*(.5*t);return n.add(i)},F.prototype.selfAdd=function(){if(1===arguments.length){if(arguments[0]instanceof F){var t=arguments[0];return this.selfAdd(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0],n=null,i=null,r=null,o=null,s=null,a=null;return r=this._hi+e,s=r-this._hi,o=r-s,o=e-s+(this._hi-o),a=o+this._lo,n=r+a,i=a+(r-n),this._hi=n+i,this._lo=i+(n-this._hi),this}}else if(2===arguments.length){var u=arguments[0],l=arguments[1],c=null,p=null,h=null,f=null,g=null,d=null,y=null;f=this._hi+u,p=this._lo+l,g=f-(d=f-this._hi),h=p-(y=p-this._lo);var _=(c=f+(d=(g=u-d+(this._hi-g))+p))+(d=(h=l-y+(this._lo-h))+(d+(f-c))),m=d+(c-_);return this._hi=_,this._lo=m,this}},F.prototype.selfMultiply=function(){if(1===arguments.length){if(arguments[0]instanceof F){var t=arguments[0];return this.selfMultiply(t._hi,t._lo)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return this.selfMultiply(e,0)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1],r=null,o=null,s=null,a=null,u=null,l=null;r=(u=F.SPLIT*this._hi)-this._hi,l=F.SPLIT*n,r=u-r,o=this._hi-r,s=l-n;var c=(u=this._hi*n)+(l=r*(s=l-s)-u+r*(a=n-s)+o*s+o*a+(this._hi*i+this._lo*n)),p=l+(r=u-c);return this._hi=c,this._lo=p,this}},F.prototype.selfSqr=function(){return this.selfMultiply(this)},F.prototype.floor=function(){if(this.isNaN())return F.NaN;var t=Math.floor(this._hi),e=0;return t===this._hi&&(e=Math.floor(this._lo)),new F(t,e)},F.prototype.negate=function(){return this.isNaN()?this:new F(-this._hi,-this._lo)},F.prototype.clone=function(){},F.prototype.multiply=function(){if(arguments[0]instanceof F){var t=arguments[0];return t.isNaN()?F.createNaN():F.copy(this).selfMultiply(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return v.isNaN(e)?F.createNaN():F.copy(this).selfMultiply(e,0)}},F.prototype.isNaN=function(){return v.isNaN(this._hi)},F.prototype.intValue=function(){return Math.trunc(this._hi)},F.prototype.toString=function(){var t=F.magnitude(this._hi);return t>=-3&&t<=20?this.toStandardNotation():this.toSciNotation()},F.prototype.toStandardNotation=function(){var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),n=this.extractSignificantDigits(!0,e),i=e[0]+1,r=n;if(\".\"===n.charAt(0))r=\"0\"+n;else if(i<0)r=\"0.\"+F.stringOfChar(\"0\",-i)+n;else if(-1===n.indexOf(\".\")){var o=i-n.length;r=n+F.stringOfChar(\"0\",o)+\".0\"}return this.isNegative()?\"-\"+r:r},F.prototype.reciprocal=function(){var t=null,e=null,n=null,i=null,r=null,o=null,s=null,a=null;e=(r=1/this._hi)-(t=(o=F.SPLIT*r)-(t=o-r)),n=(a=F.SPLIT*this._hi)-this._hi;var u=r+(o=(1-(s=r*this._hi)-(a=t*(n=a-n)-s+t*(i=this._hi-n)+e*n+e*i)-r*this._lo)/this._hi);return new F(u,r-u+o)},F.prototype.toSciNotation=function(){if(this.isZero())return F.SCI_NOT_ZERO;var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),n=this.extractSignificantDigits(!1,e),i=F.SCI_NOT_EXPONENT_CHAR+e[0];if(\"0\"===n.charAt(0))throw new Error(\"Found leading zero: \"+n);var r=\"\";n.length>1&&(r=n.substring(1));var o=n.charAt(0)+\".\"+r;return this.isNegative()?\"-\"+o+i:o+i},F.prototype.abs=function(){return this.isNaN()?F.NaN:this.isNegative()?this.negate():new F(this)},F.prototype.isPositive=function(){return(this._hi>0||0===this._hi)&&this._lo>0},F.prototype.lt=function(t){return(this._hi<t._hi||this._hi===t._hi)&&this._lo<t._lo},F.prototype.add=function(){if(arguments[0]instanceof F){var t=arguments[0];return F.copy(this).selfAdd(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return F.copy(this).selfAdd(e)}},F.prototype.init=function(){if(1===arguments.length){if(\"number\"==typeof arguments[0]){var t=arguments[0];this._hi=t,this._lo=0}else if(arguments[0]instanceof F){var e=arguments[0];this._hi=e._hi,this._lo=e._lo}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this._hi=n,this._lo=i}},F.prototype.gt=function(t){return(this._hi>t._hi||this._hi===t._hi)&&this._lo>t._lo},F.prototype.isNegative=function(){return(this._hi<0||0===this._hi)&&this._lo<0},F.prototype.trunc=function(){return this.isNaN()?F.NaN:this.isPositive()?this.floor():this.ceil()},F.prototype.signum=function(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0},F.prototype.interfaces_=function(){return[e,E,x]},F.prototype.getClass=function(){return F},F.sqr=function(t){return F.valueOf(t).selfMultiply(t)},F.valueOf=function(){if(\"string\"==typeof arguments[0]){var t=arguments[0];return F.parse(t)}if(\"number\"==typeof arguments[0]){var e=arguments[0];return new F(e)}},F.sqrt=function(t){return F.valueOf(t).sqrt()},F.parse=function(t){for(var e=0,n=t.length;A.isWhitespace(t.charAt(e));)e++;var i=!1;if(e<n){var r=t.charAt(e);\"-\"!==r&&\"+\"!==r||(e++,\"-\"===r&&(i=!0))}for(var o=new F,s=0,a=0,u=0;!(e>=n);){var l=t.charAt(e);if(e++,A.isDigit(l)){var c=l-\"0\";o.selfMultiply(F.TEN),o.selfAdd(c),s++}else{if(\".\"!==l){if(\"e\"===l||\"E\"===l){var p=t.substring(e);try{u=M.parseInt(p)}catch(e){throw e instanceof Error?new Error(\"Invalid exponent \"+p+\" in string \"+t):e}break}throw new Error(\"Unexpected character '\"+l+\"' at position \"+e+\" in string \"+t)}a=s}}var h=o,f=s-a-u;if(0===f)h=o;else if(f>0){var g=F.TEN.pow(f);h=o.divide(g)}else if(f<0){var d=F.TEN.pow(-f);h=o.multiply(d)}return i?h.negate():h},F.createNaN=function(){return new F(v.NaN,v.NaN)},F.copy=function(t){return new F(t)},F.magnitude=function(t){var e=Math.abs(t),n=Math.log(e)/Math.log(10),i=Math.trunc(Math.floor(n));return 10*Math.pow(10,i)<=e&&(i+=1),i},F.stringOfChar=function(t,e){for(var n=new D,i=0;i<e;i++)n.append(t);return n.toString()},G.PI.get=function(){return new F(3.141592653589793,1.2246467991473532e-16)},G.TWO_PI.get=function(){return new F(6.283185307179586,2.4492935982947064e-16)},G.PI_2.get=function(){return new F(1.5707963267948966,6.123233995736766e-17)},G.E.get=function(){return new F(2.718281828459045,1.4456468917292502e-16)},G.NaN.get=function(){return new F(v.NaN,v.NaN)},G.EPS.get=function(){return 1.23259516440783e-32},G.SPLIT.get=function(){return 134217729},G.MAX_PRINT_DIGITS.get=function(){return 32},G.TEN.get=function(){return F.valueOf(10)},G.ONE.get=function(){return F.valueOf(1)},G.SCI_NOT_EXPONENT_CHAR.get=function(){return\"E\"},G.SCI_NOT_ZERO.get=function(){return\"0.0E0\"},Object.defineProperties(F,G);var q=function(){},B={DP_SAFE_EPSILON:{configurable:!0}};q.prototype.interfaces_=function(){return[]},q.prototype.getClass=function(){return q},q.orientationIndex=function(t,e,n){var i=q.orientationIndexFilter(t,e,n);if(i<=1)return i;var r=F.valueOf(e.x).selfAdd(-t.x),o=F.valueOf(e.y).selfAdd(-t.y),s=F.valueOf(n.x).selfAdd(-e.x),a=F.valueOf(n.y).selfAdd(-e.y);return r.selfMultiply(a).selfSubtract(o.selfMultiply(s)).signum()},q.signOfDet2x2=function(t,e,n,i){return t.multiply(i).selfSubtract(e.multiply(n)).signum()},q.intersection=function(t,e,n,i){var r=F.valueOf(i.y).selfSubtract(n.y).selfMultiply(F.valueOf(e.x).selfSubtract(t.x)),o=F.valueOf(i.x).selfSubtract(n.x).selfMultiply(F.valueOf(e.y).selfSubtract(t.y)),s=r.subtract(o),a=F.valueOf(i.x).selfSubtract(n.x).selfMultiply(F.valueOf(t.y).selfSubtract(n.y)),u=F.valueOf(i.y).selfSubtract(n.y).selfMultiply(F.valueOf(t.x).selfSubtract(n.x)),l=a.subtract(u).selfDivide(s).doubleValue(),c=F.valueOf(t.x).selfAdd(F.valueOf(e.x).selfSubtract(t.x).selfMultiply(l)).doubleValue(),p=F.valueOf(e.x).selfSubtract(t.x).selfMultiply(F.valueOf(t.y).selfSubtract(n.y)),h=F.valueOf(e.y).selfSubtract(t.y).selfMultiply(F.valueOf(t.x).selfSubtract(n.x)),f=p.subtract(h).selfDivide(s).doubleValue(),g=F.valueOf(n.y).selfAdd(F.valueOf(i.y).selfSubtract(n.y).selfMultiply(f)).doubleValue();return new C(c,g)},q.orientationIndexFilter=function(t,e,n){var i=null,r=(t.x-n.x)*(e.y-n.y),o=(t.y-n.y)*(e.x-n.x),s=r-o;if(r>0){if(o<=0)return q.signum(s);i=r+o}else{if(!(r<0))return q.signum(s);if(o>=0)return q.signum(s);i=-r-o}var a=q.DP_SAFE_EPSILON*i;return s>=a||-s>=a?q.signum(s):2},q.signum=function(t){return t>0?1:t<0?-1:0},B.DP_SAFE_EPSILON.get=function(){return 1e-15},Object.defineProperties(q,B);var V=function(){},U={X:{configurable:!0},Y:{configurable:!0},Z:{configurable:!0},M:{configurable:!0}};U.X.get=function(){return 0},U.Y.get=function(){return 1},U.Z.get=function(){return 2},U.M.get=function(){return 3},V.prototype.setOrdinate=function(t,e,n){},V.prototype.size=function(){},V.prototype.getOrdinate=function(t,e){},V.prototype.getCoordinate=function(){},V.prototype.getCoordinateCopy=function(t){},V.prototype.getDimension=function(){},V.prototype.getX=function(t){},V.prototype.clone=function(){},V.prototype.expandEnvelope=function(t){},V.prototype.copy=function(){},V.prototype.getY=function(t){},V.prototype.toCoordinateArray=function(){},V.prototype.interfaces_=function(){return[x]},V.prototype.getClass=function(){return V},Object.defineProperties(V,U);var z=function(){},X=function(t){function e(){t.call(this,\"Projective point not representable on the Cartesian plane.\")}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(z),Y=function(){};Y.arraycopy=function(t,e,n,i,r){for(var o=0,s=e;s<e+r;s++)n[i+o]=t[s],o++},Y.getProperty=function(t){return{\"line.separator\":\"\\n\"}[t]};var k=function t(){if(this.x=null,this.y=null,this.w=null,0===arguments.length)this.x=0,this.y=0,this.w=1;else if(1===arguments.length){var e=arguments[0];this.x=e.x,this.y=e.y,this.w=1}else if(2===arguments.length){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var n=arguments[0],i=arguments[1];this.x=n,this.y=i,this.w=1}else if(arguments[0]instanceof t&&arguments[1]instanceof t){var r=arguments[0],o=arguments[1];this.x=r.y*o.w-o.y*r.w,this.y=o.x*r.w-r.x*o.w,this.w=r.x*o.y-o.x*r.y}else if(arguments[0]instanceof C&&arguments[1]instanceof C){var s=arguments[0],a=arguments[1];this.x=s.y-a.y,this.y=a.x-s.x,this.w=s.x*a.y-a.x*s.y}}else if(3===arguments.length){var u=arguments[0],l=arguments[1],c=arguments[2];this.x=u,this.y=l,this.w=c}else if(4===arguments.length){var p=arguments[0],h=arguments[1],f=arguments[2],g=arguments[3],d=p.y-h.y,y=h.x-p.x,_=p.x*h.y-h.x*p.y,m=f.y-g.y,v=g.x-f.x,I=f.x*g.y-g.x*f.y;this.x=y*I-v*_,this.y=m*_-d*I,this.w=d*v-m*y}};k.prototype.getY=function(){var t=this.y/this.w;if(v.isNaN(t)||v.isInfinite(t))throw new X;return t},k.prototype.getX=function(){var t=this.x/this.w;if(v.isNaN(t)||v.isInfinite(t))throw new X;return t},k.prototype.getCoordinate=function(){var t=new C;return t.x=this.getX(),t.y=this.getY(),t},k.prototype.interfaces_=function(){return[]},k.prototype.getClass=function(){return k},k.intersection=function(t,e,n,i){var r=t.y-e.y,o=e.x-t.x,s=t.x*e.y-e.x*t.y,a=n.y-i.y,u=i.x-n.x,l=n.x*i.y-i.x*n.y,c=r*u-a*o,p=(o*l-u*s)/c,h=(a*s-r*l)/c;if(v.isNaN(p)||v.isInfinite(p)||v.isNaN(h)||v.isInfinite(h))throw new X;return new C(p,h)};var j=function t(){if(this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,0===arguments.length)this.init();else if(1===arguments.length){if(arguments[0]instanceof C){var e=arguments[0];this.init(e.x,e.x,e.y,e.y)}else if(arguments[0]instanceof t){var n=arguments[0];this.init(n)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.init(i.x,r.x,i.y,r.y)}else if(4===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2],u=arguments[3];this.init(o,s,a,u)}},H={serialVersionUID:{configurable:!0}};j.prototype.getArea=function(){return this.getWidth()*this.getHeight()},j.prototype.equals=function(t){if(!(t instanceof j))return!1;var e=t;return this.isNull()?e.isNull():this._maxx===e.getMaxX()&&this._maxy===e.getMaxY()&&this._minx===e.getMinX()&&this._miny===e.getMinY()},j.prototype.intersection=function(t){if(this.isNull()||t.isNull()||!this.intersects(t))return new j;var e=this._minx>t._minx?this._minx:t._minx,n=this._miny>t._miny?this._miny:t._miny,i=this._maxx<t._maxx?this._maxx:t._maxx,r=this._maxy<t._maxy?this._maxy:t._maxy;return new j(e,i,n,r)},j.prototype.isNull=function(){return this._maxx<this._minx},j.prototype.getMaxX=function(){return this._maxx},j.prototype.covers=function(){if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];return this.covers(t.x,t.y)}if(arguments[0]instanceof j){var e=arguments[0];return!this.isNull()&&!e.isNull()&&(e.getMinX()>=this._minx&&e.getMaxX()<=this._maxx&&e.getMinY()>=this._miny&&e.getMaxY()<=this._maxy)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return!this.isNull()&&(n>=this._minx&&n<=this._maxx&&i>=this._miny&&i<=this._maxy)}},j.prototype.intersects=function(){if(1===arguments.length){if(arguments[0]instanceof j){var t=arguments[0];return!this.isNull()&&!t.isNull()&&!(t._minx>this._maxx||t._maxx<this._minx||t._miny>this._maxy||t._maxy<this._miny)}if(arguments[0]instanceof C){var e=arguments[0];return this.intersects(e.x,e.y)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return!this.isNull()&&!(n>this._maxx||n<this._minx||i>this._maxy||i<this._miny)}},j.prototype.getMinY=function(){return this._miny},j.prototype.getMinX=function(){return this._minx},j.prototype.expandToInclude=function(){if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];this.expandToInclude(t.x,t.y)}else if(arguments[0]instanceof j){var e=arguments[0];if(e.isNull())return null;this.isNull()?(this._minx=e.getMinX(),this._maxx=e.getMaxX(),this._miny=e.getMinY(),this._maxy=e.getMaxY()):(e._minx<this._minx&&(this._minx=e._minx),e._maxx>this._maxx&&(this._maxx=e._maxx),e._miny<this._miny&&(this._miny=e._miny),e._maxy>this._maxy&&(this._maxy=e._maxy))}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.isNull()?(this._minx=n,this._maxx=n,this._miny=i,this._maxy=i):(n<this._minx&&(this._minx=n),n>this._maxx&&(this._maxx=n),i<this._miny&&(this._miny=i),i>this._maxy&&(this._maxy=i))}},j.prototype.minExtent=function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t<e?t:e},j.prototype.getWidth=function(){return this.isNull()?0:this._maxx-this._minx},j.prototype.compareTo=function(t){var e=t;return this.isNull()?e.isNull()?0:-1:e.isNull()?1:this._minx<e._minx?-1:this._minx>e._minx?1:this._miny<e._miny?-1:this._miny>e._miny?1:this._maxx<e._maxx?-1:this._maxx>e._maxx?1:this._maxy<e._maxy?-1:this._maxy>e._maxy?1:0},j.prototype.translate=function(t,e){if(this.isNull())return null;this.init(this.getMinX()+t,this.getMaxX()+t,this.getMinY()+e,this.getMaxY()+e)},j.prototype.toString=function(){return\"Env[\"+this._minx+\" : \"+this._maxx+\", \"+this._miny+\" : \"+this._maxy+\"]\"},j.prototype.setToNull=function(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1},j.prototype.getHeight=function(){return this.isNull()?0:this._maxy-this._miny},j.prototype.maxExtent=function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t>e?t:e},j.prototype.expandBy=function(){if(1===arguments.length){var t=arguments[0];this.expandBy(t,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this.isNull())return null;this._minx-=e,this._maxx+=e,this._miny-=n,this._maxy+=n,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}},j.prototype.contains=function(){if(1===arguments.length){if(arguments[0]instanceof j){var t=arguments[0];return this.covers(t)}if(arguments[0]instanceof C){var e=arguments[0];return this.covers(e)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return this.covers(n,i)}},j.prototype.centre=function(){return this.isNull()?null:new C((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)},j.prototype.init=function(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof j){var e=arguments[0];this._minx=e._minx,this._maxx=e._maxx,this._miny=e._miny,this._maxy=e._maxy}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.init(n.x,i.x,n.y,i.y)}else if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];r<o?(this._minx=r,this._maxx=o):(this._minx=o,this._maxx=r),s<a?(this._miny=s,this._maxy=a):(this._miny=a,this._maxy=s)}},j.prototype.getMaxY=function(){return this._maxy},j.prototype.distance=function(t){if(this.intersects(t))return 0;var e=0;this._maxx<t._minx?e=t._minx-this._maxx:this._minx>t._maxx&&(e=this._minx-t._maxx);var n=0;return this._maxy<t._miny?n=t._miny-this._maxy:this._miny>t._maxy&&(n=this._miny-t._maxy),0===e?n:0===n?e:Math.sqrt(e*e+n*n)},j.prototype.hashCode=function(){var t=17;return t=37*t+C.hashCode(this._minx),t=37*t+C.hashCode(this._maxx),t=37*t+C.hashCode(this._miny),t=37*t+C.hashCode(this._maxy)},j.prototype.interfaces_=function(){return[E,e]},j.prototype.getClass=function(){return j},j.intersects=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2];return n.x>=(t.x<e.x?t.x:e.x)&&n.x<=(t.x>e.x?t.x:e.x)&&n.y>=(t.y<e.y?t.y:e.y)&&n.y<=(t.y>e.y?t.y:e.y)}if(4===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2],s=arguments[3],a=Math.min(o.x,s.x),u=Math.max(o.x,s.x),l=Math.min(i.x,r.x),c=Math.max(i.x,r.x);return!(l>u)&&(!(c<a)&&(a=Math.min(o.y,s.y),u=Math.max(o.y,s.y),l=Math.min(i.y,r.y),c=Math.max(i.y,r.y),!(l>u)&&!(c<a)))}},H.serialVersionUID.get=function(){return 0x51845cd552189800},Object.defineProperties(j,H);var W={typeStr:/^\\s*(\\w+)\\s*\\(\\s*(.*)\\s*\\)\\s*$/,emptyTypeStr:/^\\s*(\\w+)\\s*EMPTY\\s*$/,spaces:/\\s+/,parenComma:/\\)\\s*,\\s*\\(/,doubleParenComma:/\\)\\s*\\)\\s*,\\s*\\(\\s*\\(/,trimParens:/^\\s*\\(?(.*?)\\)?\\s*$/},K=function(t){this.geometryFactory=t||new _e};K.prototype.read=function(t){var e,n,i;t=t.replace(/[\\n\\r]/g,\" \");var r=W.typeStr.exec(t);if(-1!==t.search(\"EMPTY\")&&((r=W.emptyTypeStr.exec(t))[2]=void 0),r&&(n=r[1].toLowerCase(),i=r[2],Q[n]&&(e=Q[n].apply(this,[i]))),void 0===e)throw new Error(\"Could not parse WKT \"+t);return e},K.prototype.write=function(t){return this.extractGeometry(t)},K.prototype.extractGeometry=function(t){var e=t.getGeometryType().toLowerCase();if(!J[e])return null;var n=e.toUpperCase();return t.isEmpty()?n+\" EMPTY\":n+\"(\"+J[e].apply(this,[t])+\")\"};var J={coordinate:function(t){return t.x+\" \"+t.y},point:function(t){return J.coordinate.call(this,t._coordinates._coordinates[0])},multipoint:function(t){for(var e=[],n=0,i=t._geometries.length;n<i;++n)e.push(\"(\"+J.point.apply(this,[t._geometries[n]])+\")\");return e.join(\",\")},linestring:function(t){for(var e=[],n=0,i=t._points._coordinates.length;n<i;++n)e.push(J.coordinate.apply(this,[t._points._coordinates[n]]));return e.join(\",\")},linearring:function(t){for(var e=[],n=0,i=t._points._coordinates.length;n<i;++n)e.push(J.coordinate.apply(this,[t._points._coordinates[n]]));return e.join(\",\")},multilinestring:function(t){for(var e=[],n=0,i=t._geometries.length;n<i;++n)e.push(\"(\"+J.linestring.apply(this,[t._geometries[n]])+\")\");return e.join(\",\")},polygon:function(t){var e=[];e.push(\"(\"+J.linestring.apply(this,[t._shell])+\")\");for(var n=0,i=t._holes.length;n<i;++n)e.push(\"(\"+J.linestring.apply(this,[t._holes[n]])+\")\");return e.join(\",\")},multipolygon:function(t){for(var e=[],n=0,i=t._geometries.length;n<i;++n)e.push(\"(\"+J.polygon.apply(this,[t._geometries[n]])+\")\");return e.join(\",\")},geometrycollection:function(t){for(var e=[],n=0,i=t._geometries.length;n<i;++n)e.push(this.extractGeometry(t._geometries[n]));return e.join(\",\")}},Q={point:function(t){if(void 0===t)return this.geometryFactory.createPoint();var e=t.trim().split(W.spaces);return this.geometryFactory.createPoint(new C(Number.parseFloat(e[0]),Number.parseFloat(e[1])))},multipoint:function(t){if(void 0===t)return this.geometryFactory.createMultiPoint();for(var e,n=t.trim().split(\",\"),i=[],r=0,o=n.length;r<o;++r)e=n[r].replace(W.trimParens,\"$1\"),i.push(Q.point.apply(this,[e]));return this.geometryFactory.createMultiPoint(i)},linestring:function(t){if(void 0===t)return this.geometryFactory.createLineString();for(var e,n=t.trim().split(\",\"),i=[],r=0,o=n.length;r<o;++r)e=n[r].trim().split(W.spaces),i.push(new C(Number.parseFloat(e[0]),Number.parseFloat(e[1])));return this.geometryFactory.createLineString(i)},linearring:function(t){if(void 0===t)return this.geometryFactory.createLinearRing();for(var e,n=t.trim().split(\",\"),i=[],r=0,o=n.length;r<o;++r)e=n[r].trim().split(W.spaces),i.push(new C(Number.parseFloat(e[0]),Number.parseFloat(e[1])));return this.geometryFactory.createLinearRing(i)},multilinestring:function(t){if(void 0===t)return this.geometryFactory.createMultiLineString();for(var e,n=t.trim().split(W.parenComma),i=[],r=0,o=n.length;r<o;++r)e=n[r].replace(W.trimParens,\"$1\"),i.push(Q.linestring.apply(this,[e]));return this.geometryFactory.createMultiLineString(i)},polygon:function(t){if(void 0===t)return this.geometryFactory.createPolygon();for(var e,n,i,r,o=t.trim().split(W.parenComma),s=[],a=0,u=o.length;a<u;++a)e=o[a].replace(W.trimParens,\"$1\"),n=Q.linestring.apply(this,[e]),i=this.geometryFactory.createLinearRing(n._points),0===a?r=i:s.push(i);return this.geometryFactory.createPolygon(r,s)},multipolygon:function(t){if(void 0===t)return this.geometryFactory.createMultiPolygon();for(var e,n=t.trim().split(W.doubleParenComma),i=[],r=0,o=n.length;r<o;++r)e=n[r].replace(W.trimParens,\"$1\"),i.push(Q.polygon.apply(this,[e]));return this.geometryFactory.createMultiPolygon(i)},geometrycollection:function(t){if(void 0===t)return this.geometryFactory.createGeometryCollection();for(var e=(t=t.replace(/,\\s*([A-Za-z])/g,\"|$1\")).trim().split(\"|\"),n=[],i=0,r=e.length;i<r;++i)n.push(this.read(e[i]));return this.geometryFactory.createGeometryCollection(n)}},Z=function(t){this.parser=new K(t)};Z.prototype.write=function(t){return this.parser.write(t)},Z.toLineString=function(t,e){if(2!==arguments.length)throw new Error(\"Not implemented\");return\"LINESTRING ( \"+t.x+\" \"+t.y+\", \"+e.x+\" \"+e.y+\" )\"};var $=function(t){function e(e){t.call(this,e),this.name=\"RuntimeException\",this.message=e,this.stack=(new t).stack}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error),tt=function(t){function e(){if(t.call(this),0===arguments.length)t.call(this);else if(1===arguments.length){var e=arguments[0];t.call(this,e)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}($),et=function(){};et.prototype.interfaces_=function(){return[]},et.prototype.getClass=function(){return et},et.shouldNeverReachHere=function(){if(0===arguments.length)et.shouldNeverReachHere(null);else if(1===arguments.length){var t=arguments[0];throw new tt(\"Should never reach here\"+(null!==t?\": \"+t:\"\"))}},et.isTrue=function(){var t,e;if(1===arguments.length)t=arguments[0],et.isTrue(t,null);else if(2===arguments.length&&(t=arguments[0],e=arguments[1],!t))throw null===e?new tt:new tt(e)},et.equals=function(){var t,e,n;if(2===arguments.length)t=arguments[0],e=arguments[1],et.equals(t,e,null);else if(3===arguments.length&&(t=arguments[0],e=arguments[1],n=arguments[2],!e.equals(t)))throw new tt(\"Expected \"+t+\" but encountered \"+e+(null!==n?\": \"+n:\"\"))};var nt=function(){this._result=null,this._inputLines=Array(2).fill().map(function(){return Array(2)}),this._intPt=new Array(2).fill(null),this._intLineIndex=null,this._isProper=null,this._pa=null,this._pb=null,this._precisionModel=null,this._intPt[0]=new C,this._intPt[1]=new C,this._pa=this._intPt[0],this._pb=this._intPt[1],this._result=0},it={DONT_INTERSECT:{configurable:!0},DO_INTERSECT:{configurable:!0},COLLINEAR:{configurable:!0},NO_INTERSECTION:{configurable:!0},POINT_INTERSECTION:{configurable:!0},COLLINEAR_INTERSECTION:{configurable:!0}};nt.prototype.getIndexAlongSegment=function(t,e){return this.computeIntLineIndex(),this._intLineIndex[t][e]},nt.prototype.getTopologySummary=function(){var t=new D;return this.isEndPoint()&&t.append(\" endpoint\"),this._isProper&&t.append(\" proper\"),this.isCollinear()&&t.append(\" collinear\"),t.toString()},nt.prototype.computeIntersection=function(t,e,n,i){this._inputLines[0][0]=t,this._inputLines[0][1]=e,this._inputLines[1][0]=n,this._inputLines[1][1]=i,this._result=this.computeIntersect(t,e,n,i)},nt.prototype.getIntersectionNum=function(){return this._result},nt.prototype.computeIntLineIndex=function(){if(0===arguments.length)null===this._intLineIndex&&(this._intLineIndex=Array(2).fill().map(function(){return Array(2)}),this.computeIntLineIndex(0),this.computeIntLineIndex(1));else if(1===arguments.length){var t=arguments[0];this.getEdgeDistance(t,0)>this.getEdgeDistance(t,1)?(this._intLineIndex[t][0]=0,this._intLineIndex[t][1]=1):(this._intLineIndex[t][0]=1,this._intLineIndex[t][1]=0)}},nt.prototype.isProper=function(){return this.hasIntersection()&&this._isProper},nt.prototype.setPrecisionModel=function(t){this._precisionModel=t},nt.prototype.isInteriorIntersection=function(){if(0===arguments.length)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(1===arguments.length){for(var t=arguments[0],e=0;e<this._result;e++)if(!this._intPt[e].equals2D(this._inputLines[t][0])&&!this._intPt[e].equals2D(this._inputLines[t][1]))return!0;return!1}},nt.prototype.getIntersection=function(t){return this._intPt[t]},nt.prototype.isEndPoint=function(){return this.hasIntersection()&&!this._isProper},nt.prototype.hasIntersection=function(){return this._result!==nt.NO_INTERSECTION},nt.prototype.getEdgeDistance=function(t,e){return nt.computeEdgeDistance(this._intPt[e],this._inputLines[t][0],this._inputLines[t][1])},nt.prototype.isCollinear=function(){return this._result===nt.COLLINEAR_INTERSECTION},nt.prototype.toString=function(){return Z.toLineString(this._inputLines[0][0],this._inputLines[0][1])+\" - \"+Z.toLineString(this._inputLines[1][0],this._inputLines[1][1])+this.getTopologySummary()},nt.prototype.getEndpoint=function(t,e){return this._inputLines[t][e]},nt.prototype.isIntersection=function(t){for(var e=0;e<this._result;e++)if(this._intPt[e].equals2D(t))return!0;return!1},nt.prototype.getIntersectionAlongSegment=function(t,e){return this.computeIntLineIndex(),this._intPt[this._intLineIndex[t][e]]},nt.prototype.interfaces_=function(){return[]},nt.prototype.getClass=function(){return nt},nt.computeEdgeDistance=function(t,e,n){var i=Math.abs(n.x-e.x),r=Math.abs(n.y-e.y),o=-1;if(t.equals(e))o=0;else if(t.equals(n))o=i>r?i:r;else{var s=Math.abs(t.x-e.x),a=Math.abs(t.y-e.y);0!==(o=i>r?s:a)||t.equals(e)||(o=Math.max(s,a))}return et.isTrue(!(0===o&&!t.equals(e)),\"Bad distance calculation\"),o},nt.nonRobustComputeEdgeDistance=function(t,e,n){var i=t.x-e.x,r=t.y-e.y,o=Math.sqrt(i*i+r*r);return et.isTrue(!(0===o&&!t.equals(e)),\"Invalid distance calculation\"),o},it.DONT_INTERSECT.get=function(){return 0},it.DO_INTERSECT.get=function(){return 1},it.COLLINEAR.get=function(){return 2},it.NO_INTERSECTION.get=function(){return 0},it.POINT_INTERSECTION.get=function(){return 1},it.COLLINEAR_INTERSECTION.get=function(){return 2},Object.defineProperties(nt,it);var rt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isInSegmentEnvelopes=function(t){var e=new j(this._inputLines[0][0],this._inputLines[0][1]),n=new j(this._inputLines[1][0],this._inputLines[1][1]);return e.contains(t)&&n.contains(t)},e.prototype.computeIntersection=function(){if(3!==arguments.length)return t.prototype.computeIntersection.apply(this,arguments);var e=arguments[0],n=arguments[1],i=arguments[2];if(this._isProper=!1,j.intersects(n,i,e)&&0===at.orientationIndex(n,i,e)&&0===at.orientationIndex(i,n,e))return this._isProper=!0,(e.equals(n)||e.equals(i))&&(this._isProper=!1),this._result=t.POINT_INTERSECTION,null;this._result=t.NO_INTERSECTION},e.prototype.normalizeToMinimum=function(t,e,n,i,r){r.x=this.smallestInAbsValue(t.x,e.x,n.x,i.x),r.y=this.smallestInAbsValue(t.y,e.y,n.y,i.y),t.x-=r.x,t.y-=r.y,e.x-=r.x,e.y-=r.y,n.x-=r.x,n.y-=r.y,i.x-=r.x,i.y-=r.y},e.prototype.safeHCoordinateIntersection=function(t,n,i,r){var o=null;try{o=k.intersection(t,n,i,r)}catch(s){if(!(s instanceof X))throw s;o=e.nearestEndpoint(t,n,i,r)}return o},e.prototype.intersection=function(t,n,i,r){var o=this.intersectionWithNormalization(t,n,i,r);return this.isInSegmentEnvelopes(o)||(o=new C(e.nearestEndpoint(t,n,i,r))),null!==this._precisionModel&&this._precisionModel.makePrecise(o),o},e.prototype.smallestInAbsValue=function(t,e,n,i){var r=t,o=Math.abs(r);return Math.abs(e)<o&&(r=e,o=Math.abs(e)),Math.abs(n)<o&&(r=n,o=Math.abs(n)),Math.abs(i)<o&&(r=i),r},e.prototype.checkDD=function(t,e,n,i,r){var o=q.intersection(t,e,n,i),s=this.isInSegmentEnvelopes(o);Y.out.println(\"DD in env = \"+s+\"  --------------------- \"+o),r.distance(o)>1e-4&&Y.out.println(\"Distance = \"+r.distance(o))},e.prototype.intersectionWithNormalization=function(t,e,n,i){var r=new C(t),o=new C(e),s=new C(n),a=new C(i),u=new C;this.normalizeToEnvCentre(r,o,s,a,u);var l=this.safeHCoordinateIntersection(r,o,s,a);return l.x+=u.x,l.y+=u.y,l},e.prototype.computeCollinearIntersection=function(e,n,i,r){var o=j.intersects(e,n,i),s=j.intersects(e,n,r),a=j.intersects(i,r,e),u=j.intersects(i,r,n);return o&&s?(this._intPt[0]=i,this._intPt[1]=r,t.COLLINEAR_INTERSECTION):a&&u?(this._intPt[0]=e,this._intPt[1]=n,t.COLLINEAR_INTERSECTION):o&&a?(this._intPt[0]=i,this._intPt[1]=e,!i.equals(e)||s||u?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):o&&u?(this._intPt[0]=i,this._intPt[1]=n,!i.equals(n)||s||a?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):s&&a?(this._intPt[0]=r,this._intPt[1]=e,!r.equals(e)||o||u?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):s&&u?(this._intPt[0]=r,this._intPt[1]=n,!r.equals(n)||o||a?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):t.NO_INTERSECTION},e.prototype.normalizeToEnvCentre=function(t,e,n,i,r){var o=t.x<e.x?t.x:e.x,s=t.y<e.y?t.y:e.y,a=t.x>e.x?t.x:e.x,u=t.y>e.y?t.y:e.y,l=n.x<i.x?n.x:i.x,c=n.y<i.y?n.y:i.y,p=n.x>i.x?n.x:i.x,h=n.y>i.y?n.y:i.y,f=((o>l?o:l)+(a<p?a:p))/2,g=((s>c?s:c)+(u<h?u:h))/2;r.x=f,r.y=g,t.x-=r.x,t.y-=r.y,e.x-=r.x,e.y-=r.y,n.x-=r.x,n.y-=r.y,i.x-=r.x,i.y-=r.y},e.prototype.computeIntersect=function(e,n,i,r){if(this._isProper=!1,!j.intersects(e,n,i,r))return t.NO_INTERSECTION;var o=at.orientationIndex(e,n,i),s=at.orientationIndex(e,n,r);if(o>0&&s>0||o<0&&s<0)return t.NO_INTERSECTION;var a=at.orientationIndex(i,r,e),u=at.orientationIndex(i,r,n);if(a>0&&u>0||a<0&&u<0)return t.NO_INTERSECTION;return 0===o&&0===s&&0===a&&0===u?this.computeCollinearIntersection(e,n,i,r):(0===o||0===s||0===a||0===u?(this._isProper=!1,e.equals2D(i)||e.equals2D(r)?this._intPt[0]=e:n.equals2D(i)||n.equals2D(r)?this._intPt[0]=n:0===o?this._intPt[0]=new C(i):0===s?this._intPt[0]=new C(r):0===a?this._intPt[0]=new C(e):0===u&&(this._intPt[0]=new C(n))):(this._isProper=!0,this._intPt[0]=this.intersection(e,n,i,r)),t.POINT_INTERSECTION)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.nearestEndpoint=function(t,e,n,i){var r=t,o=at.distancePointLine(t,n,i),s=at.distancePointLine(e,n,i);return s<o&&(o=s,r=e),(s=at.distancePointLine(n,t,e))<o&&(o=s,r=n),(s=at.distancePointLine(i,t,e))<o&&(o=s,r=i),r},e}(nt),ot=function(){};ot.prototype.interfaces_=function(){return[]},ot.prototype.getClass=function(){return ot},ot.orientationIndex=function(t,e,n){var i=e.x-t.x,r=e.y-t.y,o=n.x-e.x,s=n.y-e.y;return ot.signOfDet2x2(i,r,o,s)},ot.signOfDet2x2=function(t,e,n,i){var r=null,o=null,s=null;if(r=1,0===t||0===i)return 0===e||0===n?0:e>0?n>0?-r:r:n>0?r:-r;if(0===e||0===n)return i>0?t>0?r:-r:t>0?-r:r;if(e>0?i>0?e<=i||(r=-r,o=t,t=n,n=o,o=e,e=i,i=o):e<=-i?(r=-r,n=-n,i=-i):(o=t,t=-n,n=o,o=e,e=-i,i=o):i>0?-e<=i?(r=-r,t=-t,e=-e):(o=-t,t=n,n=o,o=-e,e=i,i=o):e>=i?(t=-t,e=-e,n=-n,i=-i):(r=-r,o=-t,t=-n,n=o,o=-e,e=-i,i=o),t>0){if(!(n>0))return r;if(!(t<=n))return r}else{if(n>0)return-r;if(!(t>=n))return-r;r=-r,t=-t,n=-n}for(;;){if(s=Math.floor(n/t),n-=s*t,(i-=s*e)<0)return-r;if(i>e)return r;if(t>n+n){if(e<i+i)return r}else{if(e>i+i)return-r;n=t-n,i=e-i,r=-r}if(0===i)return 0===n?0:-r;if(0===n)return r;if(s=Math.floor(t/n),t-=s*n,(e-=s*i)<0)return r;if(e>i)return-r;if(n>t+t){if(i<e+e)return-r}else{if(i>e+e)return r;t=n-t,e=i-e,r=-r}if(0===e)return 0===t?0:r;if(0===t)return-r}};var st=function(){this._p=null,this._crossingCount=0,this._isPointOnSegment=!1;var t=arguments[0];this._p=t};st.prototype.countSegment=function(t,e){if(t.x<this._p.x&&e.x<this._p.x)return null;if(this._p.x===e.x&&this._p.y===e.y)return this._isPointOnSegment=!0,null;if(t.y===this._p.y&&e.y===this._p.y){var n=t.x,i=e.x;return n>i&&(n=e.x,i=t.x),this._p.x>=n&&this._p.x<=i&&(this._isPointOnSegment=!0),null}if(t.y>this._p.y&&e.y<=this._p.y||e.y>this._p.y&&t.y<=this._p.y){var r=t.x-this._p.x,o=t.y-this._p.y,s=e.x-this._p.x,a=e.y-this._p.y,u=ot.signOfDet2x2(r,o,s,a);if(0===u)return this._isPointOnSegment=!0,null;a<o&&(u=-u),u>0&&this._crossingCount++}},st.prototype.isPointInPolygon=function(){return this.getLocation()!==w.EXTERIOR},st.prototype.getLocation=function(){return this._isPointOnSegment?w.BOUNDARY:this._crossingCount%2==1?w.INTERIOR:w.EXTERIOR},st.prototype.isOnSegment=function(){return this._isPointOnSegment},st.prototype.interfaces_=function(){return[]},st.prototype.getClass=function(){return st},st.locatePointInRing=function(){if(arguments[0]instanceof C&&T(arguments[1],V)){for(var t=arguments[0],e=arguments[1],n=new st(t),i=new C,r=new C,o=1;o<e.size();o++)if(e.getCoordinate(o,i),e.getCoordinate(o-1,r),n.countSegment(i,r),n.isOnSegment())return n.getLocation();return n.getLocation()}if(arguments[0]instanceof C&&arguments[1]instanceof Array){for(var s=arguments[0],a=arguments[1],u=new st(s),l=1;l<a.length;l++){var c=a[l],p=a[l-1];if(u.countSegment(c,p),u.isOnSegment())return u.getLocation()}return u.getLocation()}};var at=function(){},ut={CLOCKWISE:{configurable:!0},RIGHT:{configurable:!0},COUNTERCLOCKWISE:{configurable:!0},LEFT:{configurable:!0},COLLINEAR:{configurable:!0},STRAIGHT:{configurable:!0}};at.prototype.interfaces_=function(){return[]},at.prototype.getClass=function(){return at},at.orientationIndex=function(t,e,n){return q.orientationIndex(t,e,n)},at.signedArea=function(){if(arguments[0]instanceof Array){var t=arguments[0];if(t.length<3)return 0;for(var e=0,n=t[0].x,i=1;i<t.length-1;i++){var r=t[i].x-n,o=t[i+1].y;e+=r*(t[i-1].y-o)}return e/2}if(T(arguments[0],V)){var s=arguments[0],a=s.size();if(a<3)return 0;var u=new C,l=new C,c=new C;s.getCoordinate(0,l),s.getCoordinate(1,c);var p=l.x;c.x-=p;for(var h=0,f=1;f<a-1;f++)u.y=l.y,l.x=c.x,l.y=c.y,s.getCoordinate(f+1,c),c.x-=p,h+=l.x*(u.y-c.y);return h/2}},at.distanceLineLine=function(t,e,n,i){if(t.equals(e))return at.distancePointLine(t,n,i);if(n.equals(i))return at.distancePointLine(i,t,e);var r=!1;if(j.intersects(t,e,n,i)){var o=(e.x-t.x)*(i.y-n.y)-(e.y-t.y)*(i.x-n.x);if(0===o)r=!0;else{var s=(t.y-n.y)*(i.x-n.x)-(t.x-n.x)*(i.y-n.y),a=((t.y-n.y)*(e.x-t.x)-(t.x-n.x)*(e.y-t.y))/o,u=s/o;(u<0||u>1||a<0||a>1)&&(r=!0)}}else r=!0;return r?R.min(at.distancePointLine(t,n,i),at.distancePointLine(e,n,i),at.distancePointLine(n,t,e),at.distancePointLine(i,t,e)):0},at.isPointInRing=function(t,e){return at.locatePointInRing(t,e)!==w.EXTERIOR},at.computeLength=function(t){var e=t.size();if(e<=1)return 0;var n=0,i=new C;t.getCoordinate(0,i);for(var r=i.x,o=i.y,s=1;s<e;s++){t.getCoordinate(s,i);var a=i.x,u=i.y,l=a-r,c=u-o;n+=Math.sqrt(l*l+c*c),r=a,o=u}return n},at.isCCW=function(t){var e=t.length-1;if(e<3)throw new m(\"Ring has fewer than 4 points, so orientation cannot be determined\");for(var n=t[0],i=0,r=1;r<=e;r++){var o=t[r];o.y>n.y&&(n=o,i=r)}var s=i;do{(s-=1)<0&&(s=e)}while(t[s].equals2D(n)&&s!==i);var a=i;do{a=(a+1)%e}while(t[a].equals2D(n)&&a!==i);var u=t[s],l=t[a];if(u.equals2D(n)||l.equals2D(n)||u.equals2D(l))return!1;var c=at.computeOrientation(u,n,l),p=!1;return p=0===c?u.x>l.x:c>0,p},at.locatePointInRing=function(t,e){return st.locatePointInRing(t,e)},at.distancePointLinePerpendicular=function(t,e,n){var i=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),r=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/i;return Math.abs(r)*Math.sqrt(i)},at.computeOrientation=function(t,e,n){return at.orientationIndex(t,e,n)},at.distancePointLine=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(0===e.length)throw new m(\"Line array must contain at least one vertex\");for(var n=t.distance(e[0]),i=0;i<e.length-1;i++){var r=at.distancePointLine(t,e[i],e[i+1]);r<n&&(n=r)}return n}if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];if(s.x===a.x&&s.y===a.y)return o.distance(s);var u=(a.x-s.x)*(a.x-s.x)+(a.y-s.y)*(a.y-s.y),l=((o.x-s.x)*(a.x-s.x)+(o.y-s.y)*(a.y-s.y))/u;if(l<=0)return o.distance(s);if(l>=1)return o.distance(a);var c=((s.y-o.y)*(a.x-s.x)-(s.x-o.x)*(a.y-s.y))/u;return Math.abs(c)*Math.sqrt(u)}},at.isOnLine=function(t,e){for(var n=new rt,i=1;i<e.length;i++){var r=e[i-1],o=e[i];if(n.computeIntersection(t,r,o),n.hasIntersection())return!0}return!1},ut.CLOCKWISE.get=function(){return-1},ut.RIGHT.get=function(){return at.CLOCKWISE},ut.COUNTERCLOCKWISE.get=function(){return 1},ut.LEFT.get=function(){return at.COUNTERCLOCKWISE},ut.COLLINEAR.get=function(){return 0},ut.STRAIGHT.get=function(){return at.COLLINEAR},Object.defineProperties(at,ut);var lt=function(){};lt.prototype.filter=function(t){},lt.prototype.interfaces_=function(){return[]},lt.prototype.getClass=function(){return lt};var ct=function(){var t=arguments[0];this._envelope=null,this._factory=null,this._SRID=null,this._userData=null,this._factory=t,this._SRID=t.getSRID()},pt={serialVersionUID:{configurable:!0},SORTINDEX_POINT:{configurable:!0},SORTINDEX_MULTIPOINT:{configurable:!0},SORTINDEX_LINESTRING:{configurable:!0},SORTINDEX_LINEARRING:{configurable:!0},SORTINDEX_MULTILINESTRING:{configurable:!0},SORTINDEX_POLYGON:{configurable:!0},SORTINDEX_MULTIPOLYGON:{configurable:!0},SORTINDEX_GEOMETRYCOLLECTION:{configurable:!0},geometryChangedFilter:{configurable:!0}};ct.prototype.isGeometryCollection=function(){return this.getSortIndex()===ct.SORTINDEX_GEOMETRYCOLLECTION},ct.prototype.getFactory=function(){return this._factory},ct.prototype.getGeometryN=function(t){return this},ct.prototype.getArea=function(){return 0},ct.prototype.isRectangle=function(){return!1},ct.prototype.equals=function(){if(arguments[0]instanceof ct){var t=arguments[0];return null!==t&&this.equalsTopo(t)}if(arguments[0]instanceof Object){var e=arguments[0];if(!(e instanceof ct))return!1;var n=e;return this.equalsExact(n)}},ct.prototype.equalsExact=function(t){return this===t||this.equalsExact(t,0)},ct.prototype.geometryChanged=function(){this.apply(ct.geometryChangedFilter)},ct.prototype.geometryChangedAction=function(){this._envelope=null},ct.prototype.equalsNorm=function(t){return null!==t&&this.norm().equalsExact(t.norm())},ct.prototype.getLength=function(){return 0},ct.prototype.getNumGeometries=function(){return 1},ct.prototype.compareTo=function(){if(1===arguments.length){var t=arguments[0],e=t;return this.getSortIndex()!==e.getSortIndex()?this.getSortIndex()-e.getSortIndex():this.isEmpty()&&e.isEmpty()?0:this.isEmpty()?-1:e.isEmpty()?1:this.compareToSameClass(t)}if(2===arguments.length){var n=arguments[0],i=arguments[1];return this.getSortIndex()!==n.getSortIndex()?this.getSortIndex()-n.getSortIndex():this.isEmpty()&&n.isEmpty()?0:this.isEmpty()?-1:n.isEmpty()?1:this.compareToSameClass(n,i)}},ct.prototype.getUserData=function(){return this._userData},ct.prototype.getSRID=function(){return this._SRID},ct.prototype.getEnvelope=function(){return this.getFactory().toGeometry(this.getEnvelopeInternal())},ct.prototype.checkNotGeometryCollection=function(t){if(t.getSortIndex()===ct.SORTINDEX_GEOMETRYCOLLECTION)throw new m(\"This method does not support GeometryCollection arguments\")},ct.prototype.equal=function(t,e,n){return 0===n?t.equals(e):t.distance(e)<=n},ct.prototype.norm=function(){var t=this.copy();return t.normalize(),t},ct.prototype.getPrecisionModel=function(){return this._factory.getPrecisionModel()},ct.prototype.getEnvelopeInternal=function(){return null===this._envelope&&(this._envelope=this.computeEnvelopeInternal()),new j(this._envelope)},ct.prototype.setSRID=function(t){this._SRID=t},ct.prototype.setUserData=function(t){this._userData=t},ct.prototype.compare=function(t,e){for(var n=t.iterator(),i=e.iterator();n.hasNext()&&i.hasNext();){var r=n.next(),o=i.next(),s=r.compareTo(o);if(0!==s)return s}return n.hasNext()?1:i.hasNext()?-1:0},ct.prototype.hashCode=function(){return this.getEnvelopeInternal().hashCode()},ct.prototype.isGeometryCollectionOrDerived=function(){return this.getSortIndex()===ct.SORTINDEX_GEOMETRYCOLLECTION||this.getSortIndex()===ct.SORTINDEX_MULTIPOINT||this.getSortIndex()===ct.SORTINDEX_MULTILINESTRING||this.getSortIndex()===ct.SORTINDEX_MULTIPOLYGON},ct.prototype.interfaces_=function(){return[x,E,e]},ct.prototype.getClass=function(){return ct},ct.hasNonEmptyElements=function(t){for(var e=0;e<t.length;e++)if(!t[e].isEmpty())return!0;return!1},ct.hasNullElements=function(t){for(var e=0;e<t.length;e++)if(null===t[e])return!0;return!1},pt.serialVersionUID.get=function(){return 0x799ea46522854c00},pt.SORTINDEX_POINT.get=function(){return 0},pt.SORTINDEX_MULTIPOINT.get=function(){return 1},pt.SORTINDEX_LINESTRING.get=function(){return 2},pt.SORTINDEX_LINEARRING.get=function(){return 3},pt.SORTINDEX_MULTILINESTRING.get=function(){return 4},pt.SORTINDEX_POLYGON.get=function(){return 5},pt.SORTINDEX_MULTIPOLYGON.get=function(){return 6},pt.SORTINDEX_GEOMETRYCOLLECTION.get=function(){return 7},pt.geometryChangedFilter.get=function(){return ht},Object.defineProperties(ct,pt);var ht=function(){};ht.interfaces_=function(){return[lt]},ht.filter=function(t){t.geometryChangedAction()};var ft=function(){};ft.prototype.filter=function(t){},ft.prototype.interfaces_=function(){return[]},ft.prototype.getClass=function(){return ft};var gt=function(){},dt={Mod2BoundaryNodeRule:{configurable:!0},EndPointBoundaryNodeRule:{configurable:!0},MultiValentEndPointBoundaryNodeRule:{configurable:!0},MonoValentEndPointBoundaryNodeRule:{configurable:!0},MOD2_BOUNDARY_RULE:{configurable:!0},ENDPOINT_BOUNDARY_RULE:{configurable:!0},MULTIVALENT_ENDPOINT_BOUNDARY_RULE:{configurable:!0},MONOVALENT_ENDPOINT_BOUNDARY_RULE:{configurable:!0},OGC_SFS_BOUNDARY_RULE:{configurable:!0}};gt.prototype.isInBoundary=function(t){},gt.prototype.interfaces_=function(){return[]},gt.prototype.getClass=function(){return gt},dt.Mod2BoundaryNodeRule.get=function(){return yt},dt.EndPointBoundaryNodeRule.get=function(){return _t},dt.MultiValentEndPointBoundaryNodeRule.get=function(){return mt},dt.MonoValentEndPointBoundaryNodeRule.get=function(){return vt},dt.MOD2_BOUNDARY_RULE.get=function(){return new yt},dt.ENDPOINT_BOUNDARY_RULE.get=function(){return new _t},dt.MULTIVALENT_ENDPOINT_BOUNDARY_RULE.get=function(){return new mt},dt.MONOVALENT_ENDPOINT_BOUNDARY_RULE.get=function(){return new vt},dt.OGC_SFS_BOUNDARY_RULE.get=function(){return gt.MOD2_BOUNDARY_RULE},Object.defineProperties(gt,dt);var yt=function(){};yt.prototype.isInBoundary=function(t){return t%2==1},yt.prototype.interfaces_=function(){return[gt]},yt.prototype.getClass=function(){return yt};var _t=function(){};_t.prototype.isInBoundary=function(t){return t>0},_t.prototype.interfaces_=function(){return[gt]},_t.prototype.getClass=function(){return _t};var mt=function(){};mt.prototype.isInBoundary=function(t){return t>1},mt.prototype.interfaces_=function(){return[gt]},mt.prototype.getClass=function(){return mt};var vt=function(){};vt.prototype.isInBoundary=function(t){return 1===t},vt.prototype.interfaces_=function(){return[gt]},vt.prototype.getClass=function(){return vt};var It=function(){};It.prototype.add=function(){},It.prototype.addAll=function(){},It.prototype.isEmpty=function(){},It.prototype.iterator=function(){},It.prototype.size=function(){},It.prototype.toArray=function(){},It.prototype.remove=function(){},(n.prototype=new Error).name=\"IndexOutOfBoundsException\";var Et=function(){};Et.prototype.hasNext=function(){},Et.prototype.next=function(){},Et.prototype.remove=function(){};var xt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(){},e.prototype.set=function(){},e.prototype.isEmpty=function(){},e}(It);(i.prototype=new Error).name=\"NoSuchElementException\";var Nt=function(t){function e(){t.call(this),this.array_=[],arguments[0]instanceof It&&this.addAll(arguments[0])}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.ensureCapacity=function(){},e.prototype.interfaces_=function(){return[t,It]},e.prototype.add=function(t){return 1===arguments.length?this.array_.push(t):this.array_.splice(arguments[0],arguments[1]),!0},e.prototype.clear=function(){this.array_=[]},e.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},e.prototype.set=function(t,e){var n=this.array_[t];return this.array_[t]=e,n},e.prototype.iterator=function(){return new Ct(this)},e.prototype.get=function(t){if(t<0||t>=this.size())throw new n;return this.array_[t]},e.prototype.isEmpty=function(){return 0===this.array_.length},e.prototype.size=function(){return this.array_.length},e.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e<n;e++)t.push(this.array_[e]);return t},e.prototype.remove=function(t){for(var e=!1,n=0,i=this.array_.length;n<i;n++)if(this.array_[n]===t){this.array_.splice(n,1),e=!0;break}return e},e}(xt),Ct=function(t){function e(e){t.call(this),this.arrayList_=e,this.position_=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.next=function(){if(this.position_===this.arrayList_.size())throw new i;return this.arrayList_.get(this.position_++)},e.prototype.hasNext=function(){return this.position_<this.arrayList_.size()},e.prototype.set=function(t){return this.arrayList_.set(this.position_-1,t)},e.prototype.remove=function(){this.arrayList_.remove(this.arrayList_.get(this.position_))},e}(Et),St=function(t){function e(){if(t.call(this),0===arguments.length);else if(1===arguments.length){var e=arguments[0];this.ensureCapacity(e.length),this.add(e,!0)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.ensureCapacity(n.length),this.add(n,i)}}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={coordArrayType:{configurable:!0}};return n.coordArrayType.get=function(){return new Array(0).fill(null)},e.prototype.getCoordinate=function(t){return this.get(t)},e.prototype.addAll=function(){if(2===arguments.length){for(var e=arguments[0],n=arguments[1],i=!1,r=e.iterator();r.hasNext();)this.add(r.next(),n),i=!0;return i}return t.prototype.addAll.apply(this,arguments)},e.prototype.clone=function(){for(var e=t.prototype.clone.call(this),n=0;n<this.size();n++)e.add(n,this.get(n).copy());return e},e.prototype.toCoordinateArray=function(){return this.toArray(e.coordArrayType)},e.prototype.add=function(){if(1===arguments.length){var e=arguments[0];t.prototype.add.call(this,e)}else if(2===arguments.length){if(arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var n=arguments[0],i=arguments[1];return this.add(n,i,!0),!0}if(arguments[0]instanceof C&&\"boolean\"==typeof arguments[1]){var r=arguments[0];if(!arguments[1]&&this.size()>=1){if(this.get(this.size()-1).equals2D(r))return null}t.prototype.add.call(this,r)}else if(arguments[0]instanceof Object&&\"boolean\"==typeof arguments[1]){var o=arguments[0],s=arguments[1];return this.add(o,s),!0}}else if(3===arguments.length){if(\"boolean\"==typeof arguments[2]&&arguments[0]instanceof Array&&\"boolean\"==typeof arguments[1]){var a=arguments[0],u=arguments[1];if(arguments[2])for(var l=0;l<a.length;l++)this.add(a[l],u);else for(var c=a.length-1;c>=0;c--)this.add(a[c],u);return!0}if(\"boolean\"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof C){var p=arguments[0],h=arguments[1];if(!arguments[2]){var f=this.size();if(f>0){if(p>0){if(this.get(p-1).equals2D(h))return null}if(p<f){if(this.get(p).equals2D(h))return null}}}t.prototype.add.call(this,p,h)}}else if(4===arguments.length){var g=arguments[0],d=arguments[1],y=arguments[2],_=arguments[3],m=1;y>_&&(m=-1);for(var v=y;v!==_;v+=m)this.add(g[v],d);return!0}},e.prototype.closeRing=function(){this.size()>0&&this.add(new C(this.get(0)),!1)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},Object.defineProperties(e,n),e}(Nt),Lt=function(){},bt={ForwardComparator:{configurable:!0},BidirectionalComparator:{configurable:!0},coordArrayType:{configurable:!0}};bt.ForwardComparator.get=function(){return wt},bt.BidirectionalComparator.get=function(){return Ot},bt.coordArrayType.get=function(){return new Array(0).fill(null)},Lt.prototype.interfaces_=function(){return[]},Lt.prototype.getClass=function(){return Lt},Lt.isRing=function(t){return!(t.length<4)&&!!t[0].equals2D(t[t.length-1])},Lt.ptNotInList=function(t,e){for(var n=0;n<t.length;n++){var i=t[n];if(Lt.indexOf(i,e)<0)return i}return null},Lt.scroll=function(t,e){var n=Lt.indexOf(e,t);if(n<0)return null;var i=new Array(t.length).fill(null);Y.arraycopy(t,n,i,0,t.length-n),Y.arraycopy(t,0,i,t.length-n,n),Y.arraycopy(i,0,t,0,t.length)},Lt.equals=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(t===e)return!0;if(null===t||null===e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(!t[n].equals(e[n]))return!1;return!0}if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];if(i===r)return!0;if(null===i||null===r)return!1;if(i.length!==r.length)return!1;for(var s=0;s<i.length;s++)if(0!==o.compare(i[s],r[s]))return!1;return!0}},Lt.intersection=function(t,e){for(var n=new St,i=0;i<t.length;i++)e.intersects(t[i])&&n.add(t[i],!0);return n.toCoordinateArray()},Lt.hasRepeatedPoints=function(t){for(var e=1;e<t.length;e++)if(t[e-1].equals(t[e]))return!0;return!1},Lt.removeRepeatedPoints=function(t){if(!Lt.hasRepeatedPoints(t))return t;return new St(t,!1).toCoordinateArray()},Lt.reverse=function(t){for(var e=t.length-1,n=Math.trunc(e/2),i=0;i<=n;i++){var r=t[i];t[i]=t[e-i],t[e-i]=r}},Lt.removeNull=function(t){for(var e=0,n=0;n<t.length;n++)null!==t[n]&&e++;var i=new Array(e).fill(null);if(0===e)return i;for(var r=0,o=0;o<t.length;o++)null!==t[o]&&(i[r++]=t[o]);return i},Lt.copyDeep=function(){if(1===arguments.length){for(var t=arguments[0],e=new Array(t.length).fill(null),n=0;n<t.length;n++)e[n]=new C(t[n]);return e}if(5===arguments.length)for(var i=arguments[0],r=arguments[1],o=arguments[2],s=arguments[3],a=arguments[4],u=0;u<a;u++)o[s+u]=new C(i[r+u])},Lt.isEqualReversed=function(t,e){for(var n=0;n<t.length;n++){var i=t[n],r=e[t.length-n-1];if(0!==i.compareTo(r))return!1}return!0},Lt.envelope=function(t){for(var e=new j,n=0;n<t.length;n++)e.expandToInclude(t[n]);return e},Lt.toCoordinateArray=function(t){return t.toArray(Lt.coordArrayType)},Lt.atLeastNCoordinatesOrNothing=function(t,e){return e.length>=t?e:[]},Lt.indexOf=function(t,e){for(var n=0;n<e.length;n++)if(t.equals(e[n]))return n;return-1},Lt.increasingDirection=function(t){for(var e=0;e<Math.trunc(t.length/2);e++){var n=t.length-1-e,i=t[e].compareTo(t[n]);if(0!==i)return i}return 1},Lt.compare=function(t,e){for(var n=0;n<t.length&&n<e.length;){var i=t[n].compareTo(e[n]);if(0!==i)return i;n++}return n<e.length?-1:n<t.length?1:0},Lt.minCoordinate=function(t){for(var e=null,n=0;n<t.length;n++)(null===e||e.compareTo(t[n])>0)&&(e=t[n]);return e},Lt.extract=function(t,e,n){e=R.clamp(e,0,t.length);var i=(n=R.clamp(n,-1,t.length))-e+1;n<0&&(i=0),e>=t.length&&(i=0),n<e&&(i=0);var r=new Array(i).fill(null);if(0===i)return r;for(var o=0,s=e;s<=n;s++)r[o++]=t[s];return r},Object.defineProperties(Lt,bt);var wt=function(){};wt.prototype.compare=function(t,e){return Lt.compare(t,e)},wt.prototype.interfaces_=function(){return[N]},wt.prototype.getClass=function(){return wt};var Ot=function(){};Ot.prototype.compare=function(t,e){var n=t,i=e;if(n.length<i.length)return-1;if(n.length>i.length)return 1;if(0===n.length)return 0;var r=Lt.compare(n,i);return Lt.isEqualReversed(n,i)?0:r},Ot.prototype.OLDcompare=function(t,e){var n=t,i=e;if(n.length<i.length)return-1;if(n.length>i.length)return 1;if(0===n.length)return 0;for(var r=Lt.increasingDirection(n),o=Lt.increasingDirection(i),s=r>0?0:n.length-1,a=o>0?0:n.length-1,u=0;u<n.length;u++){var l=n[s].compareTo(i[a]);if(0!==l)return l;s+=r,a+=o}return 0},Ot.prototype.interfaces_=function(){return[N]},Ot.prototype.getClass=function(){return Ot};var Tt=function(){};Tt.prototype.get=function(){},Tt.prototype.put=function(){},Tt.prototype.size=function(){},Tt.prototype.values=function(){},Tt.prototype.entrySet=function(){};var Rt=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Tt);(r.prototype=new Error).name=\"OperationNotSupported\",(o.prototype=new It).contains=function(){};var Pt=function(t){function e(){t.call(this),this.array_=[],arguments[0]instanceof It&&this.addAll(arguments[0])}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.contains=function(t){for(var e=0,n=this.array_.length;e<n;e++){if(this.array_[e]===t)return!0}return!1},e.prototype.add=function(t){return!this.contains(t)&&(this.array_.push(t),!0)},e.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},e.prototype.remove=function(t){throw new Error},e.prototype.size=function(){return this.array_.length},e.prototype.isEmpty=function(){return 0===this.array_.length},e.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e<n;e++)t.push(this.array_[e]);return t},e.prototype.iterator=function(){return new Dt(this)},e}(o),Dt=function(t){function e(e){t.call(this),this.hashSet_=e,this.position_=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.next=function(){if(this.position_===this.hashSet_.size())throw new i;return this.hashSet_.array_[this.position_++]},e.prototype.hasNext=function(){return this.position_<this.hashSet_.size()},e.prototype.remove=function(){throw new r},e}(Et),Mt=0;(p.prototype=new Rt).get=function(t){for(var e=this.root_;null!==e;){var n=t.compareTo(e.key);if(n<0)e=e.left;else{if(!(n>0))return e.value;e=e.right}}return null},p.prototype.put=function(t,e){if(null===this.root_)return this.root_={key:t,value:e,left:null,right:null,parent:null,color:Mt,getValue:function(){return this.value},getKey:function(){return this.key}},this.size_=1,null;var n,i,r=this.root_;do{if(n=r,(i=t.compareTo(r.key))<0)r=r.left;else{if(!(i>0)){var o=r.value;return r.value=e,o}r=r.right}}while(null!==r);var s={key:t,left:null,right:null,value:e,parent:n,color:Mt,getValue:function(){return this.value},getKey:function(){return this.key}};return i<0?n.left=s:n.right=s,this.fixAfterInsertion(s),this.size_++,null},p.prototype.fixAfterInsertion=function(t){for(t.color=1;null!=t&&t!==this.root_&&1===t.parent.color;)if(a(t)===l(a(a(t)))){var e=c(a(a(t)));1===s(e)?(u(a(t),Mt),u(e,Mt),u(a(a(t)),1),t=a(a(t))):(t===c(a(t))&&(t=a(t),this.rotateLeft(t)),u(a(t),Mt),u(a(a(t)),1),this.rotateRight(a(a(t))))}else{var n=l(a(a(t)));1===s(n)?(u(a(t),Mt),u(n,Mt),u(a(a(t)),1),t=a(a(t))):(t===l(a(t))&&(t=a(t),this.rotateRight(t)),u(a(t),Mt),u(a(a(t)),1),this.rotateLeft(a(a(t))))}this.root_.color=Mt},p.prototype.values=function(){var t=new Nt,e=this.getFirstEntry();if(null!==e)for(t.add(e.value);null!==(e=p.successor(e));)t.add(e.value);return t},p.prototype.entrySet=function(){var t=new Pt,e=this.getFirstEntry();if(null!==e)for(t.add(e);null!==(e=p.successor(e));)t.add(e);return t},p.prototype.rotateLeft=function(t){if(null!=t){var e=t.right;t.right=e.left,null!=e.left&&(e.left.parent=t),e.parent=t.parent,null===t.parent?this.root_=e:t.parent.left===t?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}},p.prototype.rotateRight=function(t){if(null!=t){var e=t.left;t.left=e.right,null!=e.right&&(e.right.parent=t),e.parent=t.parent,null===t.parent?this.root_=e:t.parent.right===t?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}},p.prototype.getFirstEntry=function(){var t=this.root_;if(null!=t)for(;null!=t.left;)t=t.left;return t},p.successor=function(t){if(null===t)return null;if(null!==t.right){for(var e=t.right;null!==e.left;)e=e.left;return e}for(var n=t.parent,i=t;null!==n&&i===n.right;)i=n,n=n.parent;return n},p.prototype.size=function(){return this.size_};var At=function(){};At.prototype.interfaces_=function(){return[]},At.prototype.getClass=function(){return At},h.prototype=new o,(f.prototype=new h).contains=function(t){for(var e=0,n=this.array_.length;e<n;e++){if(0===this.array_[e].compareTo(t))return!0}return!1},f.prototype.add=function(t){if(this.contains(t))return!1;for(var e=0,n=this.array_.length;e<n;e++){if(1===this.array_[e].compareTo(t))return this.array_.splice(e,0,t),!0}return this.array_.push(t),!0},f.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},f.prototype.remove=function(t){throw new r},f.prototype.size=function(){return this.array_.length},f.prototype.isEmpty=function(){return 0===this.array_.length},f.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e<n;e++)t.push(this.array_[e]);return t},f.prototype.iterator=function(){return new Ft(this)};var Ft=function(t){this.treeSet_=t,this.position_=0};Ft.prototype.next=function(){if(this.position_===this.treeSet_.size())throw new i;return this.treeSet_.array_[this.position_++]},Ft.prototype.hasNext=function(){return this.position_<this.treeSet_.size()},Ft.prototype.remove=function(){throw new r};var Gt=function(){};Gt.sort=function(){var t,e,n,i,r=arguments[0];if(1===arguments.length)i=function(t,e){return t.compareTo(e)},r.sort(i);else if(2===arguments.length)n=arguments[1],i=function(t,e){return n.compare(t,e)},r.sort(i);else if(3===arguments.length){(e=r.slice(arguments[1],arguments[2])).sort();var o=r.slice(0,arguments[1]).concat(e,r.slice(arguments[2],r.length));for(r.splice(0,r.length),t=0;t<o.length;t++)r.push(o[t])}else if(4===arguments.length)for(e=r.slice(arguments[1],arguments[2]),n=arguments[3],i=function(t,e){return n.compare(t,e)},e.sort(i),o=r.slice(0,arguments[1]).concat(e,r.slice(arguments[2],r.length)),r.splice(0,r.length),t=0;t<o.length;t++)r.push(o[t])},Gt.asList=function(t){for(var e=new Nt,n=0,i=t.length;n<i;n++)e.add(t[n]);return e};var qt=function(){},Bt={P:{configurable:!0},L:{configurable:!0},A:{configurable:!0},FALSE:{configurable:!0},TRUE:{configurable:!0},DONTCARE:{configurable:!0},SYM_FALSE:{configurable:!0},SYM_TRUE:{configurable:!0},SYM_DONTCARE:{configurable:!0},SYM_P:{configurable:!0},SYM_L:{configurable:!0},SYM_A:{configurable:!0}};Bt.P.get=function(){return 0},Bt.L.get=function(){return 1},Bt.A.get=function(){return 2},Bt.FALSE.get=function(){return-1},Bt.TRUE.get=function(){return-2},Bt.DONTCARE.get=function(){return-3},Bt.SYM_FALSE.get=function(){return\"F\"},Bt.SYM_TRUE.get=function(){return\"T\"},Bt.SYM_DONTCARE.get=function(){return\"*\"},Bt.SYM_P.get=function(){return\"0\"},Bt.SYM_L.get=function(){return\"1\"},Bt.SYM_A.get=function(){return\"2\"},qt.prototype.interfaces_=function(){return[]},qt.prototype.getClass=function(){return qt},qt.toDimensionSymbol=function(t){switch(t){case qt.FALSE:return qt.SYM_FALSE;case qt.TRUE:return qt.SYM_TRUE;case qt.DONTCARE:return qt.SYM_DONTCARE;case qt.P:return qt.SYM_P;case qt.L:return qt.SYM_L;case qt.A:return qt.SYM_A}throw new m(\"Unknown dimension value: \"+t)},qt.toDimensionValue=function(t){switch(A.toUpperCase(t)){case qt.SYM_FALSE:return qt.FALSE;case qt.SYM_TRUE:return qt.TRUE;case qt.SYM_DONTCARE:return qt.DONTCARE;case qt.SYM_P:return qt.P;case qt.SYM_L:return qt.L;case qt.SYM_A:return qt.A}throw new m(\"Unknown dimension symbol: \"+t)},Object.defineProperties(qt,Bt);var Vt=function(){};Vt.prototype.filter=function(t){},Vt.prototype.interfaces_=function(){return[]},Vt.prototype.getClass=function(){return Vt};var Ut=function(){};Ut.prototype.filter=function(t,e){},Ut.prototype.isDone=function(){},Ut.prototype.isGeometryChanged=function(){},Ut.prototype.interfaces_=function(){return[]},Ut.prototype.getClass=function(){return Ut};var zt=function(t){function e(e,n){if(t.call(this,n),this._geometries=e||[],t.hasNullElements(this._geometries))throw new m(\"geometries must not contain null elements\")}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.computeEnvelopeInternal=function(){for(var t=new j,e=0;e<this._geometries.length;e++)t.expandToInclude(this._geometries[e].getEnvelopeInternal());return t},e.prototype.getGeometryN=function(t){return this._geometries[t]},e.prototype.getSortIndex=function(){return t.SORTINDEX_GEOMETRYCOLLECTION},e.prototype.getCoordinates=function(){for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=0;n<this._geometries.length;n++)for(var i=this._geometries[n].getCoordinates(),r=0;r<i.length;r++)t[++e]=i[r];return t},e.prototype.getArea=function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getArea();return t},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];if(!this.isEquivalentClass(e))return!1;var i=e;if(this._geometries.length!==i._geometries.length)return!1;for(var r=0;r<this._geometries.length;r++)if(!this._geometries[r].equalsExact(i._geometries[r],n))return!1;return!0}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.normalize=function(){for(var t=0;t<this._geometries.length;t++)this._geometries[t].normalize();Gt.sort(this._geometries)},e.prototype.getCoordinate=function(){return this.isEmpty()?null:this._geometries[0].getCoordinate()},e.prototype.getBoundaryDimension=function(){for(var t=qt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getBoundaryDimension());return t},e.prototype.getDimension=function(){for(var t=qt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getDimension());return t},e.prototype.getLength=function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getLength();return t},e.prototype.getNumPoints=function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getNumPoints();return t},e.prototype.getNumGeometries=function(){return this._geometries.length},e.prototype.reverse=function(){for(var t=this._geometries.length,e=new Array(t).fill(null),n=0;n<this._geometries.length;n++)e[n]=this._geometries[n].reverse();return this.getFactory().createGeometryCollection(e)},e.prototype.compareToSameClass=function(){if(1===arguments.length){var t=arguments[0],e=new f(Gt.asList(this._geometries)),n=new f(Gt.asList(t._geometries));return this.compare(e,n)}if(2===arguments.length){for(var i=arguments[0],r=arguments[1],o=i,s=this.getNumGeometries(),a=o.getNumGeometries(),u=0;u<s&&u<a;){var l=this.getGeometryN(u),c=o.getGeometryN(u),p=l.compareToSameClass(c,r);if(0!==p)return p;u++}return u<s?1:u<a?-1:0}},e.prototype.apply=function(){if(T(arguments[0],ft))for(var t=arguments[0],e=0;e<this._geometries.length;e++)this._geometries[e].apply(t);else if(T(arguments[0],Ut)){var n=arguments[0];if(0===this._geometries.length)return null;for(var i=0;i<this._geometries.length&&(this._geometries[i].apply(n),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(T(arguments[0],Vt)){var r=arguments[0];r.filter(this);for(var o=0;o<this._geometries.length;o++)this._geometries[o].apply(r)}else if(T(arguments[0],lt)){var s=arguments[0];s.filter(this);for(var a=0;a<this._geometries.length;a++)this._geometries[a].apply(s)}},e.prototype.getBoundary=function(){return this.checkNotGeometryCollection(this),et.shouldNeverReachHere(),null},e.prototype.clone=function(){var e=t.prototype.clone.call(this);e._geometries=new Array(this._geometries.length).fill(null);for(var n=0;n<this._geometries.length;n++)e._geometries[n]=this._geometries[n].clone();return e},e.prototype.getGeometryType=function(){return\"GeometryCollection\"},e.prototype.copy=function(){for(var t=new Array(this._geometries.length).fill(null),n=0;n<t.length;n++)t[n]=this._geometries[n].copy();return new e(t,this._factory)},e.prototype.isEmpty=function(){for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isEmpty())return!1;return!0},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return-0x4f07bcb1f857d800},Object.defineProperties(e,n),e}(ct),Xt=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_MULTILINESTRING},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&t.prototype.equalsExact.call(this,e,n)}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.getBoundaryDimension=function(){return this.isClosed()?qt.FALSE:0},e.prototype.isClosed=function(){if(this.isEmpty())return!1;for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isClosed())return!1;return!0},e.prototype.getDimension=function(){return 1},e.prototype.reverse=function(){for(var t=this._geometries.length,e=new Array(t).fill(null),n=0;n<this._geometries.length;n++)e[t-1-n]=this._geometries[n].reverse();return this.getFactory().createMultiLineString(e)},e.prototype.getBoundary=function(){return new Yt(this).getBoundary()},e.prototype.getGeometryType=function(){return\"MultiLineString\"},e.prototype.copy=function(){for(var t=new Array(this._geometries.length).fill(null),n=0;n<t.length;n++)t[n]=this._geometries[n].copy();return new e(t,this._factory)},e.prototype.interfaces_=function(){return[At]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return 0x7155d2ab4afa8000},Object.defineProperties(e,n),e}(zt),Yt=function(){if(this._geom=null,this._geomFact=null,this._bnRule=null,this._endpointMap=null,1===arguments.length){var t=arguments[0],e=gt.MOD2_BOUNDARY_RULE;this._geom=t,this._geomFact=t.getFactory(),this._bnRule=e}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this._geom=n,this._geomFact=n.getFactory(),this._bnRule=i}};Yt.prototype.boundaryMultiLineString=function(t){if(this._geom.isEmpty())return this.getEmptyMultiPoint();var e=this.computeBoundaryCoordinates(t);return 1===e.length?this._geomFact.createPoint(e[0]):this._geomFact.createMultiPointFromCoords(e)},Yt.prototype.getBoundary=function(){return this._geom instanceof Kt?this.boundaryLineString(this._geom):this._geom instanceof Xt?this.boundaryMultiLineString(this._geom):this._geom.getBoundary()},Yt.prototype.boundaryLineString=function(t){if(this._geom.isEmpty())return this.getEmptyMultiPoint();if(t.isClosed()){return this._bnRule.isInBoundary(2)?t.getStartPoint():this._geomFact.createMultiPoint()}return this._geomFact.createMultiPoint([t.getStartPoint(),t.getEndPoint()])},Yt.prototype.getEmptyMultiPoint=function(){return this._geomFact.createMultiPoint()},Yt.prototype.computeBoundaryCoordinates=function(t){var e=new Nt;this._endpointMap=new p;for(var n=0;n<t.getNumGeometries();n++){var i=t.getGeometryN(n);0!==i.getNumPoints()&&(this.addEndpoint(i.getCoordinateN(0)),this.addEndpoint(i.getCoordinateN(i.getNumPoints()-1)))}for(var r=this._endpointMap.entrySet().iterator();r.hasNext();){var o=r.next(),s=o.getValue().count;this._bnRule.isInBoundary(s)&&e.add(o.getKey())}return Lt.toCoordinateArray(e)},Yt.prototype.addEndpoint=function(t){var e=this._endpointMap.get(t);null===e&&(e=new kt,this._endpointMap.put(t,e)),e.count++},Yt.prototype.interfaces_=function(){return[]},Yt.prototype.getClass=function(){return Yt},Yt.getBoundary=function(){if(1===arguments.length){var t=arguments[0];return new Yt(t).getBoundary()}if(2===arguments.length){var e=arguments[0],n=arguments[1];return new Yt(e,n).getBoundary()}};var kt=function(){this.count=null};kt.prototype.interfaces_=function(){return[]},kt.prototype.getClass=function(){return kt};var jt=function(){},Ht={NEWLINE:{configurable:!0},SIMPLE_ORDINATE_FORMAT:{configurable:!0}};jt.prototype.interfaces_=function(){return[]},jt.prototype.getClass=function(){return jt},jt.chars=function(t,e){for(var n=new Array(e).fill(null),i=0;i<e;i++)n[i]=t;return String(n)},jt.getStackTrace=function(){if(1===arguments.length){var t=arguments[0],e=new function(){},n=new function(){}(e);return t.printStackTrace(n),e.toString()}if(2===arguments.length){for(var i=arguments[0],r=arguments[1],o=\"\",s=new function(){}(new function(){}(jt.getStackTrace(i))),a=0;a<r;a++)try{o+=s.readLine()+jt.NEWLINE}catch(t){if(!(t instanceof g))throw t;et.shouldNeverReachHere()}return o}},jt.split=function(t,e){for(var n=e.length,i=new Nt,r=\"\"+t,o=r.indexOf(e);o>=0;){var s=r.substring(0,o);i.add(s),o=(r=r.substring(o+n)).indexOf(e)}r.length>0&&i.add(r);for(var a=new Array(i.size()).fill(null),u=0;u<a.length;u++)a[u]=i.get(u);return a},jt.toString=function(){if(1===arguments.length){var t=arguments[0];return jt.SIMPLE_ORDINATE_FORMAT.format(t)}},jt.spaces=function(t){return jt.chars(\" \",t)},Ht.NEWLINE.get=function(){return Y.getProperty(\"line.separator\")},Ht.SIMPLE_ORDINATE_FORMAT.get=function(){return new function(){}(\"0.#\")},Object.defineProperties(jt,Ht);var Wt=function(){};Wt.prototype.interfaces_=function(){return[]},Wt.prototype.getClass=function(){return Wt},Wt.copyCoord=function(t,e,n,i){for(var r=Math.min(t.getDimension(),n.getDimension()),o=0;o<r;o++)n.setOrdinate(i,o,t.getOrdinate(e,o))},Wt.isRing=function(t){var e=t.size();return 0===e||!(e<=3)&&(t.getOrdinate(0,V.X)===t.getOrdinate(e-1,V.X)&&t.getOrdinate(0,V.Y)===t.getOrdinate(e-1,V.Y))},Wt.isEqual=function(t,e){var n=t.size();if(n!==e.size())return!1;for(var i=Math.min(t.getDimension(),e.getDimension()),r=0;r<n;r++)for(var o=0;o<i;o++){var s=t.getOrdinate(r,o),a=e.getOrdinate(r,o);if(t.getOrdinate(r,o)!==e.getOrdinate(r,o)&&(!v.isNaN(s)||!v.isNaN(a)))return!1}return!0},Wt.extend=function(t,e,n){var i=t.create(n,e.getDimension()),r=e.size();if(Wt.copy(e,0,i,0,r),r>0)for(var o=r;o<n;o++)Wt.copy(e,r-1,i,o,1);return i},Wt.reverse=function(t){for(var e=t.size()-1,n=Math.trunc(e/2),i=0;i<=n;i++)Wt.swap(t,i,e-i)},Wt.swap=function(t,e,n){if(e===n)return null;for(var i=0;i<t.getDimension();i++){var r=t.getOrdinate(e,i);t.setOrdinate(e,i,t.getOrdinate(n,i)),t.setOrdinate(n,i,r)}},Wt.copy=function(t,e,n,i,r){for(var o=0;o<r;o++)Wt.copyCoord(t,e+o,n,i+o)},Wt.toString=function(){if(1===arguments.length){var t=arguments[0],e=t.size();if(0===e)return\"()\";var n=t.getDimension(),i=new D;i.append(\"(\");for(var r=0;r<e;r++){r>0&&i.append(\" \");for(var o=0;o<n;o++)o>0&&i.append(\",\"),i.append(jt.toString(t.getOrdinate(r,o)))}return i.append(\")\"),i.toString()}},Wt.ensureValidRing=function(t,e){var n=e.size();if(0===n)return e;if(n<=3)return Wt.createClosedRing(t,e,4);return e.getOrdinate(0,V.X)===e.getOrdinate(n-1,V.X)&&e.getOrdinate(0,V.Y)===e.getOrdinate(n-1,V.Y)?e:Wt.createClosedRing(t,e,n+1)},Wt.createClosedRing=function(t,e,n){var i=t.create(n,e.getDimension()),r=e.size();Wt.copy(e,0,i,0,r);for(var o=r;o<n;o++)Wt.copy(e,0,i,o,1);return i};var Kt=function(t){function e(e,n){t.call(this,n),this._points=null,this.init(e)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.computeEnvelopeInternal=function(){return this.isEmpty()?new j:this._points.expandEnvelope(new j)},e.prototype.isRing=function(){return this.isClosed()&&this.isSimple()},e.prototype.getSortIndex=function(){return t.SORTINDEX_LINESTRING},e.prototype.getCoordinates=function(){return this._points.toCoordinateArray()},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];if(!this.isEquivalentClass(e))return!1;var i=e;if(this._points.size()!==i._points.size())return!1;for(var r=0;r<this._points.size();r++)if(!this.equal(this._points.getCoordinate(r),i._points.getCoordinate(r),n))return!1;return!0}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.normalize=function(){for(var t=0;t<Math.trunc(this._points.size()/2);t++){var e=this._points.size()-1-t;if(!this._points.getCoordinate(t).equals(this._points.getCoordinate(e)))return this._points.getCoordinate(t).compareTo(this._points.getCoordinate(e))>0&&Wt.reverse(this._points),null}},e.prototype.getCoordinate=function(){return this.isEmpty()?null:this._points.getCoordinate(0)},e.prototype.getBoundaryDimension=function(){return this.isClosed()?qt.FALSE:0},e.prototype.isClosed=function(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))},e.prototype.getEndPoint=function(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)},e.prototype.getDimension=function(){return 1},e.prototype.getLength=function(){return at.computeLength(this._points)},e.prototype.getNumPoints=function(){return this._points.size()},e.prototype.reverse=function(){var t=this._points.copy();Wt.reverse(t);return this.getFactory().createLineString(t)},e.prototype.compareToSameClass=function(){if(1===arguments.length){for(var t=arguments[0],e=0,n=0;e<this._points.size()&&n<t._points.size();){var i=this._points.getCoordinate(e).compareTo(t._points.getCoordinate(n));if(0!==i)return i;e++,n++}return e<this._points.size()?1:n<t._points.size()?-1:0}if(2===arguments.length){var r=arguments[0];return arguments[1].compare(this._points,r._points)}},e.prototype.apply=function(){if(T(arguments[0],ft))for(var t=arguments[0],e=0;e<this._points.size();e++)t.filter(this._points.getCoordinate(e));else if(T(arguments[0],Ut)){var n=arguments[0];if(0===this._points.size())return null;for(var i=0;i<this._points.size()&&(n.filter(this._points,i),!n.isDone());i++);n.isGeometryChanged()&&this.geometryChanged()}else if(T(arguments[0],Vt)){arguments[0].filter(this)}else if(T(arguments[0],lt)){arguments[0].filter(this)}},e.prototype.getBoundary=function(){return new Yt(this).getBoundary()},e.prototype.isEquivalentClass=function(t){return t instanceof e},e.prototype.clone=function(){var e=t.prototype.clone.call(this);return e._points=this._points.clone(),e},e.prototype.getCoordinateN=function(t){return this._points.getCoordinate(t)},e.prototype.getGeometryType=function(){return\"LineString\"},e.prototype.copy=function(){return new e(this._points.copy(),this._factory)},e.prototype.getCoordinateSequence=function(){return this._points},e.prototype.isEmpty=function(){return 0===this._points.size()},e.prototype.init=function(t){if(null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),1===t.size())throw new m(\"Invalid number of points in LineString (found \"+t.size()+\" - must be 0 or >= 2)\");this._points=t},e.prototype.isCoordinate=function(t){for(var e=0;e<this._points.size();e++)if(this._points.getCoordinate(e).equals(t))return!0;return!1},e.prototype.getStartPoint=function(){return this.isEmpty()?null:this.getPointN(0)},e.prototype.getPointN=function(t){return this.getFactory().createPoint(this._points.getCoordinate(t))},e.prototype.interfaces_=function(){return[At]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return 0x2b2b51ba435c8e00},Object.defineProperties(e,n),e}(ct),Jt=function(){};Jt.prototype.interfaces_=function(){return[]},Jt.prototype.getClass=function(){return Jt};var Qt=function(t){function e(e,n){t.call(this,n),this._coordinates=e||null,this.init(this._coordinates)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.computeEnvelopeInternal=function(){if(this.isEmpty())return new j;var t=new j;return t.expandToInclude(this._coordinates.getX(0),this._coordinates.getY(0)),t},e.prototype.getSortIndex=function(){return t.SORTINDEX_POINT},e.prototype.getCoordinates=function(){return this.isEmpty()?[]:[this.getCoordinate()]},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&(!(!this.isEmpty()||!e.isEmpty())||this.isEmpty()===e.isEmpty()&&this.equal(e.getCoordinate(),this.getCoordinate(),n))}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.normalize=function(){},e.prototype.getCoordinate=function(){return 0!==this._coordinates.size()?this._coordinates.getCoordinate(0):null},e.prototype.getBoundaryDimension=function(){return qt.FALSE},e.prototype.getDimension=function(){return 0},e.prototype.getNumPoints=function(){return this.isEmpty()?0:1},e.prototype.reverse=function(){return this.copy()},e.prototype.getX=function(){if(null===this.getCoordinate())throw new Error(\"getX called on empty Point\");return this.getCoordinate().x},e.prototype.compareToSameClass=function(){if(1===arguments.length){var t=arguments[0];return this.getCoordinate().compareTo(t.getCoordinate())}if(2===arguments.length){var e=arguments[0];return arguments[1].compare(this._coordinates,e._coordinates)}},e.prototype.apply=function(){if(T(arguments[0],ft)){var t=arguments[0];if(this.isEmpty())return null;t.filter(this.getCoordinate())}else if(T(arguments[0],Ut)){var e=arguments[0];if(this.isEmpty())return null;e.filter(this._coordinates,0),e.isGeometryChanged()&&this.geometryChanged()}else if(T(arguments[0],Vt)){arguments[0].filter(this)}else if(T(arguments[0],lt)){arguments[0].filter(this)}},e.prototype.getBoundary=function(){return this.getFactory().createGeometryCollection(null)},e.prototype.clone=function(){var e=t.prototype.clone.call(this);return e._coordinates=this._coordinates.clone(),e},e.prototype.getGeometryType=function(){return\"Point\"},e.prototype.copy=function(){return new e(this._coordinates.copy(),this._factory)},e.prototype.getCoordinateSequence=function(){return this._coordinates},e.prototype.getY=function(){if(null===this.getCoordinate())throw new Error(\"getY called on empty Point\");return this.getCoordinate().y},e.prototype.isEmpty=function(){return 0===this._coordinates.size()},e.prototype.init=function(t){null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),et.isTrue(t.size()<=1),this._coordinates=t},e.prototype.isSimple=function(){return!0},e.prototype.interfaces_=function(){return[Jt]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return 0x44077bad161cbc00},Object.defineProperties(e,n),e}(ct),Zt=function(){};Zt.prototype.interfaces_=function(){return[]},Zt.prototype.getClass=function(){return Zt};var $t=function(t){function e(e,n,i){if(t.call(this,i),this._shell=null,this._holes=null,null===e&&(e=this.getFactory().createLinearRing()),null===n&&(n=[]),t.hasNullElements(n))throw new m(\"holes must not contain null elements\");if(e.isEmpty()&&t.hasNonEmptyElements(n))throw new m(\"shell is empty but holes are not\");this._shell=e,this._holes=n}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.computeEnvelopeInternal=function(){return this._shell.getEnvelopeInternal()},e.prototype.getSortIndex=function(){return t.SORTINDEX_POLYGON},e.prototype.getCoordinates=function(){if(this.isEmpty())return[];for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=this._shell.getCoordinates(),i=0;i<n.length;i++)t[++e]=n[i];for(var r=0;r<this._holes.length;r++)for(var o=this._holes[r].getCoordinates(),s=0;s<o.length;s++)t[++e]=o[s];return t},e.prototype.getArea=function(){var t=0;t+=Math.abs(at.signedArea(this._shell.getCoordinateSequence()));for(var e=0;e<this._holes.length;e++)t-=Math.abs(at.signedArea(this._holes[e].getCoordinateSequence()));return t},e.prototype.isRectangle=function(){if(0!==this.getNumInteriorRing())return!1;if(null===this._shell)return!1;if(5!==this._shell.getNumPoints())return!1;for(var t=this._shell.getCoordinateSequence(),e=this.getEnvelopeInternal(),n=0;n<5;n++){var i=t.getX(n);if(i!==e.getMinX()&&i!==e.getMaxX())return!1;var r=t.getY(n);if(r!==e.getMinY()&&r!==e.getMaxY())return!1}for(var o=t.getX(0),s=t.getY(0),a=1;a<=4;a++){var u=t.getX(a),l=t.getY(a);if(u!==o===(l!==s))return!1;o=u,s=l}return!0},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];if(!this.isEquivalentClass(e))return!1;var i=e,r=this._shell,o=i._shell;if(!r.equalsExact(o,n))return!1;if(this._holes.length!==i._holes.length)return!1;for(var s=0;s<this._holes.length;s++)if(!this._holes[s].equalsExact(i._holes[s],n))return!1;return!0}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.normalize=function(){if(0===arguments.length){this.normalize(this._shell,!0);for(var t=0;t<this._holes.length;t++)this.normalize(this._holes[t],!1);Gt.sort(this._holes)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(e.isEmpty())return null;var i=new Array(e.getCoordinates().length-1).fill(null);Y.arraycopy(e.getCoordinates(),0,i,0,i.length);var r=Lt.minCoordinate(e.getCoordinates());Lt.scroll(i,r),Y.arraycopy(i,0,e.getCoordinates(),0,i.length),e.getCoordinates()[i.length]=i[0],at.isCCW(e.getCoordinates())===n&&Lt.reverse(e.getCoordinates())}},e.prototype.getCoordinate=function(){return this._shell.getCoordinate()},e.prototype.getNumInteriorRing=function(){return this._holes.length},e.prototype.getBoundaryDimension=function(){return 1},e.prototype.getDimension=function(){return 2},e.prototype.getLength=function(){var t=0;t+=this._shell.getLength();for(var e=0;e<this._holes.length;e++)t+=this._holes[e].getLength();return t},e.prototype.getNumPoints=function(){for(var t=this._shell.getNumPoints(),e=0;e<this._holes.length;e++)t+=this._holes[e].getNumPoints();return t},e.prototype.reverse=function(){var t=this.copy();t._shell=this._shell.copy().reverse(),t._holes=new Array(this._holes.length).fill(null);for(var e=0;e<this._holes.length;e++)t._holes[e]=this._holes[e].copy().reverse();return t},e.prototype.convexHull=function(){return this.getExteriorRing().convexHull()},e.prototype.compareToSameClass=function(){if(1===arguments.length){var t=arguments[0],e=this._shell,n=t._shell;return e.compareToSameClass(n)}if(2===arguments.length){var i=arguments[0],r=arguments[1],o=i,s=this._shell,a=o._shell,u=s.compareToSameClass(a,r);if(0!==u)return u;for(var l=this.getNumInteriorRing(),c=o.getNumInteriorRing(),p=0;p<l&&p<c;){var h=this.getInteriorRingN(p),f=o.getInteriorRingN(p),g=h.compareToSameClass(f,r);if(0!==g)return g;p++}return p<l?1:p<c?-1:0}},e.prototype.apply=function(t){if(T(t,ft)){this._shell.apply(t);for(var e=0;e<this._holes.length;e++)this._holes[e].apply(t)}else if(T(t,Ut)){if(this._shell.apply(t),!t.isDone())for(var n=0;n<this._holes.length&&(this._holes[n].apply(t),!t.isDone());n++);t.isGeometryChanged()&&this.geometryChanged()}else if(T(t,Vt))t.filter(this);else if(T(t,lt)){t.filter(this),this._shell.apply(t);for(var i=0;i<this._holes.length;i++)this._holes[i].apply(t)}},e.prototype.getBoundary=function(){if(this.isEmpty())return this.getFactory().createMultiLineString();var t=new Array(this._holes.length+1).fill(null);t[0]=this._shell;for(var e=0;e<this._holes.length;e++)t[e+1]=this._holes[e];return t.length<=1?this.getFactory().createLinearRing(t[0].getCoordinateSequence()):this.getFactory().createMultiLineString(t)},e.prototype.clone=function(){var e=t.prototype.clone.call(this);e._shell=this._shell.clone(),e._holes=new Array(this._holes.length).fill(null);for(var n=0;n<this._holes.length;n++)e._holes[n]=this._holes[n].clone();return e},e.prototype.getGeometryType=function(){return\"Polygon\"},e.prototype.copy=function(){for(var t=this._shell.copy(),n=new Array(this._holes.length).fill(null),i=0;i<n.length;i++)n[i]=this._holes[i].copy();return new e(t,n,this._factory)},e.prototype.getExteriorRing=function(){return this._shell},e.prototype.isEmpty=function(){return this._shell.isEmpty()},e.prototype.getInteriorRingN=function(t){return this._holes[t]},e.prototype.interfaces_=function(){return[Zt]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return-0x307ffefd8dc97200},Object.defineProperties(e,n),e}(ct),te=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_MULTIPOINT},e.prototype.isValid=function(){return!0},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&t.prototype.equalsExact.call(this,e,n)}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.getCoordinate=function(){if(1===arguments.length){var e=arguments[0];return this._geometries[e].getCoordinate()}return t.prototype.getCoordinate.apply(this,arguments)},e.prototype.getBoundaryDimension=function(){return qt.FALSE},e.prototype.getDimension=function(){return 0},e.prototype.getBoundary=function(){return this.getFactory().createGeometryCollection(null)},e.prototype.getGeometryType=function(){return\"MultiPoint\"},e.prototype.copy=function(){for(var t=new Array(this._geometries.length).fill(null),n=0;n<t.length;n++)t[n]=this._geometries[n].copy();return new e(t,this._factory)},e.prototype.interfaces_=function(){return[Jt]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return-0x6fb1ed4162e0fc00},Object.defineProperties(e,n),e}(zt),ee=function(t){function e(e,n){e instanceof C&&n instanceof _e&&(e=n.getCoordinateSequenceFactory().create(e)),t.call(this,e,n),this.validateConstruction()}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={MINIMUM_VALID_SIZE:{configurable:!0},serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_LINEARRING},e.prototype.getBoundaryDimension=function(){return qt.FALSE},e.prototype.isClosed=function(){return!!this.isEmpty()||t.prototype.isClosed.call(this)},e.prototype.reverse=function(){var t=this._points.copy();Wt.reverse(t);return this.getFactory().createLinearRing(t)},e.prototype.validateConstruction=function(){if(!this.isEmpty()&&!t.prototype.isClosed.call(this))throw new m(\"Points of LinearRing do not form a closed linestring\");if(this.getCoordinateSequence().size()>=1&&this.getCoordinateSequence().size()<e.MINIMUM_VALID_SIZE)throw new m(\"Invalid number of points in LinearRing (found \"+this.getCoordinateSequence().size()+\" - must be 0 or >= 4)\")},e.prototype.getGeometryType=function(){return\"LinearRing\"},e.prototype.copy=function(){return new e(this._points.copy(),this._factory)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.MINIMUM_VALID_SIZE.get=function(){return 4},n.serialVersionUID.get=function(){return-0x3b229e262367a600},Object.defineProperties(e,n),e}(Kt),ne=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return ct.SORTINDEX_MULTIPOLYGON},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&t.prototype.equalsExact.call(this,e,n)}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.getBoundaryDimension=function(){return 1},e.prototype.getDimension=function(){return 2},e.prototype.reverse=function(){for(var t=this._geometries.length,e=new Array(t).fill(null),n=0;n<this._geometries.length;n++)e[n]=this._geometries[n].reverse();return this.getFactory().createMultiPolygon(e)},e.prototype.getBoundary=function(){if(this.isEmpty())return this.getFactory().createMultiLineString();for(var t=new Nt,e=0;e<this._geometries.length;e++)for(var n=this._geometries[e].getBoundary(),i=0;i<n.getNumGeometries();i++)t.add(n.getGeometryN(i));var r=new Array(t.size()).fill(null);return this.getFactory().createMultiLineString(t.toArray(r))},e.prototype.getGeometryType=function(){return\"MultiPolygon\"},e.prototype.copy=function(){for(var t=new Array(this._geometries.length).fill(null),n=0;n<t.length;n++)t[n]=this._geometries[n].copy();return new e(t,this._factory)},e.prototype.interfaces_=function(){return[Zt]},e.prototype.getClass=function(){return e},n.serialVersionUID.get=function(){return-0x7a5aa1369171980},Object.defineProperties(e,n),e}(zt),ie=function(t){this._factory=t||null,this._isUserDataCopied=!1},re={NoOpGeometryOperation:{configurable:!0},CoordinateOperation:{configurable:!0},CoordinateSequenceOperation:{configurable:!0}};ie.prototype.setCopyUserData=function(t){this._isUserDataCopied=t},ie.prototype.edit=function(t,e){if(null===t)return null;var n=this.editInternal(t,e);return this._isUserDataCopied&&n.setUserData(t.getUserData()),n},ie.prototype.editInternal=function(t,e){return null===this._factory&&(this._factory=t.getFactory()),t instanceof zt?this.editGeometryCollection(t,e):t instanceof $t?this.editPolygon(t,e):t instanceof Qt?e.edit(t,this._factory):t instanceof Kt?e.edit(t,this._factory):(et.shouldNeverReachHere(\"Unsupported Geometry class: \"+t.getClass().getName()),null)},ie.prototype.editGeometryCollection=function(t,e){for(var n=e.edit(t,this._factory),i=new Nt,r=0;r<n.getNumGeometries();r++){var o=this.edit(n.getGeometryN(r),e);null===o||o.isEmpty()||i.add(o)}return n.getClass()===te?this._factory.createMultiPoint(i.toArray([])):n.getClass()===Xt?this._factory.createMultiLineString(i.toArray([])):n.getClass()===ne?this._factory.createMultiPolygon(i.toArray([])):this._factory.createGeometryCollection(i.toArray([]))},ie.prototype.editPolygon=function(t,e){var n=e.edit(t,this._factory);if(null===n&&(n=this._factory.createPolygon(null)),n.isEmpty())return n;var i=this.edit(n.getExteriorRing(),e);if(null===i||i.isEmpty())return this._factory.createPolygon();for(var r=new Nt,o=0;o<n.getNumInteriorRing();o++){var s=this.edit(n.getInteriorRingN(o),e);null===s||s.isEmpty()||r.add(s)}return this._factory.createPolygon(i,r.toArray([]))},ie.prototype.interfaces_=function(){return[]},ie.prototype.getClass=function(){return ie},ie.GeometryEditorOperation=function(){},re.NoOpGeometryOperation.get=function(){return oe},re.CoordinateOperation.get=function(){return se},re.CoordinateSequenceOperation.get=function(){return ae},Object.defineProperties(ie,re);var oe=function(){};oe.prototype.edit=function(t,e){return t},oe.prototype.interfaces_=function(){return[ie.GeometryEditorOperation]},oe.prototype.getClass=function(){return oe};var se=function(){};se.prototype.edit=function(t,e){var n=this.editCoordinates(t.getCoordinates(),t);return null===n?t:t instanceof ee?e.createLinearRing(n):t instanceof Kt?e.createLineString(n):t instanceof Qt?n.length>0?e.createPoint(n[0]):e.createPoint():t},se.prototype.interfaces_=function(){return[ie.GeometryEditorOperation]},se.prototype.getClass=function(){return se};var ae=function(){};ae.prototype.edit=function(t,e){return t instanceof ee?e.createLinearRing(this.edit(t.getCoordinateSequence(),t)):t instanceof Kt?e.createLineString(this.edit(t.getCoordinateSequence(),t)):t instanceof Qt?e.createPoint(this.edit(t.getCoordinateSequence(),t)):t},ae.prototype.interfaces_=function(){return[ie.GeometryEditorOperation]},ae.prototype.getClass=function(){return ae};var ue=function(){if(this._dimension=3,this._coordinates=null,1===arguments.length){if(arguments[0]instanceof Array)this._coordinates=arguments[0],this._dimension=3;else if(Number.isInteger(arguments[0])){var t=arguments[0];this._coordinates=new Array(t).fill(null);for(var e=0;e<t;e++)this._coordinates[e]=new C}else if(T(arguments[0],V)){var n=arguments[0];if(null===n)return this._coordinates=new Array(0).fill(null),null;this._dimension=n.getDimension(),this._coordinates=new Array(n.size()).fill(null);for(var i=0;i<this._coordinates.length;i++)this._coordinates[i]=n.getCoordinateCopy(i)}}else if(2===arguments.length)if(arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var r=arguments[0],o=arguments[1];this._coordinates=r,this._dimension=o,null===r&&(this._coordinates=new Array(0).fill(null))}else if(Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var s=arguments[0],a=arguments[1];this._coordinates=new Array(s).fill(null),this._dimension=a;for(var u=0;u<s;u++)this._coordinates[u]=new C}},le={serialVersionUID:{configurable:!0}};ue.prototype.setOrdinate=function(t,e,n){switch(e){case V.X:this._coordinates[t].x=n;break;case V.Y:this._coordinates[t].y=n;break;case V.Z:this._coordinates[t].z=n;break;default:throw new m(\"invalid ordinateIndex\")}},ue.prototype.size=function(){return this._coordinates.length},ue.prototype.getOrdinate=function(t,e){switch(e){case V.X:return this._coordinates[t].x;case V.Y:return this._coordinates[t].y;case V.Z:return this._coordinates[t].z}return v.NaN},ue.prototype.getCoordinate=function(){if(1===arguments.length){var t=arguments[0];return this._coordinates[t]}if(2===arguments.length){var e=arguments[0],n=arguments[1];n.x=this._coordinates[e].x,n.y=this._coordinates[e].y,n.z=this._coordinates[e].z}},ue.prototype.getCoordinateCopy=function(t){return new C(this._coordinates[t])},ue.prototype.getDimension=function(){return this._dimension},ue.prototype.getX=function(t){return this._coordinates[t].x},ue.prototype.clone=function(){for(var t=new Array(this.size()).fill(null),e=0;e<this._coordinates.length;e++)t[e]=this._coordinates[e].clone();return new ue(t,this._dimension)},ue.prototype.expandEnvelope=function(t){for(var e=0;e<this._coordinates.length;e++)t.expandToInclude(this._coordinates[e]);return t},ue.prototype.copy=function(){for(var t=new Array(this.size()).fill(null),e=0;e<this._coordinates.length;e++)t[e]=this._coordinates[e].copy();return new ue(t,this._dimension)},ue.prototype.toString=function(){if(this._coordinates.length>0){var t=new D(17*this._coordinates.length);t.append(\"(\"),t.append(this._coordinates[0]);for(var e=1;e<this._coordinates.length;e++)t.append(\", \"),t.append(this._coordinates[e]);return t.append(\")\"),t.toString()}return\"()\"},ue.prototype.getY=function(t){return this._coordinates[t].y},ue.prototype.toCoordinateArray=function(){return this._coordinates},ue.prototype.interfaces_=function(){return[V,e]},ue.prototype.getClass=function(){return ue},le.serialVersionUID.get=function(){return-0xcb44a778db18e00},Object.defineProperties(ue,le);var ce=function(){},pe={serialVersionUID:{configurable:!0},instanceObject:{configurable:!0}};ce.prototype.readResolve=function(){return ce.instance()},ce.prototype.create=function(){if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return new ue(t)}if(T(arguments[0],V)){var e=arguments[0];return new ue(e)}}else if(2===arguments.length){var n=arguments[0],i=arguments[1];return i>3&&(i=3),i<2?new ue(n):new ue(n,i)}},ce.prototype.interfaces_=function(){return[b,e]},ce.prototype.getClass=function(){return ce},ce.instance=function(){return ce.instanceObject},pe.serialVersionUID.get=function(){return-0x38e49fa6cf6f2e00},pe.instanceObject.get=function(){return new ce},Object.defineProperties(ce,pe);var he=function(t){function e(){t.call(this),this.map_=new Map}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return this.map_.get(t)||null},e.prototype.put=function(t,e){return this.map_.set(t,e),e},e.prototype.values=function(){for(var t=new Nt,e=this.map_.values(),n=e.next();!n.done;)t.add(n.value),n=e.next();return t},e.prototype.entrySet=function(){var t=new Pt;return this.map_.entries().forEach(function(e){return t.add(e)}),t},e.prototype.size=function(){return this.map_.size()},e}(Tt),fe=function t(){if(this._modelType=null,this._scale=null,0===arguments.length)this._modelType=t.FLOATING;else if(1===arguments.length)if(arguments[0]instanceof de){var e=arguments[0];this._modelType=e,e===t.FIXED&&this.setScale(1)}else if(\"number\"==typeof arguments[0]){var n=arguments[0];this._modelType=t.FIXED,this.setScale(n)}else if(arguments[0]instanceof t){var i=arguments[0];this._modelType=i._modelType,this._scale=i._scale}},ge={serialVersionUID:{configurable:!0},maximumPreciseValue:{configurable:!0}};fe.prototype.equals=function(t){if(!(t instanceof fe))return!1;var e=t;return this._modelType===e._modelType&&this._scale===e._scale},fe.prototype.compareTo=function(t){var e=t,n=this.getMaximumSignificantDigits(),i=e.getMaximumSignificantDigits();return new M(n).compareTo(new M(i))},fe.prototype.getScale=function(){return this._scale},fe.prototype.isFloating=function(){return this._modelType===fe.FLOATING||this._modelType===fe.FLOATING_SINGLE},fe.prototype.getType=function(){return this._modelType},fe.prototype.toString=function(){var t=\"UNKNOWN\";return this._modelType===fe.FLOATING?t=\"Floating\":this._modelType===fe.FLOATING_SINGLE?t=\"Floating-Single\":this._modelType===fe.FIXED&&(t=\"Fixed (Scale=\"+this.getScale()+\")\"),t},fe.prototype.makePrecise=function(){if(\"number\"==typeof arguments[0]){var t=arguments[0];if(v.isNaN(t))return t;if(this._modelType===fe.FLOATING_SINGLE){return t}return this._modelType===fe.FIXED?Math.round(t*this._scale)/this._scale:t}if(arguments[0]instanceof C){var e=arguments[0];if(this._modelType===fe.FLOATING)return null;e.x=this.makePrecise(e.x),e.y=this.makePrecise(e.y)}},fe.prototype.getMaximumSignificantDigits=function(){var t=16;return this._modelType===fe.FLOATING?t=16:this._modelType===fe.FLOATING_SINGLE?t=6:this._modelType===fe.FIXED&&(t=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),t},fe.prototype.setScale=function(t){this._scale=Math.abs(t)},fe.prototype.interfaces_=function(){return[e,E]},fe.prototype.getClass=function(){return fe},fe.mostPrecise=function(t,e){return t.compareTo(e)>=0?t:e},ge.serialVersionUID.get=function(){return 0x6bee6404e9a25c00},ge.maximumPreciseValue.get=function(){return 9007199254740992},Object.defineProperties(fe,ge);var de=function t(e){this._name=e||null,t.nameToTypeMap.put(e,this)},ye={serialVersionUID:{configurable:!0},nameToTypeMap:{configurable:!0}};de.prototype.readResolve=function(){return de.nameToTypeMap.get(this._name)},de.prototype.toString=function(){return this._name},de.prototype.interfaces_=function(){return[e]},de.prototype.getClass=function(){return de},ye.serialVersionUID.get=function(){return-552860263173159e4},ye.nameToTypeMap.get=function(){return new he},Object.defineProperties(de,ye),fe.Type=de,fe.FIXED=new de(\"FIXED\"),fe.FLOATING=new de(\"FLOATING\"),fe.FLOATING_SINGLE=new de(\"FLOATING SINGLE\");var _e=function t(){this._precisionModel=new fe,this._SRID=0,this._coordinateSequenceFactory=t.getDefaultCoordinateSequenceFactory(),0===arguments.length||(1===arguments.length?T(arguments[0],b)?this._coordinateSequenceFactory=arguments[0]:arguments[0]instanceof fe&&(this._precisionModel=arguments[0]):2===arguments.length?(this._precisionModel=arguments[0],this._SRID=arguments[1]):3===arguments.length&&(this._precisionModel=arguments[0],this._SRID=arguments[1],this._coordinateSequenceFactory=arguments[2]))},me={serialVersionUID:{configurable:!0}};_e.prototype.toGeometry=function(t){return t.isNull()?this.createPoint(null):t.getMinX()===t.getMaxX()&&t.getMinY()===t.getMaxY()?this.createPoint(new C(t.getMinX(),t.getMinY())):t.getMinX()===t.getMaxX()||t.getMinY()===t.getMaxY()?this.createLineString([new C(t.getMinX(),t.getMinY()),new C(t.getMaxX(),t.getMaxY())]):this.createPolygon(this.createLinearRing([new C(t.getMinX(),t.getMinY()),new C(t.getMinX(),t.getMaxY()),new C(t.getMaxX(),t.getMaxY()),new C(t.getMaxX(),t.getMinY()),new C(t.getMinX(),t.getMinY())]),null)},_e.prototype.createLineString=function(t){return t?t instanceof Array?new Kt(this.getCoordinateSequenceFactory().create(t),this):T(t,V)?new Kt(t,this):void 0:new Kt(this.getCoordinateSequenceFactory().create([]),this)},_e.prototype.createMultiLineString=function(){if(0===arguments.length)return new Xt(null,this);if(1===arguments.length){var t=arguments[0];return new Xt(t,this)}},_e.prototype.buildGeometry=function(t){for(var e=null,n=!1,i=!1,r=t.iterator();r.hasNext();){var o=r.next(),s=o.getClass();null===e&&(e=s),s!==e&&(n=!0),o.isGeometryCollectionOrDerived()&&(i=!0)}if(null===e)return this.createGeometryCollection();if(n||i)return this.createGeometryCollection(_e.toGeometryArray(t));var a=t.iterator().next();if(t.size()>1){if(a instanceof $t)return this.createMultiPolygon(_e.toPolygonArray(t));if(a instanceof Kt)return this.createMultiLineString(_e.toLineStringArray(t));if(a instanceof Qt)return this.createMultiPoint(_e.toPointArray(t));et.shouldNeverReachHere(\"Unhandled class: \"+a.getClass().getName())}return a},_e.prototype.createMultiPointFromCoords=function(t){return this.createMultiPoint(null!==t?this.getCoordinateSequenceFactory().create(t):null)},_e.prototype.createPoint=function(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof C){var t=arguments[0];return this.createPoint(null!==t?this.getCoordinateSequenceFactory().create([t]):null)}if(T(arguments[0],V)){var e=arguments[0];return new Qt(e,this)}}},_e.prototype.getCoordinateSequenceFactory=function(){return this._coordinateSequenceFactory},_e.prototype.createPolygon=function(){if(0===arguments.length)return new $t(null,null,this);if(1===arguments.length){if(T(arguments[0],V)){var t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Array){var e=arguments[0];return this.createPolygon(this.createLinearRing(e))}if(arguments[0]instanceof ee){var n=arguments[0];return this.createPolygon(n,null)}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];return new $t(i,r,this)}},_e.prototype.getSRID=function(){return this._SRID},_e.prototype.createGeometryCollection=function(){if(0===arguments.length)return new zt(null,this);if(1===arguments.length){var t=arguments[0];return new zt(t,this)}},_e.prototype.createGeometry=function(t){return new ie(this).edit(t,{edit:function(){if(2===arguments.length){var t=arguments[0];return this._coordinateSequenceFactory.create(t)}}})},_e.prototype.getPrecisionModel=function(){return this._precisionModel},_e.prototype.createLinearRing=function(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLinearRing(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(T(arguments[0],V)){var e=arguments[0];return new ee(e,this)}}},_e.prototype.createMultiPolygon=function(){if(0===arguments.length)return new ne(null,this);if(1===arguments.length){var t=arguments[0];return new ne(t,this)}},_e.prototype.createMultiPoint=function(){if(0===arguments.length)return new te(null,this);if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return new te(t,this)}if(arguments[0]instanceof Array){var e=arguments[0];return this.createMultiPoint(null!==e?this.getCoordinateSequenceFactory().create(e):null)}if(T(arguments[0],V)){var n=arguments[0];if(null===n)return this.createMultiPoint(new Array(0).fill(null));for(var i=new Array(n.size()).fill(null),r=0;r<n.size();r++){var o=this.getCoordinateSequenceFactory().create(1,n.getDimension());Wt.copy(n,r,o,0,1),i[r]=this.createPoint(o)}return this.createMultiPoint(i)}}},_e.prototype.interfaces_=function(){return[e]},_e.prototype.getClass=function(){return _e},_e.toMultiPolygonArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toGeometryArray=function(t){if(null===t)return null;var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.getDefaultCoordinateSequenceFactory=function(){return ce.instance()},_e.toMultiLineStringArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toLineStringArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toMultiPointArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toLinearRingArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toPointArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.toPolygonArray=function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)},_e.createPointFromInternalCoord=function(t,e){return e.getPrecisionModel().makePrecise(t),e.getFactory().createPoint(t)},me.serialVersionUID.get=function(){return-0x5ea75f2051eeb400},Object.defineProperties(_e,me);var ve=[\"Point\",\"MultiPoint\",\"LineString\",\"MultiLineString\",\"Polygon\",\"MultiPolygon\"],Ie=function(t){this.geometryFactory=t||new _e};Ie.prototype.read=function(t){var e,n=(e=\"string\"==typeof t?JSON.parse(t):t).type;if(!Ee[n])throw new Error(\"Unknown GeoJSON type: \"+e.type);return-1!==ve.indexOf(n)?Ee[n].apply(this,[e.coordinates]):\"GeometryCollection\"===n?Ee[n].apply(this,[e.geometries]):Ee[n].apply(this,[e])},Ie.prototype.write=function(t){var e=t.getGeometryType();if(!xe[e])throw new Error(\"Geometry is not supported\");return xe[e].apply(this,[t])};var Ee={Feature:function(t){var e={};for(var n in t)e[n]=t[n];if(t.geometry){var i=t.geometry.type;if(!Ee[i])throw new Error(\"Unknown GeoJSON type: \"+t.type);e.geometry=this.read(t.geometry)}return t.bbox&&(e.bbox=Ee.bbox.apply(this,[t.bbox])),e},FeatureCollection:function(t){var e={};if(t.features){e.features=[];for(var n=0;n<t.features.length;++n)e.features.push(this.read(t.features[n]))}return t.bbox&&(e.bbox=this.parse.bbox.apply(this,[t.bbox])),e},coordinates:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(new C(i[0],i[1]))}return e},bbox:function(t){return this.geometryFactory.createLinearRing([new C(t[0],t[1]),new C(t[2],t[1]),new C(t[2],t[3]),new C(t[0],t[3]),new C(t[0],t[1])])},Point:function(t){var e=new C(t[0],t[1]);return this.geometryFactory.createPoint(e)},MultiPoint:function(t){for(var e=[],n=0;n<t.length;++n)e.push(Ee.Point.apply(this,[t[n]]));return this.geometryFactory.createMultiPoint(e)},LineString:function(t){var e=Ee.coordinates.apply(this,[t]);return this.geometryFactory.createLineString(e)},MultiLineString:function(t){for(var e=[],n=0;n<t.length;++n)e.push(Ee.LineString.apply(this,[t[n]]));return this.geometryFactory.createMultiLineString(e)},Polygon:function(t){for(var e=Ee.coordinates.apply(this,[t[0]]),n=this.geometryFactory.createLinearRing(e),i=[],r=1;r<t.length;++r){var o=t[r],s=Ee.coordinates.apply(this,[o]),a=this.geometryFactory.createLinearRing(s);i.push(a)}return this.geometryFactory.createPolygon(n,i)},MultiPolygon:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(Ee.Polygon.apply(this,[i]))}return this.geometryFactory.createMultiPolygon(e)},GeometryCollection:function(t){for(var e=[],n=0;n<t.length;++n){var i=t[n];e.push(this.read(i))}return this.geometryFactory.createGeometryCollection(e)}},xe={coordinate:function(t){return[t.x,t.y]},Point:function(t){return{type:\"Point\",coordinates:xe.coordinate.apply(this,[t.getCoordinate()])}},MultiPoint:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=xe.Point.apply(this,[i]);e.push(r.coordinates)}return{type:\"MultiPoint\",coordinates:e}},LineString:function(t){for(var e=[],n=t.getCoordinates(),i=0;i<n.length;++i){var r=n[i];e.push(xe.coordinate.apply(this,[r]))}return{type:\"LineString\",coordinates:e}},MultiLineString:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=xe.LineString.apply(this,[i]);e.push(r.coordinates)}return{type:\"MultiLineString\",coordinates:e}},Polygon:function(t){var e=[],n=xe.LineString.apply(this,[t._shell]);e.push(n.coordinates);for(var i=0;i<t._holes.length;++i){var r=t._holes[i],o=xe.LineString.apply(this,[r]);e.push(o.coordinates)}return{type:\"Polygon\",coordinates:e}},MultiPolygon:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=xe.Polygon.apply(this,[i]);e.push(r.coordinates)}return{type:\"MultiPolygon\",coordinates:e}},GeometryCollection:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var i=t._geometries[n],r=i.getGeometryType();e.push(xe[r].apply(this,[i]))}return{type:\"GeometryCollection\",geometries:e}}},Ne=function(t){this.geometryFactory=t||new _e,this.precisionModel=this.geometryFactory.getPrecisionModel(),this.parser=new Ie(this.geometryFactory)};Ne.prototype.read=function(t){var e=this.parser.read(t);return this.precisionModel.getType()===fe.FIXED&&this.reducePrecision(e),e},Ne.prototype.reducePrecision=function(t){var e,n;if(t.coordinate)this.precisionModel.makePrecise(t.coordinate);else if(t.points)for(e=0,n=t.points.length;e<n;e++)this.precisionModel.makePrecise(t.points[e]);else if(t.geometries)for(e=0,n=t.geometries.length;e<n;e++)this.reducePrecision(t.geometries[e])};var Ce=function(){this.parser=new Ie(this.geometryFactory)};Ce.prototype.write=function(t){return this.parser.write(t)};var Se=function(){},Le={ON:{configurable:!0},LEFT:{configurable:!0},RIGHT:{configurable:!0}};Se.prototype.interfaces_=function(){return[]},Se.prototype.getClass=function(){return Se},Se.opposite=function(t){return t===Se.LEFT?Se.RIGHT:t===Se.RIGHT?Se.LEFT:t},Le.ON.get=function(){return 0},Le.LEFT.get=function(){return 1},Le.RIGHT.get=function(){return 2},Object.defineProperties(Se,Le),(d.prototype=new Error).name=\"EmptyStackException\",(y.prototype=new xt).add=function(t){return this.array_.push(t),!0},y.prototype.get=function(t){if(t<0||t>=this.size())throw new Error;return this.array_[t]},y.prototype.push=function(t){return this.array_.push(t),t},y.prototype.pop=function(t){if(0===this.array_.length)throw new d;return this.array_.pop()},y.prototype.peek=function(){if(0===this.array_.length)throw new d;return this.array_[this.array_.length-1]},y.prototype.empty=function(){return 0===this.array_.length},y.prototype.isEmpty=function(){return this.empty()},y.prototype.search=function(t){return this.array_.indexOf(t)},y.prototype.size=function(){return this.array_.length},y.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e<n;e++)t.push(this.array_[e]);return t};var be=function(){this._minIndex=-1,this._minCoord=null,this._minDe=null,this._orientedDe=null};be.prototype.getCoordinate=function(){return this._minCoord},be.prototype.getRightmostSide=function(t,e){var n=this.getRightmostSideOfSegment(t,e);return n<0&&(n=this.getRightmostSideOfSegment(t,e-1)),n<0&&(this._minCoord=null,this.checkForRightmostCoordinate(t)),n},be.prototype.findRightmostEdgeAtVertex=function(){var t=this._minDe.getEdge().getCoordinates();et.isTrue(this._minIndex>0&&this._minIndex<t.length,\"rightmost point expected to be interior vertex of edge\");var e=t[this._minIndex-1],n=t[this._minIndex+1],i=at.computeOrientation(this._minCoord,n,e),r=!1;e.y<this._minCoord.y&&n.y<this._minCoord.y&&i===at.COUNTERCLOCKWISE?r=!0:e.y>this._minCoord.y&&n.y>this._minCoord.y&&i===at.CLOCKWISE&&(r=!0),r&&(this._minIndex=this._minIndex-1)},be.prototype.getRightmostSideOfSegment=function(t,e){var n=t.getEdge().getCoordinates();if(e<0||e+1>=n.length)return-1;if(n[e].y===n[e+1].y)return-1;var i=Se.LEFT;return n[e].y<n[e+1].y&&(i=Se.RIGHT),i},be.prototype.getEdge=function(){return this._orientedDe},be.prototype.checkForRightmostCoordinate=function(t){for(var e=t.getEdge().getCoordinates(),n=0;n<e.length-1;n++)(null===this._minCoord||e[n].x>this._minCoord.x)&&(this._minDe=t,this._minIndex=n,this._minCoord=e[n])},be.prototype.findRightmostEdgeAtNode=function(){var t=this._minDe.getNode().getEdges();this._minDe=t.getRightmostEdge(),this._minDe.isForward()||(this._minDe=this._minDe.getSym(),this._minIndex=this._minDe.getEdge().getCoordinates().length-1)},be.prototype.findEdge=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();n.isForward()&&this.checkForRightmostCoordinate(n)}et.isTrue(0!==this._minIndex||this._minCoord.equals(this._minDe.getCoordinate()),\"inconsistency in rightmost processing\"),0===this._minIndex?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this._orientedDe=this._minDe;this.getRightmostSide(this._minDe,this._minIndex)===Se.LEFT&&(this._orientedDe=this._minDe.getSym())},be.prototype.interfaces_=function(){return[]},be.prototype.getClass=function(){return be};var we=function(t){function e(n,i){t.call(this,e.msgWithCoord(n,i)),this.pt=i?new C(i):null,this.name=\"TopologyException\"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCoordinate=function(){return this.pt},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.msgWithCoord=function(t,e){return e?t:t+\" [ \"+e+\" ]\"},e}($),Oe=function(){this.array_=[]};Oe.prototype.addLast=function(t){this.array_.push(t)},Oe.prototype.removeFirst=function(){return this.array_.shift()},Oe.prototype.isEmpty=function(){return 0===this.array_.length};var Te=function(){this._finder=null,this._dirEdgeList=new Nt,this._nodes=new Nt,this._rightMostCoord=null,this._env=null,this._finder=new be};Te.prototype.clearVisitedEdges=function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){t.next().setVisited(!1)}},Te.prototype.getRightmostCoordinate=function(){return this._rightMostCoord},Te.prototype.computeNodeDepth=function(t){for(var e=null,n=t.getEdges().iterator();n.hasNext();){var i=n.next();if(i.isVisited()||i.getSym().isVisited()){e=i;break}}if(null===e)throw new we(\"unable to find edge to compute depths at \"+t.getCoordinate());t.getEdges().computeDepths(e);for(var r=t.getEdges().iterator();r.hasNext();){var o=r.next();o.setVisited(!0),this.copySymDepths(o)}},Te.prototype.computeDepth=function(t){this.clearVisitedEdges();var e=this._finder.getEdge();e.setEdgeDepths(Se.RIGHT,t),this.copySymDepths(e),this.computeDepths(e)},Te.prototype.create=function(t){this.addReachable(t),this._finder.findEdge(this._dirEdgeList),this._rightMostCoord=this._finder.getCoordinate()},Te.prototype.findResultEdges=function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){var e=t.next();e.getDepth(Se.RIGHT)>=1&&e.getDepth(Se.LEFT)<=0&&!e.isInteriorAreaEdge()&&e.setInResult(!0)}},Te.prototype.computeDepths=function(t){var e=new Pt,n=new Oe,i=t.getNode();for(n.addLast(i),e.add(i),t.setVisited(!0);!n.isEmpty();){var r=n.removeFirst();e.add(r),this.computeNodeDepth(r);for(var o=r.getEdges().iterator();o.hasNext();){var s=o.next().getSym();if(!s.isVisited()){var a=s.getNode();e.contains(a)||(n.addLast(a),e.add(a))}}}},Te.prototype.compareTo=function(t){var e=t;return this._rightMostCoord.x<e._rightMostCoord.x?-1:this._rightMostCoord.x>e._rightMostCoord.x?1:0},Te.prototype.getEnvelope=function(){if(null===this._env){for(var t=new j,e=this._dirEdgeList.iterator();e.hasNext();)for(var n=e.next().getEdge().getCoordinates(),i=0;i<n.length-1;i++)t.expandToInclude(n[i]);this._env=t}return this._env},Te.prototype.addReachable=function(t){var e=new y;for(e.add(t);!e.empty();){var n=e.pop();this.add(n,e)}},Te.prototype.copySymDepths=function(t){var e=t.getSym();e.setDepth(Se.LEFT,t.getDepth(Se.RIGHT)),e.setDepth(Se.RIGHT,t.getDepth(Se.LEFT))},Te.prototype.add=function(t,e){t.setVisited(!0),this._nodes.add(t);for(var n=t.getEdges().iterator();n.hasNext();){var i=n.next();this._dirEdgeList.add(i);var r=i.getSym().getNode();r.isVisited()||e.push(r)}},Te.prototype.getNodes=function(){return this._nodes},Te.prototype.getDirectedEdges=function(){return this._dirEdgeList},Te.prototype.interfaces_=function(){return[E]},Te.prototype.getClass=function(){return Te};var Re=function t(){if(this.location=null,1===arguments.length){if(arguments[0]instanceof Array){var e=arguments[0];this.init(e.length)}else if(Number.isInteger(arguments[0])){var n=arguments[0];this.init(1),this.location[Se.ON]=n}else if(arguments[0]instanceof t){var i=arguments[0];if(this.init(i.location.length),null!==i)for(var r=0;r<this.location.length;r++)this.location[r]=i.location[r]}}else if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];this.init(3),this.location[Se.ON]=o,this.location[Se.LEFT]=s,this.location[Se.RIGHT]=a}};Re.prototype.setAllLocations=function(t){for(var e=0;e<this.location.length;e++)this.location[e]=t},Re.prototype.isNull=function(){for(var t=0;t<this.location.length;t++)if(this.location[t]!==w.NONE)return!1;return!0},Re.prototype.setAllLocationsIfNull=function(t){for(var e=0;e<this.location.length;e++)this.location[e]===w.NONE&&(this.location[e]=t)},Re.prototype.isLine=function(){return 1===this.location.length},Re.prototype.merge=function(t){if(t.location.length>this.location.length){var e=new Array(3).fill(null);e[Se.ON]=this.location[Se.ON],e[Se.LEFT]=w.NONE,e[Se.RIGHT]=w.NONE,this.location=e}for(var n=0;n<this.location.length;n++)this.location[n]===w.NONE&&n<t.location.length&&(this.location[n]=t.location[n])},Re.prototype.getLocations=function(){return this.location},Re.prototype.flip=function(){if(this.location.length<=1)return null;var t=this.location[Se.LEFT];this.location[Se.LEFT]=this.location[Se.RIGHT],this.location[Se.RIGHT]=t},Re.prototype.toString=function(){var t=new D;return this.location.length>1&&t.append(w.toLocationSymbol(this.location[Se.LEFT])),t.append(w.toLocationSymbol(this.location[Se.ON])),this.location.length>1&&t.append(w.toLocationSymbol(this.location[Se.RIGHT])),t.toString()},Re.prototype.setLocations=function(t,e,n){this.location[Se.ON]=t,this.location[Se.LEFT]=e,this.location[Se.RIGHT]=n},Re.prototype.get=function(t){return t<this.location.length?this.location[t]:w.NONE},Re.prototype.isArea=function(){return this.location.length>1},Re.prototype.isAnyNull=function(){for(var t=0;t<this.location.length;t++)if(this.location[t]===w.NONE)return!0;return!1},Re.prototype.setLocation=function(){if(1===arguments.length){var t=arguments[0];this.setLocation(Se.ON,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.location[e]=n}},Re.prototype.init=function(t){this.location=new Array(t).fill(null),this.setAllLocations(w.NONE)},Re.prototype.isEqualOnSide=function(t,e){return this.location[e]===t.location[e]},Re.prototype.allPositionsEqual=function(t){for(var e=0;e<this.location.length;e++)if(this.location[e]!==t)return!1;return!0},Re.prototype.interfaces_=function(){return[]},Re.prototype.getClass=function(){return Re};var Pe=function t(){if(this.elt=new Array(2).fill(null),1===arguments.length){if(Number.isInteger(arguments[0])){var e=arguments[0];this.elt[0]=new Re(e),this.elt[1]=new Re(e)}else if(arguments[0]instanceof t){var n=arguments[0];this.elt[0]=new Re(n.elt[0]),this.elt[1]=new Re(n.elt[1])}}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.elt[0]=new Re(w.NONE),this.elt[1]=new Re(w.NONE),this.elt[i].setLocation(r)}else if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];this.elt[0]=new Re(o,s,a),this.elt[1]=new Re(o,s,a)}else if(4===arguments.length){var u=arguments[0],l=arguments[1],c=arguments[2],p=arguments[3];this.elt[0]=new Re(w.NONE,w.NONE,w.NONE),this.elt[1]=new Re(w.NONE,w.NONE,w.NONE),this.elt[u].setLocations(l,c,p)}};Pe.prototype.getGeometryCount=function(){var t=0;return this.elt[0].isNull()||t++,this.elt[1].isNull()||t++,t},Pe.prototype.setAllLocations=function(t,e){this.elt[t].setAllLocations(e)},Pe.prototype.isNull=function(t){return this.elt[t].isNull()},Pe.prototype.setAllLocationsIfNull=function(){if(1===arguments.length){var t=arguments[0];this.setAllLocationsIfNull(0,t),this.setAllLocationsIfNull(1,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.elt[e].setAllLocationsIfNull(n)}},Pe.prototype.isLine=function(t){return this.elt[t].isLine()},Pe.prototype.merge=function(t){for(var e=0;e<2;e++)null===this.elt[e]&&null!==t.elt[e]?this.elt[e]=new Re(t.elt[e]):this.elt[e].merge(t.elt[e])},Pe.prototype.flip=function(){this.elt[0].flip(),this.elt[1].flip()},Pe.prototype.getLocation=function(){if(1===arguments.length){var t=arguments[0];return this.elt[t].get(Se.ON)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return this.elt[e].get(n)}},Pe.prototype.toString=function(){var t=new D;return null!==this.elt[0]&&(t.append(\"A:\"),t.append(this.elt[0].toString())),null!==this.elt[1]&&(t.append(\" B:\"),t.append(this.elt[1].toString())),t.toString()},Pe.prototype.isArea=function(){if(0===arguments.length)return this.elt[0].isArea()||this.elt[1].isArea();if(1===arguments.length){var t=arguments[0];return this.elt[t].isArea()}},Pe.prototype.isAnyNull=function(t){return this.elt[t].isAnyNull()},Pe.prototype.setLocation=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.elt[t].setLocation(Se.ON,e)}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this.elt[n].setLocation(i,r)}},Pe.prototype.isEqualOnSide=function(t,e){return this.elt[0].isEqualOnSide(t.elt[0],e)&&this.elt[1].isEqualOnSide(t.elt[1],e)},Pe.prototype.allPositionsEqual=function(t,e){return this.elt[t].allPositionsEqual(e)},Pe.prototype.toLine=function(t){this.elt[t].isArea()&&(this.elt[t]=new Re(this.elt[t].location[0]))},Pe.prototype.interfaces_=function(){return[]},Pe.prototype.getClass=function(){return Pe},Pe.toLineLabel=function(t){for(var e=new Pe(w.NONE),n=0;n<2;n++)e.setLocation(n,t.getLocation(n));return e};var De=function(){this._startDe=null,this._maxNodeDegree=-1,this._edges=new Nt,this._pts=new Nt,this._label=new Pe(w.NONE),this._ring=null,this._isHole=null,this._shell=null,this._holes=new Nt,this._geometryFactory=null;var t=arguments[0],e=arguments[1];this._geometryFactory=e,this.computePoints(t),this.computeRing()};De.prototype.computeRing=function(){if(null!==this._ring)return null;for(var t=new Array(this._pts.size()).fill(null),e=0;e<this._pts.size();e++)t[e]=this._pts.get(e);this._ring=this._geometryFactory.createLinearRing(t),this._isHole=at.isCCW(this._ring.getCoordinates())},De.prototype.isIsolated=function(){return 1===this._label.getGeometryCount()},De.prototype.computePoints=function(t){this._startDe=t;var e=t,n=!0;do{if(null===e)throw new we(\"Found null DirectedEdge\");if(e.getEdgeRing()===this)throw new we(\"Directed Edge visited twice during ring-building at \"+e.getCoordinate());this._edges.add(e);var i=e.getLabel();et.isTrue(i.isArea()),this.mergeLabel(i),this.addPoints(e.getEdge(),e.isForward(),n),n=!1,this.setEdgeRing(e,this),e=this.getNext(e)}while(e!==this._startDe)},De.prototype.getLinearRing=function(){return this._ring},De.prototype.getCoordinate=function(t){return this._pts.get(t)},De.prototype.computeMaxNodeDegree=function(){this._maxNodeDegree=0;var t=this._startDe;do{var e=t.getNode().getEdges().getOutgoingDegree(this);e>this._maxNodeDegree&&(this._maxNodeDegree=e),t=this.getNext(t)}while(t!==this._startDe);this._maxNodeDegree*=2},De.prototype.addPoints=function(t,e,n){var i=t.getCoordinates();if(e){var r=1;n&&(r=0);for(var o=r;o<i.length;o++)this._pts.add(i[o])}else{var s=i.length-2;n&&(s=i.length-1);for(var a=s;a>=0;a--)this._pts.add(i[a])}},De.prototype.isHole=function(){return this._isHole},De.prototype.setInResult=function(){var t=this._startDe;do{t.getEdge().setInResult(!0),t=t.getNext()}while(t!==this._startDe)},De.prototype.containsPoint=function(t){var e=this.getLinearRing();if(!e.getEnvelopeInternal().contains(t))return!1;if(!at.isPointInRing(t,e.getCoordinates()))return!1;for(var n=this._holes.iterator();n.hasNext();){if(n.next().containsPoint(t))return!1}return!0},De.prototype.addHole=function(t){this._holes.add(t)},De.prototype.isShell=function(){return null===this._shell},De.prototype.getLabel=function(){return this._label},De.prototype.getEdges=function(){return this._edges},De.prototype.getMaxNodeDegree=function(){return this._maxNodeDegree<0&&this.computeMaxNodeDegree(),this._maxNodeDegree},De.prototype.getShell=function(){return this._shell},De.prototype.mergeLabel=function(){if(1===arguments.length){var t=arguments[0];this.mergeLabel(t,0),this.mergeLabel(t,1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=e.getLocation(n,Se.RIGHT);if(i===w.NONE)return null;if(this._label.getLocation(n)===w.NONE)return this._label.setLocation(n,i),null}},De.prototype.setShell=function(t){this._shell=t,null!==t&&t.addHole(this)},De.prototype.toPolygon=function(t){for(var e=new Array(this._holes.size()).fill(null),n=0;n<this._holes.size();n++)e[n]=this._holes.get(n).getLinearRing();return t.createPolygon(this.getLinearRing(),e)},De.prototype.interfaces_=function(){return[]},De.prototype.getClass=function(){return De};var Me=function(t){function e(){var e=arguments[0],n=arguments[1];t.call(this,e,n)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setEdgeRing=function(t,e){t.setMinEdgeRing(e)},e.prototype.getNext=function(t){return t.getNextMin()},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(De),Ae=function(t){function e(){var e=arguments[0],n=arguments[1];t.call(this,e,n)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.buildMinimalRings=function(){var t=new Nt,e=this._startDe;do{if(null===e.getMinEdgeRing()){var n=new Me(e,this._geometryFactory);t.add(n)}e=e.getNext()}while(e!==this._startDe);return t},e.prototype.setEdgeRing=function(t,e){t.setEdgeRing(e)},e.prototype.linkDirectedEdgesForMinimalEdgeRings=function(){var t=this._startDe;do{t.getNode().getEdges().linkMinimalDirectedEdges(this),t=t.getNext()}while(t!==this._startDe)},e.prototype.getNext=function(t){return t.getNext()},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(De),Fe=function(){if(this._label=null,this._isInResult=!1,this._isCovered=!1,this._isCoveredSet=!1,this._isVisited=!1,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._label=t}};Fe.prototype.setVisited=function(t){this._isVisited=t},Fe.prototype.setInResult=function(t){this._isInResult=t},Fe.prototype.isCovered=function(){return this._isCovered},Fe.prototype.isCoveredSet=function(){return this._isCoveredSet},Fe.prototype.setLabel=function(t){this._label=t},Fe.prototype.getLabel=function(){return this._label},Fe.prototype.setCovered=function(t){this._isCovered=t,this._isCoveredSet=!0},Fe.prototype.updateIM=function(t){et.isTrue(this._label.getGeometryCount()>=2,\"found partial label\"),this.computeIM(t)},Fe.prototype.isInResult=function(){return this._isInResult},Fe.prototype.isVisited=function(){return this._isVisited},Fe.prototype.interfaces_=function(){return[]},Fe.prototype.getClass=function(){return Fe};var Ge=function(t){function e(){t.call(this),this._coord=null,this._edges=null;var e=arguments[0],n=arguments[1];this._coord=e,this._edges=n,this._label=new Pe(0,w.NONE)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isIncidentEdgeInResult=function(){for(var t=this.getEdges().getEdges().iterator();t.hasNext();){if(t.next().getEdge().isInResult())return!0}return!1},e.prototype.isIsolated=function(){return 1===this._label.getGeometryCount()},e.prototype.getCoordinate=function(){return this._coord},e.prototype.print=function(t){t.println(\"node \"+this._coord+\" lbl: \"+this._label)},e.prototype.computeIM=function(t){},e.prototype.computeMergedLocation=function(t,e){var n=w.NONE;if(n=this._label.getLocation(e),!t.isNull(e)){var i=t.getLocation(e);n!==w.BOUNDARY&&(n=i)}return n},e.prototype.setLabel=function(){if(2!==arguments.length)return t.prototype.setLabel.apply(this,arguments);var e=arguments[0],n=arguments[1];null===this._label?this._label=new Pe(e,n):this._label.setLocation(e,n)},e.prototype.getEdges=function(){return this._edges},e.prototype.mergeLabel=function(){if(arguments[0]instanceof e){var t=arguments[0];this.mergeLabel(t._label)}else if(arguments[0]instanceof Pe)for(var n=arguments[0],i=0;i<2;i++){var r=this.computeMergedLocation(n,i);this._label.getLocation(i)===w.NONE&&this._label.setLocation(i,r)}},e.prototype.add=function(t){this._edges.insert(t),t.setNode(this)},e.prototype.setLabelBoundary=function(t){if(null===this._label)return null;var e=w.NONE;null!==this._label&&(e=this._label.getLocation(t));var n=null;switch(e){case w.BOUNDARY:n=w.INTERIOR;break;case w.INTERIOR:default:n=w.BOUNDARY}this._label.setLocation(t,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Fe),qe=function(){this.nodeMap=new p,this.nodeFact=null;var t=arguments[0];this.nodeFact=t};qe.prototype.find=function(t){return this.nodeMap.get(t)},qe.prototype.addNode=function(){if(arguments[0]instanceof C){var t=arguments[0],e=this.nodeMap.get(t);return null===e&&(e=this.nodeFact.createNode(t),this.nodeMap.put(t,e)),e}if(arguments[0]instanceof Ge){var n=arguments[0],i=this.nodeMap.get(n.getCoordinate());return null===i?(this.nodeMap.put(n.getCoordinate(),n),n):(i.mergeLabel(n),i)}},qe.prototype.print=function(t){for(var e=this.iterator();e.hasNext();){e.next().print(t)}},qe.prototype.iterator=function(){return this.nodeMap.values().iterator()},qe.prototype.values=function(){return this.nodeMap.values()},qe.prototype.getBoundaryNodes=function(t){for(var e=new Nt,n=this.iterator();n.hasNext();){var i=n.next();i.getLabel().getLocation(t)===w.BOUNDARY&&e.add(i)}return e},qe.prototype.add=function(t){var e=t.getCoordinate();this.addNode(e).add(t)},qe.prototype.interfaces_=function(){return[]},qe.prototype.getClass=function(){return qe};var Be=function(){},Ve={NE:{configurable:!0},NW:{configurable:!0},SW:{configurable:!0},SE:{configurable:!0}};Be.prototype.interfaces_=function(){return[]},Be.prototype.getClass=function(){return Be},Be.isNorthern=function(t){return t===Be.NE||t===Be.NW},Be.isOpposite=function(t,e){if(t===e)return!1;return 2===(t-e+4)%4},Be.commonHalfPlane=function(t,e){if(t===e)return t;if(2===(t-e+4)%4)return-1;var n=t<e?t:e;return 0===n&&3===(t>e?t:e)?3:n},Be.isInHalfPlane=function(t,e){return e===Be.SE?t===Be.SE||t===Be.SW:t===e||t===e+1},Be.quadrant=function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1];if(0===t&&0===e)throw new m(\"Cannot compute the quadrant for point ( \"+t+\", \"+e+\" )\");return t>=0?e>=0?Be.NE:Be.SE:e>=0?Be.NW:Be.SW}if(arguments[0]instanceof C&&arguments[1]instanceof C){var n=arguments[0],i=arguments[1];if(i.x===n.x&&i.y===n.y)throw new m(\"Cannot compute the quadrant for two identical points \"+n);return i.x>=n.x?i.y>=n.y?Be.NE:Be.SE:i.y>=n.y?Be.NW:Be.SW}},Ve.NE.get=function(){return 0},Ve.NW.get=function(){return 1},Ve.SW.get=function(){return 2},Ve.SE.get=function(){return 3},Object.defineProperties(Be,Ve);var Ue=function(){if(this._edge=null,this._label=null,this._node=null,this._p0=null,this._p1=null,this._dx=null,this._dy=null,this._quadrant=null,1===arguments.length){var t=arguments[0];this._edge=t}else if(3===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2];this._edge=e,this.init(n,i),this._label=null}else if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];this._edge=r,this.init(o,s),this._label=a}};Ue.prototype.compareDirection=function(t){return this._dx===t._dx&&this._dy===t._dy?0:this._quadrant>t._quadrant?1:this._quadrant<t._quadrant?-1:at.computeOrientation(t._p0,t._p1,this._p1)},Ue.prototype.getDy=function(){return this._dy},Ue.prototype.getCoordinate=function(){return this._p0},Ue.prototype.setNode=function(t){this._node=t},Ue.prototype.print=function(t){var e=Math.atan2(this._dy,this._dx),n=this.getClass().getName(),i=n.lastIndexOf(\".\"),r=n.substring(i+1);t.print(\"  \"+r+\": \"+this._p0+\" - \"+this._p1+\" \"+this._quadrant+\":\"+e+\"   \"+this._label)},Ue.prototype.compareTo=function(t){var e=t;return this.compareDirection(e)},Ue.prototype.getDirectedCoordinate=function(){return this._p1},Ue.prototype.getDx=function(){return this._dx},Ue.prototype.getLabel=function(){return this._label},Ue.prototype.getEdge=function(){return this._edge},Ue.prototype.getQuadrant=function(){return this._quadrant},Ue.prototype.getNode=function(){return this._node},Ue.prototype.toString=function(){var t=Math.atan2(this._dy,this._dx),e=this.getClass().getName(),n=e.lastIndexOf(\".\");return\"  \"+e.substring(n+1)+\": \"+this._p0+\" - \"+this._p1+\" \"+this._quadrant+\":\"+t+\"   \"+this._label},Ue.prototype.computeLabel=function(t){},Ue.prototype.init=function(t,e){this._p0=t,this._p1=e,this._dx=e.x-t.x,this._dy=e.y-t.y,this._quadrant=Be.quadrant(this._dx,this._dy),et.isTrue(!(0===this._dx&&0===this._dy),\"EdgeEnd with identical endpoints found\")},Ue.prototype.interfaces_=function(){return[E]},Ue.prototype.getClass=function(){return Ue};var ze=function(t){function e(){var e=arguments[0],n=arguments[1];if(t.call(this,e),this._isForward=null,this._isInResult=!1,this._isVisited=!1,this._sym=null,this._next=null,this._nextMin=null,this._edgeRing=null,this._minEdgeRing=null,this._depth=[0,-999,-999],this._isForward=n,n)this.init(e.getCoordinate(0),e.getCoordinate(1));else{var i=e.getNumPoints()-1;this.init(e.getCoordinate(i),e.getCoordinate(i-1))}this.computeDirectedLabel()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getNextMin=function(){return this._nextMin},e.prototype.getDepth=function(t){return this._depth[t]},e.prototype.setVisited=function(t){this._isVisited=t},e.prototype.computeDirectedLabel=function(){this._label=new Pe(this._edge.getLabel()),this._isForward||this._label.flip()},e.prototype.getNext=function(){return this._next},e.prototype.setDepth=function(t,e){if(-999!==this._depth[t]&&this._depth[t]!==e)throw new we(\"assigned depths do not match\",this.getCoordinate());this._depth[t]=e},e.prototype.isInteriorAreaEdge=function(){for(var t=!0,e=0;e<2;e++)this._label.isArea(e)&&this._label.getLocation(e,Se.LEFT)===w.INTERIOR&&this._label.getLocation(e,Se.RIGHT)===w.INTERIOR||(t=!1);return t},e.prototype.setNextMin=function(t){this._nextMin=t},e.prototype.print=function(e){t.prototype.print.call(this,e),e.print(\" \"+this._depth[Se.LEFT]+\"/\"+this._depth[Se.RIGHT]),e.print(\" (\"+this.getDepthDelta()+\")\"),this._isInResult&&e.print(\" inResult\")},e.prototype.setMinEdgeRing=function(t){this._minEdgeRing=t},e.prototype.isLineEdge=function(){var t=this._label.isLine(0)||this._label.isLine(1),e=!this._label.isArea(0)||this._label.allPositionsEqual(0,w.EXTERIOR),n=!this._label.isArea(1)||this._label.allPositionsEqual(1,w.EXTERIOR);return t&&e&&n},e.prototype.setEdgeRing=function(t){this._edgeRing=t},e.prototype.getMinEdgeRing=function(){return this._minEdgeRing},e.prototype.getDepthDelta=function(){var t=this._edge.getDepthDelta();return this._isForward||(t=-t),t},e.prototype.setInResult=function(t){this._isInResult=t},e.prototype.getSym=function(){return this._sym},e.prototype.isForward=function(){return this._isForward},e.prototype.getEdge=function(){return this._edge},e.prototype.printEdge=function(t){this.print(t),t.print(\" \"),this._isForward?this._edge.print(t):this._edge.printReverse(t)},e.prototype.setSym=function(t){this._sym=t},e.prototype.setVisitedEdge=function(t){this.setVisited(t),this._sym.setVisited(t)},e.prototype.setEdgeDepths=function(t,e){var n=this.getEdge().getDepthDelta();this._isForward||(n=-n);var i=1;t===Se.LEFT&&(i=-1);var r=Se.opposite(t),o=e+n*i;this.setDepth(t,e),this.setDepth(r,o)},e.prototype.getEdgeRing=function(){return this._edgeRing},e.prototype.isInResult=function(){return this._isInResult},e.prototype.setNext=function(t){this._next=t},e.prototype.isVisited=function(){return this._isVisited},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.depthFactor=function(t,e){return t===w.EXTERIOR&&e===w.INTERIOR?1:t===w.INTERIOR&&e===w.EXTERIOR?-1:0},e}(Ue),Xe=function(){};Xe.prototype.createNode=function(t){return new Ge(t,null)},Xe.prototype.interfaces_=function(){return[]},Xe.prototype.getClass=function(){return Xe};var Ye=function(){if(this._edges=new Nt,this._nodes=null,this._edgeEndList=new Nt,0===arguments.length)this._nodes=new qe(new Xe);else if(1===arguments.length){var t=arguments[0];this._nodes=new qe(t)}};Ye.prototype.printEdges=function(t){t.println(\"Edges:\");for(var e=0;e<this._edges.size();e++){t.println(\"edge \"+e+\":\");var n=this._edges.get(e);n.print(t),n.eiList.print(t)}},Ye.prototype.find=function(t){return this._nodes.find(t)},Ye.prototype.addNode=function(){if(arguments[0]instanceof Ge){var t=arguments[0];return this._nodes.addNode(t)}if(arguments[0]instanceof C){var e=arguments[0];return this._nodes.addNode(e)}},Ye.prototype.getNodeIterator=function(){return this._nodes.iterator()},Ye.prototype.linkResultDirectedEdges=function(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().linkResultDirectedEdges()}},Ye.prototype.debugPrintln=function(t){Y.out.println(t)},Ye.prototype.isBoundaryNode=function(t,e){var n=this._nodes.find(e);if(null===n)return!1;var i=n.getLabel();return null!==i&&i.getLocation(t)===w.BOUNDARY},Ye.prototype.linkAllDirectedEdges=function(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().linkAllDirectedEdges()}},Ye.prototype.matchInSameDirection=function(t,e,n,i){return!!t.equals(n)&&(at.computeOrientation(t,e,i)===at.COLLINEAR&&Be.quadrant(t,e)===Be.quadrant(n,i))},Ye.prototype.getEdgeEnds=function(){return this._edgeEndList},Ye.prototype.debugPrint=function(t){Y.out.print(t)},Ye.prototype.getEdgeIterator=function(){return this._edges.iterator()},Ye.prototype.findEdgeInSameDirection=function(t,e){for(var n=0;n<this._edges.size();n++){var i=this._edges.get(n),r=i.getCoordinates();if(this.matchInSameDirection(t,e,r[0],r[1]))return i;if(this.matchInSameDirection(t,e,r[r.length-1],r[r.length-2]))return i}return null},Ye.prototype.insertEdge=function(t){this._edges.add(t)},Ye.prototype.findEdgeEnd=function(t){for(var e=this.getEdgeEnds().iterator();e.hasNext();){var n=e.next();if(n.getEdge()===t)return n}return null},Ye.prototype.addEdges=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();this._edges.add(n);var i=new ze(n,!0),r=new ze(n,!1);i.setSym(r),r.setSym(i),this.add(i),this.add(r)}},Ye.prototype.add=function(t){this._nodes.add(t),this._edgeEndList.add(t)},Ye.prototype.getNodes=function(){return this._nodes.values()},Ye.prototype.findEdge=function(t,e){for(var n=0;n<this._edges.size();n++){var i=this._edges.get(n),r=i.getCoordinates();if(t.equals(r[0])&&e.equals(r[1]))return i}return null},Ye.prototype.interfaces_=function(){return[]},Ye.prototype.getClass=function(){return Ye},Ye.linkResultDirectedEdges=function(t){for(var e=t.iterator();e.hasNext();){e.next().getEdges().linkResultDirectedEdges()}};var ke=function(){this._geometryFactory=null,this._shellList=new Nt;var t=arguments[0];this._geometryFactory=t};ke.prototype.sortShellsAndHoles=function(t,e,n){for(var i=t.iterator();i.hasNext();){var r=i.next();r.isHole()?n.add(r):e.add(r)}},ke.prototype.computePolygons=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next().toPolygon(this._geometryFactory);e.add(i)}return e},ke.prototype.placeFreeHoles=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();if(null===i.getShell()){var r=this.findEdgeRingContaining(i,t);if(null===r)throw new we(\"unable to assign hole to a shell\",i.getCoordinate(0));i.setShell(r)}}},ke.prototype.buildMinimalEdgeRings=function(t,e,n){for(var i=new Nt,r=t.iterator();r.hasNext();){var o=r.next();if(o.getMaxNodeDegree()>2){o.linkDirectedEdgesForMinimalEdgeRings();var s=o.buildMinimalRings(),a=this.findShell(s);null!==a?(this.placePolygonHoles(a,s),e.add(a)):n.addAll(s)}else i.add(o)}return i},ke.prototype.containsPoint=function(t){for(var e=this._shellList.iterator();e.hasNext();){if(e.next().containsPoint(t))return!0}return!1},ke.prototype.buildMaximalEdgeRings=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next();if(i.isInResult()&&i.getLabel().isArea()&&null===i.getEdgeRing()){var r=new Ae(i,this._geometryFactory);e.add(r),r.setInResult()}}return e},ke.prototype.placePolygonHoles=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();i.isHole()&&i.setShell(t)}},ke.prototype.getPolygons=function(){return this.computePolygons(this._shellList)},ke.prototype.findEdgeRingContaining=function(t,e){for(var n=t.getLinearRing(),i=n.getEnvelopeInternal(),r=n.getCoordinateN(0),o=null,s=null,a=e.iterator();a.hasNext();){var u=a.next(),l=u.getLinearRing(),c=l.getEnvelopeInternal();null!==o&&(s=o.getLinearRing().getEnvelopeInternal());var p=!1;c.contains(i)&&at.isPointInRing(r,l.getCoordinates())&&(p=!0),p&&(null===o||s.contains(c))&&(o=u)}return o},ke.prototype.findShell=function(t){for(var e=0,n=null,i=t.iterator();i.hasNext();){var r=i.next();r.isHole()||(n=r,e++)}return et.isTrue(e<=1,\"found two shells in MinimalEdgeRing list\"),n},ke.prototype.add=function(){if(1===arguments.length){var t=arguments[0];this.add(t.getEdgeEnds(),t.getNodes())}else if(2===arguments.length){var e=arguments[0],n=arguments[1];Ye.linkResultDirectedEdges(n);var i=this.buildMaximalEdgeRings(e),r=new Nt,o=this.buildMinimalEdgeRings(i,this._shellList,r);this.sortShellsAndHoles(o,this._shellList,r),this.placeFreeHoles(this._shellList,r)}},ke.prototype.interfaces_=function(){return[]},ke.prototype.getClass=function(){return ke};var je=function(){};je.prototype.getBounds=function(){},je.prototype.interfaces_=function(){return[]},je.prototype.getClass=function(){return je};var He=function(){this._bounds=null,this._item=null;var t=arguments[0],e=arguments[1];this._bounds=t,this._item=e};He.prototype.getItem=function(){return this._item},He.prototype.getBounds=function(){return this._bounds},He.prototype.interfaces_=function(){return[je,e]},He.prototype.getClass=function(){return He};var We=function(){this._size=null,this._items=null,this._size=0,this._items=new Nt,this._items.add(null)};We.prototype.poll=function(){if(this.isEmpty())return null;var t=this._items.get(1);return this._items.set(1,this._items.get(this._size)),this._size-=1,this.reorder(1),t},We.prototype.size=function(){return this._size},We.prototype.reorder=function(t){for(var e=null,n=this._items.get(t);2*t<=this._size&&((e=2*t)!==this._size&&this._items.get(e+1).compareTo(this._items.get(e))<0&&e++,this._items.get(e).compareTo(n)<0);t=e)this._items.set(t,this._items.get(e));this._items.set(t,n)},We.prototype.clear=function(){this._size=0,this._items.clear()},We.prototype.isEmpty=function(){return 0===this._size},We.prototype.add=function(t){this._items.add(null),this._size+=1;var e=this._size;for(this._items.set(0,t);t.compareTo(this._items.get(Math.trunc(e/2)))<0;e/=2)this._items.set(e,this._items.get(Math.trunc(e/2)));this._items.set(e,t)},We.prototype.interfaces_=function(){return[]},We.prototype.getClass=function(){return We};var Ke=function(){};Ke.prototype.visitItem=function(t){},Ke.prototype.interfaces_=function(){return[]},Ke.prototype.getClass=function(){return Ke};var Je=function(){};Je.prototype.insert=function(t,e){},Je.prototype.remove=function(t,e){},Je.prototype.query=function(){},Je.prototype.interfaces_=function(){return[]},Je.prototype.getClass=function(){return Je};var Qe=function(){if(this._childBoundables=new Nt,this._bounds=null,this._level=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._level=t}},Ze={serialVersionUID:{configurable:!0}};Qe.prototype.getLevel=function(){return this._level},Qe.prototype.size=function(){return this._childBoundables.size()},Qe.prototype.getChildBoundables=function(){return this._childBoundables},Qe.prototype.addChildBoundable=function(t){et.isTrue(null===this._bounds),this._childBoundables.add(t)},Qe.prototype.isEmpty=function(){return this._childBoundables.isEmpty()},Qe.prototype.getBounds=function(){return null===this._bounds&&(this._bounds=this.computeBounds()),this._bounds},Qe.prototype.interfaces_=function(){return[je,e]},Qe.prototype.getClass=function(){return Qe},Ze.serialVersionUID.get=function(){return 0x5a1e55ec41369800},Object.defineProperties(Qe,Ze);var $e=function(){};$e.reverseOrder=function(){return{compare:function(t,e){return e.compareTo(t)}}},$e.min=function(t){return $e.sort(t),t.get(0)},$e.sort=function(t,e){var n=t.toArray();e?Gt.sort(n,e):Gt.sort(n);for(var i=t.iterator(),r=0,o=n.length;r<o;r++)i.next(),i.set(n[r])},$e.singletonList=function(t){var e=new Nt;return e.add(t),e};var tn=function(){this._boundable1=null,this._boundable2=null,this._distance=null,this._itemDistance=null;var t=arguments[0],e=arguments[1],n=arguments[2];this._boundable1=t,this._boundable2=e,this._itemDistance=n,this._distance=this.distance()};tn.prototype.expandToQueue=function(t,e){var n=tn.isComposite(this._boundable1),i=tn.isComposite(this._boundable2);if(n&&i)return tn.area(this._boundable1)>tn.area(this._boundable2)?(this.expand(this._boundable1,this._boundable2,t,e),null):(this.expand(this._boundable2,this._boundable1,t,e),null);if(n)return this.expand(this._boundable1,this._boundable2,t,e),null;if(i)return this.expand(this._boundable2,this._boundable1,t,e),null;throw new m(\"neither boundable is composite\")},tn.prototype.isLeaves=function(){return!(tn.isComposite(this._boundable1)||tn.isComposite(this._boundable2))},tn.prototype.compareTo=function(t){var e=t;return this._distance<e._distance?-1:this._distance>e._distance?1:0},tn.prototype.expand=function(t,e,n,i){for(var r=t.getChildBoundables().iterator();r.hasNext();){var o=r.next(),s=new tn(o,e,this._itemDistance);s.getDistance()<i&&n.add(s)}},tn.prototype.getBoundable=function(t){return 0===t?this._boundable1:this._boundable2},tn.prototype.getDistance=function(){return this._distance},tn.prototype.distance=function(){return this.isLeaves()?this._itemDistance.distance(this._boundable1,this._boundable2):this._boundable1.getBounds().distance(this._boundable2.getBounds())},tn.prototype.interfaces_=function(){return[E]},tn.prototype.getClass=function(){return tn},tn.area=function(t){return t.getBounds().getArea()},tn.isComposite=function(t){return t instanceof Qe};var en=function t(){if(this._root=null,this._built=!1,this._itemBoundables=new Nt,this._nodeCapacity=null,0===arguments.length){var e=t.DEFAULT_NODE_CAPACITY;this._nodeCapacity=e}else if(1===arguments.length){var n=arguments[0];et.isTrue(n>1,\"Node capacity must be greater than 1\"),this._nodeCapacity=n}},nn={IntersectsOp:{configurable:!0},serialVersionUID:{configurable:!0},DEFAULT_NODE_CAPACITY:{configurable:!0}};en.prototype.getNodeCapacity=function(){return this._nodeCapacity},en.prototype.lastNode=function(t){return t.get(t.size()-1)},en.prototype.size=function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.size(this._root));if(1===arguments.length){for(var t=0,e=arguments[0].getChildBoundables().iterator();e.hasNext();){var n=e.next();n instanceof Qe?t+=this.size(n):n instanceof He&&(t+=1)}return t}},en.prototype.removeItem=function(t,e){for(var n=null,i=t.getChildBoundables().iterator();i.hasNext();){var r=i.next();r instanceof He&&r.getItem()===e&&(n=r)}return null!==n&&(t.getChildBoundables().remove(n),!0)},en.prototype.itemsTree=function(){if(0===arguments.length){this.build();var t=this.itemsTree(this._root);return null===t?new Nt:t}if(1===arguments.length){for(var e=arguments[0],n=new Nt,i=e.getChildBoundables().iterator();i.hasNext();){var r=i.next();if(r instanceof Qe){var o=this.itemsTree(r);null!==o&&n.add(o)}else r instanceof He?n.add(r.getItem()):et.shouldNeverReachHere()}return n.size()<=0?null:n}},en.prototype.insert=function(t,e){et.isTrue(!this._built,\"Cannot insert items into an STR packed R-tree after it has been built.\"),this._itemBoundables.add(new He(t,e))},en.prototype.boundablesAtLevel=function(){if(1===arguments.length){var t=arguments[0],e=new Nt;return this.boundablesAtLevel(t,this._root,e),e}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];if(et.isTrue(n>-2),i.getLevel()===n)return r.add(i),null;for(var o=i.getChildBoundables().iterator();o.hasNext();){var s=o.next();s instanceof Qe?this.boundablesAtLevel(n,s,r):(et.isTrue(s instanceof He),-1===n&&r.add(s))}return null}},en.prototype.query=function(){if(1===arguments.length){var t=arguments[0];this.build();var e=new Nt;return this.isEmpty()?e:(this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.query(t,this._root,e),e)}if(2===arguments.length){var n=arguments[0],i=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this._root.getBounds(),n)&&this.query(n,this._root,i)}else if(3===arguments.length)if(T(arguments[2],Ke)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe)for(var r=arguments[0],o=arguments[1],s=arguments[2],a=o.getChildBoundables(),u=0;u<a.size();u++){var l=a.get(u);this.getIntersectsOp().intersects(l.getBounds(),r)&&(l instanceof Qe?this.query(r,l,s):l instanceof He?s.visitItem(l.getItem()):et.shouldNeverReachHere())}else if(T(arguments[2],xt)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe)for(var c=arguments[0],p=arguments[1],h=arguments[2],f=p.getChildBoundables(),g=0;g<f.size();g++){var d=f.get(g);this.getIntersectsOp().intersects(d.getBounds(),c)&&(d instanceof Qe?this.query(c,d,h):d instanceof He?h.add(d.getItem()):et.shouldNeverReachHere())}},en.prototype.build=function(){if(this._built)return null;this._root=this._itemBoundables.isEmpty()?this.createNode(0):this.createHigherLevels(this._itemBoundables,-1),this._itemBoundables=null,this._built=!0},en.prototype.getRoot=function(){return this.build(),this._root},en.prototype.remove=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.build(),!!this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.remove(t,this._root,e)}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=this.removeItem(i,r);if(o)return!0;for(var s=null,a=i.getChildBoundables().iterator();a.hasNext();){var u=a.next();if(this.getIntersectsOp().intersects(u.getBounds(),n)&&(u instanceof Qe&&(o=this.remove(n,u,r)))){s=u;break}}return null!==s&&s.getChildBoundables().isEmpty()&&i.getChildBoundables().remove(s),o}},en.prototype.createHigherLevels=function(t,e){et.isTrue(!t.isEmpty());var n=this.createParentBoundables(t,e+1);return 1===n.size()?n.get(0):this.createHigherLevels(n,e+1)},en.prototype.depth=function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.depth(this._root));if(1===arguments.length){for(var t=0,e=arguments[0].getChildBoundables().iterator();e.hasNext();){var n=e.next();if(n instanceof Qe){var i=this.depth(n);i>t&&(t=i)}}return t+1}},en.prototype.createParentBoundables=function(t,e){et.isTrue(!t.isEmpty());var n=new Nt;n.add(this.createNode(e));var i=new Nt(t);$e.sort(i,this.getComparator());for(var r=i.iterator();r.hasNext();){var o=r.next();this.lastNode(n).getChildBoundables().size()===this.getNodeCapacity()&&n.add(this.createNode(e)),this.lastNode(n).addChildBoundable(o)}return n},en.prototype.isEmpty=function(){return this._built?this._root.isEmpty():this._itemBoundables.isEmpty()},en.prototype.interfaces_=function(){return[e]},en.prototype.getClass=function(){return en},en.compareDoubles=function(t,e){return t>e?1:t<e?-1:0},nn.IntersectsOp.get=function(){return rn},nn.serialVersionUID.get=function(){return-0x35ef64c82d4c5400},nn.DEFAULT_NODE_CAPACITY.get=function(){return 10},Object.defineProperties(en,nn);var rn=function(){},on=function(){};on.prototype.distance=function(t,e){},on.prototype.interfaces_=function(){return[]},on.prototype.getClass=function(){return on};var sn=function(t){function n(e){e=e||n.DEFAULT_NODE_CAPACITY,t.call(this,e)}t&&(n.__proto__=t),(n.prototype=Object.create(t&&t.prototype)).constructor=n;var i={STRtreeNode:{configurable:!0},serialVersionUID:{configurable:!0},xComparator:{configurable:!0},yComparator:{configurable:!0},intersectsOp:{configurable:!0},DEFAULT_NODE_CAPACITY:{configurable:!0}};return n.prototype.createParentBoundablesFromVerticalSlices=function(t,e){et.isTrue(t.length>0);for(var n=new Nt,i=0;i<t.length;i++)n.addAll(this.createParentBoundablesFromVerticalSlice(t[i],e));return n},n.prototype.createNode=function(t){return new an(t)},n.prototype.size=function(){return 0===arguments.length?t.prototype.size.call(this):t.prototype.size.apply(this,arguments)},n.prototype.insert=function(){if(2!==arguments.length)return t.prototype.insert.apply(this,arguments);var e=arguments[0],n=arguments[1];if(e.isNull())return null;t.prototype.insert.call(this,e,n)},n.prototype.getIntersectsOp=function(){return n.intersectsOp},n.prototype.verticalSlices=function(t,e){for(var n=Math.trunc(Math.ceil(t.size()/e)),i=new Array(e).fill(null),r=t.iterator(),o=0;o<e;o++){i[o]=new Nt;for(var s=0;r.hasNext()&&s<n;){var a=r.next();i[o].add(a),s++}}return i},n.prototype.query=function(){if(1===arguments.length){var e=arguments[0];return t.prototype.query.call(this,e)}if(2===arguments.length){var n=arguments[0],i=arguments[1];t.prototype.query.call(this,n,i)}else if(3===arguments.length)if(T(arguments[2],Ke)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe){var r=arguments[0],o=arguments[1],s=arguments[2];t.prototype.query.call(this,r,o,s)}else if(T(arguments[2],xt)&&arguments[0]instanceof Object&&arguments[1]instanceof Qe){var a=arguments[0],u=arguments[1],l=arguments[2];t.prototype.query.call(this,a,u,l)}},n.prototype.getComparator=function(){return n.yComparator},n.prototype.createParentBoundablesFromVerticalSlice=function(e,n){return t.prototype.createParentBoundables.call(this,e,n)},n.prototype.remove=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return t.prototype.remove.call(this,e,n)}return t.prototype.remove.apply(this,arguments)},n.prototype.depth=function(){return 0===arguments.length?t.prototype.depth.call(this):t.prototype.depth.apply(this,arguments)},n.prototype.createParentBoundables=function(t,e){et.isTrue(!t.isEmpty());var i=Math.trunc(Math.ceil(t.size()/this.getNodeCapacity())),r=new Nt(t);$e.sort(r,n.xComparator);var o=this.verticalSlices(r,Math.trunc(Math.ceil(Math.sqrt(i))));return this.createParentBoundablesFromVerticalSlices(o,e)},n.prototype.nearestNeighbour=function(){if(1===arguments.length){if(T(arguments[0],on)){var t=arguments[0],e=new tn(this.getRoot(),this.getRoot(),t);return this.nearestNeighbour(e)}if(arguments[0]instanceof tn){var i=arguments[0];return this.nearestNeighbour(i,v.POSITIVE_INFINITY)}}else if(2===arguments.length){if(arguments[0]instanceof n&&T(arguments[1],on)){var r=arguments[0],o=arguments[1],s=new tn(this.getRoot(),r.getRoot(),o);return this.nearestNeighbour(s)}if(arguments[0]instanceof tn&&\"number\"==typeof arguments[1]){var a=arguments[0],u=arguments[1],l=null,c=new We;for(c.add(a);!c.isEmpty()&&u>0;){var p=c.poll(),h=p.getDistance();if(h>=u)break;p.isLeaves()?(u=h,l=p):p.expandToQueue(c,u)}return[l.getBoundable(0).getItem(),l.getBoundable(1).getItem()]}}else if(3===arguments.length){var f=arguments[0],g=arguments[1],d=arguments[2],y=new He(f,g),_=new tn(this.getRoot(),y,d);return this.nearestNeighbour(_)[0]}},n.prototype.interfaces_=function(){return[Je,e]},n.prototype.getClass=function(){return n},n.centreX=function(t){return n.avg(t.getMinX(),t.getMaxX())},n.avg=function(t,e){return(t+e)/2},n.centreY=function(t){return n.avg(t.getMinY(),t.getMaxY())},i.STRtreeNode.get=function(){return an},i.serialVersionUID.get=function(){return 0x39920f7d5f261e0},i.xComparator.get=function(){return{interfaces_:function(){return[N]},compare:function(e,i){return t.compareDoubles(n.centreX(e.getBounds()),n.centreX(i.getBounds()))}}},i.yComparator.get=function(){return{interfaces_:function(){return[N]},compare:function(e,i){return t.compareDoubles(n.centreY(e.getBounds()),n.centreY(i.getBounds()))}}},i.intersectsOp.get=function(){return{interfaces_:function(){return[t.IntersectsOp]},intersects:function(t,e){return t.intersects(e)}}},i.DEFAULT_NODE_CAPACITY.get=function(){return 10},Object.defineProperties(n,i),n}(en),an=function(t){function e(){var e=arguments[0];t.call(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.computeBounds=function(){for(var t=null,e=this.getChildBoundables().iterator();e.hasNext();){var n=e.next();null===t?t=new j(n.getBounds()):t.expandToInclude(n.getBounds())}return t},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Qe),un=function(){};un.prototype.interfaces_=function(){return[]},un.prototype.getClass=function(){return un},un.relativeSign=function(t,e){return t<e?-1:t>e?1:0},un.compare=function(t,e,n){if(e.equals2D(n))return 0;var i=un.relativeSign(e.x,n.x),r=un.relativeSign(e.y,n.y);switch(t){case 0:return un.compareValue(i,r);case 1:return un.compareValue(r,i);case 2:return un.compareValue(r,-i);case 3:return un.compareValue(-i,r);case 4:return un.compareValue(-i,-r);case 5:return un.compareValue(-r,-i);case 6:return un.compareValue(-r,i);case 7:return un.compareValue(i,-r)}return et.shouldNeverReachHere(\"invalid octant value\"),0},un.compareValue=function(t,e){return t<0?-1:t>0?1:e<0?-1:e>0?1:0};var ln=function(){this._segString=null,this.coord=null,this.segmentIndex=null,this._segmentOctant=null,this._isInterior=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._segString=t,this.coord=new C(e),this.segmentIndex=n,this._segmentOctant=i,this._isInterior=!e.equals2D(t.getCoordinate(n))};ln.prototype.getCoordinate=function(){return this.coord},ln.prototype.print=function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex)},ln.prototype.compareTo=function(t){var e=t;return this.segmentIndex<e.segmentIndex?-1:this.segmentIndex>e.segmentIndex?1:this.coord.equals2D(e.coord)?0:un.compare(this._segmentOctant,this.coord,e.coord)},ln.prototype.isEndPoint=function(t){return 0===this.segmentIndex&&!this._isInterior||this.segmentIndex===t},ln.prototype.isInterior=function(){return this._isInterior},ln.prototype.interfaces_=function(){return[E]},ln.prototype.getClass=function(){return ln};var cn=function(){this._nodeMap=new p,this._edge=null;var t=arguments[0];this._edge=t};cn.prototype.getSplitCoordinates=function(){var t=new St;this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next();this.addEdgeCoordinates(n,i,t),n=i}return t.toCoordinateArray()},cn.prototype.addCollapsedNodes=function(){var t=new Nt;this.findCollapsesFromInsertedNodes(t),this.findCollapsesFromExistingVertices(t);for(var e=t.iterator();e.hasNext();){var n=e.next().intValue();this.add(this._edge.getCoordinate(n),n)}},cn.prototype.print=function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}},cn.prototype.findCollapsesFromExistingVertices=function(t){for(var e=0;e<this._edge.size()-2;e++){var n=this._edge.getCoordinate(e),i=this._edge.getCoordinate(e+2);n.equals2D(i)&&t.add(new M(e+1))}},cn.prototype.addEdgeCoordinates=function(t,e,n){var i=this._edge.getCoordinate(e.segmentIndex),r=e.isInterior()||!e.coord.equals2D(i);n.add(new C(t.coord),!1);for(var o=t.segmentIndex+1;o<=e.segmentIndex;o++)n.add(this._edge.getCoordinate(o));r&&n.add(new C(e.coord))},cn.prototype.iterator=function(){return this._nodeMap.values().iterator()},cn.prototype.addSplitEdges=function(t){this.addEndpoints(),this.addCollapsedNodes();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}},cn.prototype.findCollapseIndex=function(t,e,n){if(!t.coord.equals2D(e.coord))return!1;var i=e.segmentIndex-t.segmentIndex;return e.isInterior()||i--,1===i&&(n[0]=t.segmentIndex+1,!0)},cn.prototype.findCollapsesFromInsertedNodes=function(t){for(var e=new Array(1).fill(null),n=this.iterator(),i=n.next();n.hasNext();){var r=n.next();this.findCollapseIndex(i,r,e)&&t.add(new M(e[0])),i=r}},cn.prototype.getEdge=function(){return this._edge},cn.prototype.addEndpoints=function(){var t=this._edge.size()-1;this.add(this._edge.getCoordinate(0),0),this.add(this._edge.getCoordinate(t),t)},cn.prototype.createSplitEdge=function(t,e){var n=e.segmentIndex-t.segmentIndex+2,i=this._edge.getCoordinate(e.segmentIndex),r=e.isInterior()||!e.coord.equals2D(i);r||n--;var o=new Array(n).fill(null),s=0;o[s++]=new C(t.coord);for(var a=t.segmentIndex+1;a<=e.segmentIndex;a++)o[s++]=this._edge.getCoordinate(a);return r&&(o[s]=new C(e.coord)),new gn(o,this._edge.getData())},cn.prototype.add=function(t,e){var n=new ln(this._edge,t,e,this._edge.getSegmentOctant(e)),i=this._nodeMap.get(n);return null!==i?(et.isTrue(i.coord.equals2D(t),\"Found equal nodes with different coordinates\"),i):(this._nodeMap.put(n,n),n)},cn.prototype.checkSplitEdgesCorrectness=function(t){var e=this._edge.getCoordinates(),n=t.get(0).getCoordinate(0);if(!n.equals2D(e[0]))throw new $(\"bad split edge start point at \"+n);var i=t.get(t.size()-1).getCoordinates(),r=i[i.length-1];if(!r.equals2D(e[e.length-1]))throw new $(\"bad split edge end point at \"+r)},cn.prototype.interfaces_=function(){return[]},cn.prototype.getClass=function(){return cn};var pn=function(){};pn.prototype.interfaces_=function(){return[]},pn.prototype.getClass=function(){return pn},pn.octant=function(){if(\"number\"==typeof arguments[0]&&\"number\"==typeof arguments[1]){var t=arguments[0],e=arguments[1];if(0===t&&0===e)throw new m(\"Cannot compute the octant for point ( \"+t+\", \"+e+\" )\");var n=Math.abs(t),i=Math.abs(e);return t>=0?e>=0?n>=i?0:1:n>=i?7:6:e>=0?n>=i?3:2:n>=i?4:5}if(arguments[0]instanceof C&&arguments[1]instanceof C){var r=arguments[0],o=arguments[1],s=o.x-r.x,a=o.y-r.y;if(0===s&&0===a)throw new m(\"Cannot compute the octant for two identical points \"+r);return pn.octant(s,a)}};var hn=function(){};hn.prototype.getCoordinates=function(){},hn.prototype.size=function(){},hn.prototype.getCoordinate=function(t){},hn.prototype.isClosed=function(){},hn.prototype.setData=function(t){},hn.prototype.getData=function(){},hn.prototype.interfaces_=function(){return[]},hn.prototype.getClass=function(){return hn};var fn=function(){};fn.prototype.addIntersection=function(t,e){},fn.prototype.interfaces_=function(){return[hn]},fn.prototype.getClass=function(){return fn};var gn=function(){this._nodeList=new cn(this),this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e};gn.prototype.getCoordinates=function(){return this._pts},gn.prototype.size=function(){return this._pts.length},gn.prototype.getCoordinate=function(t){return this._pts[t]},gn.prototype.isClosed=function(){return this._pts[0].equals(this._pts[this._pts.length-1])},gn.prototype.getSegmentOctant=function(t){return t===this._pts.length-1?-1:this.safeOctant(this.getCoordinate(t),this.getCoordinate(t+1))},gn.prototype.setData=function(t){this._data=t},gn.prototype.safeOctant=function(t,e){return t.equals2D(e)?0:pn.octant(t,e)},gn.prototype.getData=function(){return this._data},gn.prototype.addIntersection=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.addIntersectionNode(t,e)}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[3],o=new C(n.getIntersection(r));this.addIntersection(o,i)}},gn.prototype.toString=function(){return Z.toLineString(new ue(this._pts))},gn.prototype.getNodeList=function(){return this._nodeList},gn.prototype.addIntersectionNode=function(t,e){var n=e,i=n+1;if(i<this._pts.length){var r=this._pts[i];t.equals2D(r)&&(n=i)}return this._nodeList.add(t,n)},gn.prototype.addIntersections=function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++)this.addIntersection(t,e,n,i)},gn.prototype.interfaces_=function(){return[fn]},gn.prototype.getClass=function(){return gn},gn.getNodedSubstrings=function(){if(1===arguments.length){var t=arguments[0],e=new Nt;return gn.getNodedSubstrings(t,e),e}if(2===arguments.length)for(var n=arguments[0],i=arguments[1],r=n.iterator();r.hasNext();){r.next().getNodeList().addSplitEdges(i)}};var dn=function(){if(this.p0=null,this.p1=null,0===arguments.length)this.p0=new C,this.p1=new C;else if(1===arguments.length){var t=arguments[0];this.p0=new C(t.p0),this.p1=new C(t.p1)}else if(2===arguments.length)this.p0=arguments[0],this.p1=arguments[1];else if(4===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2],r=arguments[3];this.p0=new C(e,n),this.p1=new C(i,r)}},yn={serialVersionUID:{configurable:!0}};dn.prototype.minX=function(){return Math.min(this.p0.x,this.p1.x)},dn.prototype.orientationIndex=function(){if(arguments[0]instanceof dn){var t=arguments[0],e=at.orientationIndex(this.p0,this.p1,t.p0),n=at.orientationIndex(this.p0,this.p1,t.p1);return e>=0&&n>=0?Math.max(e,n):e<=0&&n<=0?Math.max(e,n):0}if(arguments[0]instanceof C){var i=arguments[0];return at.orientationIndex(this.p0,this.p1,i)}},dn.prototype.toGeometry=function(t){return t.createLineString([this.p0,this.p1])},dn.prototype.isVertical=function(){return this.p0.x===this.p1.x},dn.prototype.equals=function(t){if(!(t instanceof dn))return!1;var e=t;return this.p0.equals(e.p0)&&this.p1.equals(e.p1)},dn.prototype.intersection=function(t){var e=new rt;return e.computeIntersection(this.p0,this.p1,t.p0,t.p1),e.hasIntersection()?e.getIntersection(0):null},dn.prototype.project=function(){if(arguments[0]instanceof C){var t=arguments[0];if(t.equals(this.p0)||t.equals(this.p1))return new C(t);var e=this.projectionFactor(t),n=new C;return n.x=this.p0.x+e*(this.p1.x-this.p0.x),n.y=this.p0.y+e*(this.p1.y-this.p0.y),n}if(arguments[0]instanceof dn){var i=arguments[0],r=this.projectionFactor(i.p0),o=this.projectionFactor(i.p1);if(r>=1&&o>=1)return null;if(r<=0&&o<=0)return null;var s=this.project(i.p0);r<0&&(s=this.p0),r>1&&(s=this.p1);var a=this.project(i.p1);return o<0&&(a=this.p0),o>1&&(a=this.p1),new dn(s,a)}},dn.prototype.normalize=function(){this.p1.compareTo(this.p0)<0&&this.reverse()},dn.prototype.angle=function(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)},dn.prototype.getCoordinate=function(t){return 0===t?this.p0:this.p1},dn.prototype.distancePerpendicular=function(t){return at.distancePointLinePerpendicular(t,this.p0,this.p1)},dn.prototype.minY=function(){return Math.min(this.p0.y,this.p1.y)},dn.prototype.midPoint=function(){return dn.midPoint(this.p0,this.p1)},dn.prototype.projectionFactor=function(t){if(t.equals(this.p0))return 0;if(t.equals(this.p1))return 1;var e=this.p1.x-this.p0.x,n=this.p1.y-this.p0.y,i=e*e+n*n;if(i<=0)return v.NaN;return((t.x-this.p0.x)*e+(t.y-this.p0.y)*n)/i},dn.prototype.closestPoints=function(t){var e=this.intersection(t);if(null!==e)return[e,e];var n=new Array(2).fill(null),i=v.MAX_VALUE,r=null,o=this.closestPoint(t.p0);i=o.distance(t.p0),n[0]=o,n[1]=t.p0;var s=this.closestPoint(t.p1);(r=s.distance(t.p1))<i&&(i=r,n[0]=s,n[1]=t.p1);var a=t.closestPoint(this.p0);(r=a.distance(this.p0))<i&&(i=r,n[0]=this.p0,n[1]=a);var u=t.closestPoint(this.p1);return(r=u.distance(this.p1))<i&&(i=r,n[0]=this.p1,n[1]=u),n},dn.prototype.closestPoint=function(t){var e=this.projectionFactor(t);if(e>0&&e<1)return this.project(t);return this.p0.distance(t)<this.p1.distance(t)?this.p0:this.p1},dn.prototype.maxX=function(){return Math.max(this.p0.x,this.p1.x)},dn.prototype.getLength=function(){return this.p0.distance(this.p1)},dn.prototype.compareTo=function(t){var e=t,n=this.p0.compareTo(e.p0);return 0!==n?n:this.p1.compareTo(e.p1)},dn.prototype.reverse=function(){var t=this.p0;this.p0=this.p1,this.p1=t},dn.prototype.equalsTopo=function(t){return this.p0.equals(t.p0)&&(this.p1.equals(t.p1)||this.p0.equals(t.p1))&&this.p1.equals(t.p0)},dn.prototype.lineIntersection=function(t){try{return k.intersection(this.p0,this.p1,t.p0,t.p1)}catch(t){if(!(t instanceof X))throw t}return null},dn.prototype.maxY=function(){return Math.max(this.p0.y,this.p1.y)},dn.prototype.pointAlongOffset=function(t,e){var n=this.p0.x+t*(this.p1.x-this.p0.x),i=this.p0.y+t*(this.p1.y-this.p0.y),r=this.p1.x-this.p0.x,o=this.p1.y-this.p0.y,s=Math.sqrt(r*r+o*o),a=0,u=0;if(0!==e){if(s<=0)throw new Error(\"Cannot compute offset from zero-length line segment\");a=e*r/s,u=e*o/s}return new C(n-u,i+a)},dn.prototype.setCoordinates=function(){if(1===arguments.length){var t=arguments[0];this.setCoordinates(t.p0,t.p1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.p0.x=e.x,this.p0.y=e.y,this.p1.x=n.x,this.p1.y=n.y}},dn.prototype.segmentFraction=function(t){var e=this.projectionFactor(t);return e<0?e=0:(e>1||v.isNaN(e))&&(e=1),e},dn.prototype.toString=function(){return\"LINESTRING( \"+this.p0.x+\" \"+this.p0.y+\", \"+this.p1.x+\" \"+this.p1.y+\")\"},dn.prototype.isHorizontal=function(){return this.p0.y===this.p1.y},dn.prototype.distance=function(){if(arguments[0]instanceof dn){var t=arguments[0];return at.distanceLineLine(this.p0,this.p1,t.p0,t.p1)}if(arguments[0]instanceof C){var e=arguments[0];return at.distancePointLine(e,this.p0,this.p1)}},dn.prototype.pointAlong=function(t){var e=new C;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e},dn.prototype.hashCode=function(){var t=v.doubleToLongBits(this.p0.x);t^=31*v.doubleToLongBits(this.p0.y);var e=Math.trunc(t)^Math.trunc(t>>32),n=v.doubleToLongBits(this.p1.x);n^=31*v.doubleToLongBits(this.p1.y);return e^(Math.trunc(n)^Math.trunc(n>>32))},dn.prototype.interfaces_=function(){return[E,e]},dn.prototype.getClass=function(){return dn},dn.midPoint=function(t,e){return new C((t.x+e.x)/2,(t.y+e.y)/2)},yn.serialVersionUID.get=function(){return 0x2d2172135f411c00},Object.defineProperties(dn,yn);var _n=function(){this.tempEnv1=new j,this.tempEnv2=new j,this._overlapSeg1=new dn,this._overlapSeg2=new dn};_n.prototype.overlap=function(){if(2===arguments.length);else if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];t.getLineSegment(e,this._overlapSeg1),n.getLineSegment(i,this._overlapSeg2),this.overlap(this._overlapSeg1,this._overlapSeg2)}},_n.prototype.interfaces_=function(){return[]},_n.prototype.getClass=function(){return _n};var mn=function(){this._pts=null,this._start=null,this._end=null,this._env=null,this._context=null,this._id=null;var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this._pts=t,this._start=e,this._end=n,this._context=i};mn.prototype.getLineSegment=function(t,e){e.p0=this._pts[t],e.p1=this._pts[t+1]},mn.prototype.computeSelect=function(t,e,n,i){var r=this._pts[e],o=this._pts[n];if(i.tempEnv1.init(r,o),n-e==1)return i.select(this,e),null;if(!t.intersects(i.tempEnv1))return null;var s=Math.trunc((e+n)/2);e<s&&this.computeSelect(t,e,s,i),s<n&&this.computeSelect(t,s,n,i)},mn.prototype.getCoordinates=function(){for(var t=new Array(this._end-this._start+1).fill(null),e=0,n=this._start;n<=this._end;n++)t[e++]=this._pts[n];return t},mn.prototype.computeOverlaps=function(t,e){this.computeOverlapsInternal(this._start,this._end,t,t._start,t._end,e)},mn.prototype.setId=function(t){this._id=t},mn.prototype.select=function(t,e){this.computeSelect(t,this._start,this._end,e)},mn.prototype.getEnvelope=function(){if(null===this._env){var t=this._pts[this._start],e=this._pts[this._end];this._env=new j(t,e)}return this._env},mn.prototype.getEndIndex=function(){return this._end},mn.prototype.getStartIndex=function(){return this._start},mn.prototype.getContext=function(){return this._context},mn.prototype.getId=function(){return this._id},mn.prototype.computeOverlapsInternal=function(t,e,n,i,r,o){var s=this._pts[t],a=this._pts[e],u=n._pts[i],l=n._pts[r];if(e-t==1&&r-i==1)return o.overlap(this,t,n,i),null;if(o.tempEnv1.init(s,a),o.tempEnv2.init(u,l),!o.tempEnv1.intersects(o.tempEnv2))return null;var c=Math.trunc((t+e)/2),p=Math.trunc((i+r)/2);t<c&&(i<p&&this.computeOverlapsInternal(t,c,n,i,p,o),p<r&&this.computeOverlapsInternal(t,c,n,p,r,o)),c<e&&(i<p&&this.computeOverlapsInternal(c,e,n,i,p,o),p<r&&this.computeOverlapsInternal(c,e,n,p,r,o))},mn.prototype.interfaces_=function(){return[]},mn.prototype.getClass=function(){return mn};var vn=function(){};vn.prototype.interfaces_=function(){return[]},vn.prototype.getClass=function(){return vn},vn.getChainStartIndices=function(t){var e=0,n=new Nt;n.add(new M(e));do{var i=vn.findChainEnd(t,e);n.add(new M(i)),e=i}while(e<t.length-1);return vn.toIntArray(n)},vn.findChainEnd=function(t,e){for(var n=e;n<t.length-1&&t[n].equals2D(t[n+1]);)n++;if(n>=t.length-1)return t.length-1;for(var i=Be.quadrant(t[n],t[n+1]),r=e+1;r<t.length;){if(!t[r-1].equals2D(t[r])){if(Be.quadrant(t[r-1],t[r])!==i)break}r++}return r-1},vn.getChains=function(){if(1===arguments.length){var t=arguments[0];return vn.getChains(t,null)}if(2===arguments.length){for(var e=arguments[0],n=arguments[1],i=new Nt,r=vn.getChainStartIndices(e),o=0;o<r.length-1;o++){var s=new mn(e,r[o],r[o+1],n);i.add(s)}return i}},vn.toIntArray=function(t){for(var e=new Array(t.size()).fill(null),n=0;n<e.length;n++)e[n]=t.get(n).intValue();return e};var In=function(){};In.prototype.computeNodes=function(t){},In.prototype.getNodedSubstrings=function(){},In.prototype.interfaces_=function(){return[]},In.prototype.getClass=function(){return In};var En=function(){if(this._segInt=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.setSegmentIntersector(t)}};En.prototype.setSegmentIntersector=function(t){this._segInt=t},En.prototype.interfaces_=function(){return[In]},En.prototype.getClass=function(){return En};var xn=function(t){function e(e){e?t.call(this,e):t.call(this),this._monoChains=new Nt,this._index=new sn,this._idCounter=0,this._nodedSegStrings=null,this._nOverlaps=0}t&&(e.__proto__=t),(e.prototype=Object.create(t&&t.prototype)).constructor=e;var n={SegmentOverlapAction:{configurable:!0}};return e.prototype.getMonotoneChains=function(){return this._monoChains},e.prototype.getNodedSubstrings=function(){return gn.getNodedSubstrings(this._nodedSegStrings)},e.prototype.getIndex=function(){return this._index},e.prototype.add=function(t){for(var e=vn.getChains(t.getCoordinates(),t).iterator();e.hasNext();){var n=e.next();n.setId(this._idCounter++),this._index.insert(n.getEnvelope(),n),this._monoChains.add(n)}},e.prototype.computeNodes=function(t){this._nodedSegStrings=t;for(var e=t.iterator();e.hasNext();)this.add(e.next());this.intersectChains()},e.prototype.intersectChains=function(){for(var t=new Nn(this._segInt),e=this._monoChains.iterator();e.hasNext();)for(var n=e.next(),i=this._index.query(n.getEnvelope()).iterator();i.hasNext();){var r=i.next();if(r.getId()>n.getId()&&(n.computeOverlaps(r,t),this._nOverlaps++),this._segInt.isDone())return null}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.SegmentOverlapAction.get=function(){return Nn},Object.defineProperties(e,n),e}(En),Nn=function(t){function e(){t.call(this),this._si=null;var e=arguments[0];this._si=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.overlap=function(){if(4!==arguments.length)return t.prototype.overlap.apply(this,arguments);var e=arguments[0],n=arguments[1],i=arguments[2],r=arguments[3],o=e.getContext(),s=i.getContext();this._si.processIntersections(o,n,s,r)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(_n),Cn=function t(){if(this._quadrantSegments=t.DEFAULT_QUADRANT_SEGMENTS,this._endCapStyle=t.CAP_ROUND,this._joinStyle=t.JOIN_ROUND,this._mitreLimit=t.DEFAULT_MITRE_LIMIT,this._isSingleSided=!1,this._simplifyFactor=t.DEFAULT_SIMPLIFY_FACTOR,0===arguments.length);else if(1===arguments.length){var e=arguments[0];this.setQuadrantSegments(e)}else if(2===arguments.length){var n=arguments[0],i=arguments[1];this.setQuadrantSegments(n),this.setEndCapStyle(i)}else if(4===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];this.setQuadrantSegments(r),this.setEndCapStyle(o),this.setJoinStyle(s),this.setMitreLimit(a)}},Sn={CAP_ROUND:{configurable:!0},CAP_FLAT:{configurable:!0},CAP_SQUARE:{configurable:!0},JOIN_ROUND:{configurable:!0},JOIN_MITRE:{configurable:!0},JOIN_BEVEL:{configurable:!0},DEFAULT_QUADRANT_SEGMENTS:{configurable:!0},DEFAULT_MITRE_LIMIT:{configurable:!0},DEFAULT_SIMPLIFY_FACTOR:{configurable:!0}};Cn.prototype.getEndCapStyle=function(){return this._endCapStyle},Cn.prototype.isSingleSided=function(){return this._isSingleSided},Cn.prototype.setQuadrantSegments=function(t){this._quadrantSegments=t,0===this._quadrantSegments&&(this._joinStyle=Cn.JOIN_BEVEL),this._quadrantSegments<0&&(this._joinStyle=Cn.JOIN_MITRE,this._mitreLimit=Math.abs(this._quadrantSegments)),t<=0&&(this._quadrantSegments=1),this._joinStyle!==Cn.JOIN_ROUND&&(this._quadrantSegments=Cn.DEFAULT_QUADRANT_SEGMENTS)},Cn.prototype.getJoinStyle=function(){return this._joinStyle},Cn.prototype.setJoinStyle=function(t){this._joinStyle=t},Cn.prototype.setSimplifyFactor=function(t){this._simplifyFactor=t<0?0:t},Cn.prototype.getSimplifyFactor=function(){return this._simplifyFactor},Cn.prototype.getQuadrantSegments=function(){return this._quadrantSegments},Cn.prototype.setEndCapStyle=function(t){this._endCapStyle=t},Cn.prototype.getMitreLimit=function(){return this._mitreLimit},Cn.prototype.setMitreLimit=function(t){this._mitreLimit=t},Cn.prototype.setSingleSided=function(t){this._isSingleSided=t},Cn.prototype.interfaces_=function(){return[]},Cn.prototype.getClass=function(){return Cn},Cn.bufferDistanceError=function(t){var e=Math.PI/2/t;return 1-Math.cos(e/2)},Sn.CAP_ROUND.get=function(){return 1},Sn.CAP_FLAT.get=function(){return 2},Sn.CAP_SQUARE.get=function(){return 3},Sn.JOIN_ROUND.get=function(){return 1},Sn.JOIN_MITRE.get=function(){return 2},Sn.JOIN_BEVEL.get=function(){return 3},Sn.DEFAULT_QUADRANT_SEGMENTS.get=function(){return 8},Sn.DEFAULT_MITRE_LIMIT.get=function(){return 5},Sn.DEFAULT_SIMPLIFY_FACTOR.get=function(){return.01},Object.defineProperties(Cn,Sn);var Ln=function(t){this._distanceTol=null,this._isDeleted=null,this._angleOrientation=at.COUNTERCLOCKWISE,this._inputLine=t||null},bn={INIT:{configurable:!0},DELETE:{configurable:!0},KEEP:{configurable:!0},NUM_PTS_TO_CHECK:{configurable:!0}};Ln.prototype.isDeletable=function(t,e,n,i){var r=this._inputLine[t],o=this._inputLine[e],s=this._inputLine[n];return!!this.isConcave(r,o,s)&&(!!this.isShallow(r,o,s,i)&&this.isShallowSampled(r,o,t,n,i))},Ln.prototype.deleteShallowConcavities=function(){for(var t=1,e=this.findNextNonDeletedIndex(t),n=this.findNextNonDeletedIndex(e),i=!1;n<this._inputLine.length;){var r=!1;this.isDeletable(t,e,n,this._distanceTol)&&(this._isDeleted[e]=Ln.DELETE,r=!0,i=!0),t=r?n:e,e=this.findNextNonDeletedIndex(t),n=this.findNextNonDeletedIndex(e)}return i},Ln.prototype.isShallowConcavity=function(t,e,n,i){if(!(at.computeOrientation(t,e,n)===this._angleOrientation))return!1;return at.distancePointLine(e,t,n)<i},Ln.prototype.isShallowSampled=function(t,e,n,i,r){var o=Math.trunc((i-n)/Ln.NUM_PTS_TO_CHECK);o<=0&&(o=1);for(var s=n;s<i;s+=o)if(!this.isShallow(t,e,this._inputLine[s],r))return!1;return!0},Ln.prototype.isConcave=function(t,e,n){var i=at.computeOrientation(t,e,n)===this._angleOrientation;return i},Ln.prototype.simplify=function(t){this._distanceTol=Math.abs(t),t<0&&(this._angleOrientation=at.CLOCKWISE),this._isDeleted=new Array(this._inputLine.length).fill(null);var e=!1;do{e=this.deleteShallowConcavities()}while(e);return this.collapseLine()},Ln.prototype.findNextNonDeletedIndex=function(t){for(var e=t+1;e<this._inputLine.length&&this._isDeleted[e]===Ln.DELETE;)e++;return e},Ln.prototype.isShallow=function(t,e,n,i){return at.distancePointLine(e,t,n)<i},Ln.prototype.collapseLine=function(){for(var t=new St,e=0;e<this._inputLine.length;e++)this._isDeleted[e]!==Ln.DELETE&&t.add(this._inputLine[e]);return t.toCoordinateArray()},Ln.prototype.interfaces_=function(){return[]},Ln.prototype.getClass=function(){return Ln},Ln.simplify=function(t,e){return new Ln(t).simplify(e)},bn.INIT.get=function(){return 0},bn.DELETE.get=function(){return 1},bn.KEEP.get=function(){return 1},bn.NUM_PTS_TO_CHECK.get=function(){return 10},Object.defineProperties(Ln,bn);var wn=function(){this._ptList=null,this._precisionModel=null,this._minimimVertexDistance=0,this._ptList=new Nt},On={COORDINATE_ARRAY_TYPE:{configurable:!0}};wn.prototype.getCoordinates=function(){return this._ptList.toArray(wn.COORDINATE_ARRAY_TYPE)},wn.prototype.setPrecisionModel=function(t){this._precisionModel=t},wn.prototype.addPt=function(t){var e=new C(t);if(this._precisionModel.makePrecise(e),this.isRedundant(e))return null;this._ptList.add(e)},wn.prototype.revere=function(){},wn.prototype.addPts=function(t,e){if(e)for(var n=0;n<t.length;n++)this.addPt(t[n]);else for(var i=t.length-1;i>=0;i--)this.addPt(t[i])},wn.prototype.isRedundant=function(t){if(this._ptList.size()<1)return!1;var e=this._ptList.get(this._ptList.size()-1);return t.distance(e)<this._minimimVertexDistance},wn.prototype.toString=function(){return(new _e).createLineString(this.getCoordinates()).toString()},wn.prototype.closeRing=function(){if(this._ptList.size()<1)return null;var t=new C(this._ptList.get(0)),e=this._ptList.get(this._ptList.size()-1);if(t.equals(e))return null;this._ptList.add(t)},wn.prototype.setMinimumVertexDistance=function(t){this._minimimVertexDistance=t},wn.prototype.interfaces_=function(){return[]},wn.prototype.getClass=function(){return wn},On.COORDINATE_ARRAY_TYPE.get=function(){return new Array(0).fill(null)},Object.defineProperties(wn,On);var Tn=function(){},Rn={PI_TIMES_2:{configurable:!0},PI_OVER_2:{configurable:!0},PI_OVER_4:{configurable:!0},COUNTERCLOCKWISE:{configurable:!0},CLOCKWISE:{configurable:!0},NONE:{configurable:!0}};Tn.prototype.interfaces_=function(){return[]},Tn.prototype.getClass=function(){return Tn},Tn.toDegrees=function(t){return 180*t/Math.PI},Tn.normalize=function(t){for(;t>Math.PI;)t-=Tn.PI_TIMES_2;for(;t<=-Math.PI;)t+=Tn.PI_TIMES_2;return t},Tn.angle=function(){if(1===arguments.length){var t=arguments[0];return Math.atan2(t.y,t.x)}if(2===arguments.length){var e=arguments[0],n=arguments[1],i=n.x-e.x,r=n.y-e.y;return Math.atan2(r,i)}},Tn.isAcute=function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)>0},Tn.isObtuse=function(t,e,n){var i=t.x-e.x,r=t.y-e.y;return i*(n.x-e.x)+r*(n.y-e.y)<0},Tn.interiorAngle=function(t,e,n){var i=Tn.angle(e,t),r=Tn.angle(e,n);return Math.abs(r-i)},Tn.normalizePositive=function(t){if(t<0){for(;t<0;)t+=Tn.PI_TIMES_2;t>=Tn.PI_TIMES_2&&(t=0)}else{for(;t>=Tn.PI_TIMES_2;)t-=Tn.PI_TIMES_2;t<0&&(t=0)}return t},Tn.angleBetween=function(t,e,n){var i=Tn.angle(e,t),r=Tn.angle(e,n);return Tn.diff(i,r)},Tn.diff=function(t,e){var n=null;return(n=t<e?e-t:t-e)>Math.PI&&(n=2*Math.PI-n),n},Tn.toRadians=function(t){return t*Math.PI/180},Tn.getTurn=function(t,e){var n=Math.sin(e-t);return n>0?Tn.COUNTERCLOCKWISE:n<0?Tn.CLOCKWISE:Tn.NONE},Tn.angleBetweenOriented=function(t,e,n){var i=Tn.angle(e,t),r=Tn.angle(e,n)-i;return r<=-Math.PI?r+Tn.PI_TIMES_2:r>Math.PI?r-Tn.PI_TIMES_2:r},Rn.PI_TIMES_2.get=function(){return 2*Math.PI},Rn.PI_OVER_2.get=function(){return Math.PI/2},Rn.PI_OVER_4.get=function(){return Math.PI/4},Rn.COUNTERCLOCKWISE.get=function(){return at.COUNTERCLOCKWISE},Rn.CLOCKWISE.get=function(){return at.CLOCKWISE},Rn.NONE.get=function(){return at.COLLINEAR},Object.defineProperties(Tn,Rn);var Pn=function t(){this._maxCurveSegmentError=0,this._filletAngleQuantum=null,this._closingSegLengthFactor=1,this._segList=null,this._distance=0,this._precisionModel=null,this._bufParams=null,this._li=null,this._s0=null,this._s1=null,this._s2=null,this._seg0=new dn,this._seg1=new dn,this._offset0=new dn,this._offset1=new dn,this._side=0,this._hasNarrowConcaveAngle=!1;var e=arguments[0],n=arguments[1],i=arguments[2];this._precisionModel=e,this._bufParams=n,this._li=new rt,this._filletAngleQuantum=Math.PI/2/n.getQuadrantSegments(),n.getQuadrantSegments()>=8&&n.getJoinStyle()===Cn.JOIN_ROUND&&(this._closingSegLengthFactor=t.MAX_CLOSING_SEG_LEN_FACTOR),this.init(i)},Dn={OFFSET_SEGMENT_SEPARATION_FACTOR:{configurable:!0},INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR:{configurable:!0},CURVE_VERTEX_SNAP_DISTANCE_FACTOR:{configurable:!0},MAX_CLOSING_SEG_LEN_FACTOR:{configurable:!0}};Pn.prototype.addNextSegment=function(t,e){if(this._s0=this._s1,this._s1=this._s2,this._s2=t,this._seg0.setCoordinates(this._s0,this._s1),this.computeOffsetSegment(this._seg0,this._side,this._distance,this._offset0),this._seg1.setCoordinates(this._s1,this._s2),this.computeOffsetSegment(this._seg1,this._side,this._distance,this._offset1),this._s1.equals(this._s2))return null;var n=at.computeOrientation(this._s0,this._s1,this._s2),i=n===at.CLOCKWISE&&this._side===Se.LEFT||n===at.COUNTERCLOCKWISE&&this._side===Se.RIGHT;0===n?this.addCollinear(e):i?this.addOutsideTurn(n,e):this.addInsideTurn(n,e)},Pn.prototype.addLineEndCap=function(t,e){var n=new dn(t,e),i=new dn;this.computeOffsetSegment(n,Se.LEFT,this._distance,i);var r=new dn;this.computeOffsetSegment(n,Se.RIGHT,this._distance,r);var o=e.x-t.x,s=e.y-t.y,a=Math.atan2(s,o);switch(this._bufParams.getEndCapStyle()){case Cn.CAP_ROUND:this._segList.addPt(i.p1),this.addFilletArc(e,a+Math.PI/2,a-Math.PI/2,at.CLOCKWISE,this._distance),this._segList.addPt(r.p1);break;case Cn.CAP_FLAT:this._segList.addPt(i.p1),this._segList.addPt(r.p1);break;case Cn.CAP_SQUARE:var u=new C;u.x=Math.abs(this._distance)*Math.cos(a),u.y=Math.abs(this._distance)*Math.sin(a);var l=new C(i.p1.x+u.x,i.p1.y+u.y),c=new C(r.p1.x+u.x,r.p1.y+u.y);this._segList.addPt(l),this._segList.addPt(c)}},Pn.prototype.getCoordinates=function(){return this._segList.getCoordinates()},Pn.prototype.addMitreJoin=function(t,e,n,i){var r=!0,o=null;try{o=k.intersection(e.p0,e.p1,n.p0,n.p1);(i<=0?1:o.distance(t)/Math.abs(i))>this._bufParams.getMitreLimit()&&(r=!1)}catch(t){if(!(t instanceof X))throw t;o=new C(0,0),r=!1}r?this._segList.addPt(o):this.addLimitedMitreJoin(e,n,i,this._bufParams.getMitreLimit())},Pn.prototype.addFilletCorner=function(t,e,n,i,r){var o=e.x-t.x,s=e.y-t.y,a=Math.atan2(s,o),u=n.x-t.x,l=n.y-t.y,c=Math.atan2(l,u);i===at.CLOCKWISE?a<=c&&(a+=2*Math.PI):a>=c&&(a-=2*Math.PI),this._segList.addPt(e),this.addFilletArc(t,a,c,i,r),this._segList.addPt(n)},Pn.prototype.addOutsideTurn=function(t,e){if(this._offset0.p1.distance(this._offset1.p0)<this._distance*Pn.OFFSET_SEGMENT_SEPARATION_FACTOR)return this._segList.addPt(this._offset0.p1),null;this._bufParams.getJoinStyle()===Cn.JOIN_MITRE?this.addMitreJoin(this._s1,this._offset0,this._offset1,this._distance):this._bufParams.getJoinStyle()===Cn.JOIN_BEVEL?this.addBevelJoin(this._offset0,this._offset1):(e&&this._segList.addPt(this._offset0.p1),this.addFilletCorner(this._s1,this._offset0.p1,this._offset1.p0,t,this._distance),this._segList.addPt(this._offset1.p0))},Pn.prototype.createSquare=function(t){this._segList.addPt(new C(t.x+this._distance,t.y+this._distance)),this._segList.addPt(new C(t.x+this._distance,t.y-this._distance)),this._segList.addPt(new C(t.x-this._distance,t.y-this._distance)),this._segList.addPt(new C(t.x-this._distance,t.y+this._distance)),this._segList.closeRing()},Pn.prototype.addSegments=function(t,e){this._segList.addPts(t,e)},Pn.prototype.addFirstSegment=function(){this._segList.addPt(this._offset1.p0)},Pn.prototype.addLastSegment=function(){this._segList.addPt(this._offset1.p1)},Pn.prototype.initSideSegments=function(t,e,n){this._s1=t,this._s2=e,this._side=n,this._seg1.setCoordinates(t,e),this.computeOffsetSegment(this._seg1,n,this._distance,this._offset1)},Pn.prototype.addLimitedMitreJoin=function(t,e,n,i){var r=this._seg0.p1,o=Tn.angle(r,this._seg0.p0),s=Tn.angleBetweenOriented(this._seg0.p0,r,this._seg1.p1)/2,a=Tn.normalize(o+s),u=Tn.normalize(a+Math.PI),l=i*n,c=n-l*Math.abs(Math.sin(s)),p=r.x+l*Math.cos(u),h=r.y+l*Math.sin(u),f=new C(p,h),g=new dn(r,f),d=g.pointAlongOffset(1,c),y=g.pointAlongOffset(1,-c);this._side===Se.LEFT?(this._segList.addPt(d),this._segList.addPt(y)):(this._segList.addPt(y),this._segList.addPt(d))},Pn.prototype.computeOffsetSegment=function(t,e,n,i){var r=e===Se.LEFT?1:-1,o=t.p1.x-t.p0.x,s=t.p1.y-t.p0.y,a=Math.sqrt(o*o+s*s),u=r*n*o/a,l=r*n*s/a;i.p0.x=t.p0.x-l,i.p0.y=t.p0.y+u,i.p1.x=t.p1.x-l,i.p1.y=t.p1.y+u},Pn.prototype.addFilletArc=function(t,e,n,i,r){var o=i===at.CLOCKWISE?-1:1,s=Math.abs(e-n),a=Math.trunc(s/this._filletAngleQuantum+.5);if(a<1)return null;for(var u=s/a,l=0,c=new C;l<s;){var p=e+o*l;c.x=t.x+r*Math.cos(p),c.y=t.y+r*Math.sin(p),this._segList.addPt(c),l+=u}},Pn.prototype.addInsideTurn=function(t,e){if(this._li.computeIntersection(this._offset0.p0,this._offset0.p1,this._offset1.p0,this._offset1.p1),this._li.hasIntersection())this._segList.addPt(this._li.getIntersection(0));else if(this._hasNarrowConcaveAngle=!0,this._offset0.p1.distance(this._offset1.p0)<this._distance*Pn.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR)this._segList.addPt(this._offset0.p1);else{if(this._segList.addPt(this._offset0.p1),this._closingSegLengthFactor>0){var n=new C((this._closingSegLengthFactor*this._offset0.p1.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset0.p1.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(n);var i=new C((this._closingSegLengthFactor*this._offset1.p0.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset1.p0.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(i)}else this._segList.addPt(this._s1);this._segList.addPt(this._offset1.p0)}},Pn.prototype.createCircle=function(t){var e=new C(t.x+this._distance,t.y);this._segList.addPt(e),this.addFilletArc(t,0,2*Math.PI,-1,this._distance),this._segList.closeRing()},Pn.prototype.addBevelJoin=function(t,e){this._segList.addPt(t.p1),this._segList.addPt(e.p0)},Pn.prototype.init=function(t){this._distance=t,this._maxCurveSegmentError=t*(1-Math.cos(this._filletAngleQuantum/2)),this._segList=new wn,this._segList.setPrecisionModel(this._precisionModel),this._segList.setMinimumVertexDistance(t*Pn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)},Pn.prototype.addCollinear=function(t){this._li.computeIntersection(this._s0,this._s1,this._s1,this._s2);this._li.getIntersectionNum()>=2&&(this._bufParams.getJoinStyle()===Cn.JOIN_BEVEL||this._bufParams.getJoinStyle()===Cn.JOIN_MITRE?(t&&this._segList.addPt(this._offset0.p1),this._segList.addPt(this._offset1.p0)):this.addFilletCorner(this._s1,this._offset0.p1,this._offset1.p0,at.CLOCKWISE,this._distance))},Pn.prototype.closeRing=function(){this._segList.closeRing()},Pn.prototype.hasNarrowConcaveAngle=function(){return this._hasNarrowConcaveAngle},Pn.prototype.interfaces_=function(){return[]},Pn.prototype.getClass=function(){return Pn},Dn.OFFSET_SEGMENT_SEPARATION_FACTOR.get=function(){return.001},Dn.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR.get=function(){return.001},Dn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR.get=function(){return 1e-6},Dn.MAX_CLOSING_SEG_LEN_FACTOR.get=function(){return 80},Object.defineProperties(Pn,Dn);var Mn=function(){this._distance=0,this._precisionModel=null,this._bufParams=null;var t=arguments[0],e=arguments[1];this._precisionModel=t,this._bufParams=e};Mn.prototype.getOffsetCurve=function(t,e){if(this._distance=e,0===e)return null;var n=e<0,i=Math.abs(e),r=this.getSegGen(i);t.length<=1?this.computePointCurve(t[0],r):this.computeOffsetCurve(t,n,r);var o=r.getCoordinates();return n&&Lt.reverse(o),o},Mn.prototype.computeSingleSidedBufferCurve=function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){n.addSegments(t,!0);var r=Ln.simplify(t,-i),o=r.length-1;n.initSideSegments(r[o],r[o-1],Se.LEFT),n.addFirstSegment();for(var s=o-2;s>=0;s--)n.addNextSegment(r[s],!0)}else{n.addSegments(t,!1);var a=Ln.simplify(t,i),u=a.length-1;n.initSideSegments(a[0],a[1],Se.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(a[l],!0)}n.addLastSegment(),n.closeRing()},Mn.prototype.computeRingBufferCurve=function(t,e,n){var i=this.simplifyTolerance(this._distance);e===Se.RIGHT&&(i=-i);var r=Ln.simplify(t,i),o=r.length-1;n.initSideSegments(r[o-1],r[0],e);for(var s=1;s<=o;s++){var a=1!==s;n.addNextSegment(r[s],a)}n.closeRing()},Mn.prototype.computeLineBufferCurve=function(t,e){var n=this.simplifyTolerance(this._distance),i=Ln.simplify(t,n),r=i.length-1;e.initSideSegments(i[0],i[1],Se.LEFT);for(var o=2;o<=r;o++)e.addNextSegment(i[o],!0);e.addLastSegment(),e.addLineEndCap(i[r-1],i[r]);var s=Ln.simplify(t,-n),a=s.length-1;e.initSideSegments(s[a],s[a-1],Se.LEFT);for(var u=a-2;u>=0;u--)e.addNextSegment(s[u],!0);e.addLastSegment(),e.addLineEndCap(s[1],s[0]),e.closeRing()},Mn.prototype.computePointCurve=function(t,e){switch(this._bufParams.getEndCapStyle()){case Cn.CAP_ROUND:e.createCircle(t);break;case Cn.CAP_SQUARE:e.createSquare(t)}},Mn.prototype.getLineCurve=function(t,e){if(this._distance=e,e<0&&!this._bufParams.isSingleSided())return null;if(0===e)return null;var n=Math.abs(e),i=this.getSegGen(n);if(t.length<=1)this.computePointCurve(t[0],i);else if(this._bufParams.isSingleSided()){var r=e<0;this.computeSingleSidedBufferCurve(t,r,i)}else this.computeLineBufferCurve(t,i);return i.getCoordinates()},Mn.prototype.getBufferParameters=function(){return this._bufParams},Mn.prototype.simplifyTolerance=function(t){return t*this._bufParams.getSimplifyFactor()},Mn.prototype.getRingCurve=function(t,e,n){if(this._distance=n,t.length<=2)return this.getLineCurve(t,n);if(0===n)return Mn.copyCoordinates(t);var i=this.getSegGen(n);return this.computeRingBufferCurve(t,e,i),i.getCoordinates()},Mn.prototype.computeOffsetCurve=function(t,e,n){var i=this.simplifyTolerance(this._distance);if(e){var r=Ln.simplify(t,-i),o=r.length-1;n.initSideSegments(r[o],r[o-1],Se.LEFT),n.addFirstSegment();for(var s=o-2;s>=0;s--)n.addNextSegment(r[s],!0)}else{var a=Ln.simplify(t,i),u=a.length-1;n.initSideSegments(a[0],a[1],Se.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(a[l],!0)}n.addLastSegment()},Mn.prototype.getSegGen=function(t){return new Pn(this._precisionModel,this._bufParams,t)},Mn.prototype.interfaces_=function(){return[]},Mn.prototype.getClass=function(){return Mn},Mn.copyCoordinates=function(t){for(var e=new Array(t.length).fill(null),n=0;n<e.length;n++)e[n]=new C(t[n]);return e};var An=function(){this._subgraphs=null,this._seg=new dn,this._cga=new at;var t=arguments[0];this._subgraphs=t},Fn={DepthSegment:{configurable:!0}};An.prototype.findStabbedSegments=function(){if(1===arguments.length){for(var t=arguments[0],e=new Nt,n=this._subgraphs.iterator();n.hasNext();){var i=n.next(),r=i.getEnvelope();t.y<r.getMinY()||t.y>r.getMaxY()||this.findStabbedSegments(t,i.getDirectedEdges(),e)}return e}if(3===arguments.length)if(T(arguments[2],xt)&&arguments[0]instanceof C&&arguments[1]instanceof ze)for(var o=arguments[0],s=arguments[1],a=arguments[2],u=s.getEdge().getCoordinates(),l=0;l<u.length-1;l++){this._seg.p0=u[l],this._seg.p1=u[l+1],this._seg.p0.y>this._seg.p1.y&&this._seg.reverse();if(!(Math.max(this._seg.p0.x,this._seg.p1.x)<o.x)&&!(this._seg.isHorizontal()||o.y<this._seg.p0.y||o.y>this._seg.p1.y||at.computeOrientation(this._seg.p0,this._seg.p1,o)===at.RIGHT)){var c=s.getDepth(Se.LEFT);this._seg.p0.equals(u[l])||(c=s.getDepth(Se.RIGHT));var p=new Gn(this._seg,c);a.add(p)}}else if(T(arguments[2],xt)&&arguments[0]instanceof C&&T(arguments[1],xt))for(var h=arguments[0],f=arguments[1],g=arguments[2],d=f.iterator();d.hasNext();){var y=d.next();y.isForward()&&this.findStabbedSegments(h,y,g)}},An.prototype.getDepth=function(t){var e=this.findStabbedSegments(t);if(0===e.size())return 0;return $e.min(e)._leftDepth},An.prototype.interfaces_=function(){return[]},An.prototype.getClass=function(){return An},Fn.DepthSegment.get=function(){return Gn},Object.defineProperties(An,Fn);var Gn=function(){this._upwardSeg=null,this._leftDepth=null;var t=arguments[0],e=arguments[1];this._upwardSeg=new dn(t),this._leftDepth=e};Gn.prototype.compareTo=function(t){var e=t;if(this._upwardSeg.minX()>=e._upwardSeg.maxX())return 1;if(this._upwardSeg.maxX()<=e._upwardSeg.minX())return-1;var n=this._upwardSeg.orientationIndex(e._upwardSeg);return 0!==n?n:0!=(n=-1*e._upwardSeg.orientationIndex(this._upwardSeg))?n:this._upwardSeg.compareTo(e._upwardSeg)},Gn.prototype.compareX=function(t,e){var n=t.p0.compareTo(e.p0);return 0!==n?n:t.p1.compareTo(e.p1)},Gn.prototype.toString=function(){return this._upwardSeg.toString()},Gn.prototype.interfaces_=function(){return[E]},Gn.prototype.getClass=function(){return Gn};var qn=function(t,e,n){this.p0=t||null,this.p1=e||null,this.p2=n||null};qn.prototype.area=function(){return qn.area(this.p0,this.p1,this.p2)},qn.prototype.signedArea=function(){return qn.signedArea(this.p0,this.p1,this.p2)},qn.prototype.interpolateZ=function(t){if(null===t)throw new m(\"Supplied point is null.\");return qn.interpolateZ(t,this.p0,this.p1,this.p2)},qn.prototype.longestSideLength=function(){return qn.longestSideLength(this.p0,this.p1,this.p2)},qn.prototype.isAcute=function(){return qn.isAcute(this.p0,this.p1,this.p2)},qn.prototype.circumcentre=function(){return qn.circumcentre(this.p0,this.p1,this.p2)},qn.prototype.area3D=function(){return qn.area3D(this.p0,this.p1,this.p2)},qn.prototype.centroid=function(){return qn.centroid(this.p0,this.p1,this.p2)},qn.prototype.inCentre=function(){return qn.inCentre(this.p0,this.p1,this.p2)},qn.prototype.interfaces_=function(){return[]},qn.prototype.getClass=function(){return qn},qn.area=function(t,e,n){return Math.abs(((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2)},qn.signedArea=function(t,e,n){return((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2},qn.det=function(t,e,n,i){return t*i-e*n},qn.interpolateZ=function(t,e,n,i){var r=e.x,o=e.y,s=n.x-r,a=i.x-r,u=n.y-o,l=i.y-o,c=s*l-a*u,p=t.x-r,h=t.y-o,f=(l*p-a*h)/c,g=(-u*p+s*h)/c;return e.z+f*(n.z-e.z)+g*(i.z-e.z)},qn.longestSideLength=function(t,e,n){var i=t.distance(e),r=e.distance(n),o=n.distance(t),s=i;return r>s&&(s=r),o>s&&(s=o),s},qn.isAcute=function(t,e,n){return!!Tn.isAcute(t,e,n)&&(!!Tn.isAcute(e,n,t)&&!!Tn.isAcute(n,t,e))},qn.circumcentre=function(t,e,n){var i=n.x,r=n.y,o=t.x-i,s=t.y-r,a=e.x-i,u=e.y-r,l=2*qn.det(o,s,a,u),c=qn.det(s,o*o+s*s,u,a*a+u*u),p=qn.det(o,o*o+s*s,a,a*a+u*u);return new C(i-c/l,r+p/l)},qn.perpendicularBisector=function(t,e){var n=e.x-t.x,i=e.y-t.y,r=new k(t.x+n/2,t.y+i/2,1),o=new k(t.x-i+n/2,t.y+n+i/2,1);return new k(r,o)},qn.angleBisector=function(t,e,n){var i=e.distance(t),r=i/(i+e.distance(n)),o=n.x-t.x,s=n.y-t.y;return new C(t.x+r*o,t.y+r*s)},qn.area3D=function(t,e,n){var i=e.x-t.x,r=e.y-t.y,o=e.z-t.z,s=n.x-t.x,a=n.y-t.y,u=n.z-t.z,l=r*u-o*a,c=o*s-i*u,p=i*a-r*s,h=l*l+c*c+p*p,f=Math.sqrt(h)/2;return f},qn.centroid=function(t,e,n){var i=(t.x+e.x+n.x)/3,r=(t.y+e.y+n.y)/3;return new C(i,r)},qn.inCentre=function(t,e,n){var i=e.distance(n),r=t.distance(n),o=t.distance(e),s=i+r+o,a=(i*t.x+r*e.x+o*n.x)/s,u=(i*t.y+r*e.y+o*n.y)/s;return new C(a,u)};var Bn=function(){this._inputGeom=null,this._distance=null,this._curveBuilder=null,this._curveList=new Nt;var t=arguments[0],e=arguments[1],n=arguments[2];this._inputGeom=t,this._distance=e,this._curveBuilder=n};Bn.prototype.addPoint=function(t){if(this._distance<=0)return null;var e=t.getCoordinates(),n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,w.EXTERIOR,w.INTERIOR)},Bn.prototype.addPolygon=function(t){var e=this._distance,n=Se.LEFT;this._distance<0&&(e=-this._distance,n=Se.RIGHT);var i=t.getExteriorRing(),r=Lt.removeRepeatedPoints(i.getCoordinates());if(this._distance<0&&this.isErodedCompletely(i,this._distance))return null;if(this._distance<=0&&r.length<3)return null;this.addPolygonRing(r,e,n,w.EXTERIOR,w.INTERIOR);for(var o=0;o<t.getNumInteriorRing();o++){var s=t.getInteriorRingN(o),a=Lt.removeRepeatedPoints(s.getCoordinates());this._distance>0&&this.isErodedCompletely(s,-this._distance)||this.addPolygonRing(a,e,Se.opposite(n),w.INTERIOR,w.EXTERIOR)}},Bn.prototype.isTriangleErodedCompletely=function(t,e){var n=new qn(t[0],t[1],t[2]),i=n.inCentre();return at.distancePointLine(i,n.p0,n.p1)<Math.abs(e)},Bn.prototype.addLineString=function(t){if(this._distance<=0&&!this._curveBuilder.getBufferParameters().isSingleSided())return null;var e=Lt.removeRepeatedPoints(t.getCoordinates()),n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,w.EXTERIOR,w.INTERIOR)},Bn.prototype.addCurve=function(t,e,n){if(null===t||t.length<2)return null;var i=new gn(t,new Pe(0,w.BOUNDARY,e,n));this._curveList.add(i)},Bn.prototype.getCurves=function(){return this.add(this._inputGeom),this._curveList},Bn.prototype.addPolygonRing=function(t,e,n,i,r){if(0===e&&t.length<ee.MINIMUM_VALID_SIZE)return null;var o=i,s=r;t.length>=ee.MINIMUM_VALID_SIZE&&at.isCCW(t)&&(o=r,s=i,n=Se.opposite(n));var a=this._curveBuilder.getRingCurve(t,n,e);this.addCurve(a,o,s)},Bn.prototype.add=function(t){if(t.isEmpty())return null;t instanceof $t?this.addPolygon(t):t instanceof Kt?this.addLineString(t):t instanceof Qt?this.addPoint(t):t instanceof te?this.addCollection(t):t instanceof Xt?this.addCollection(t):t instanceof ne?this.addCollection(t):t instanceof zt&&this.addCollection(t)},Bn.prototype.isErodedCompletely=function(t,e){var n=t.getCoordinates();if(n.length<4)return e<0;if(4===n.length)return this.isTriangleErodedCompletely(n,e);var i=t.getEnvelopeInternal(),r=Math.min(i.getHeight(),i.getWidth());return e<0&&2*Math.abs(e)>r},Bn.prototype.addCollection=function(t){for(var e=0;e<t.getNumGeometries();e++){var n=t.getGeometryN(e);this.add(n)}},Bn.prototype.interfaces_=function(){return[]},Bn.prototype.getClass=function(){return Bn};var Vn=function(){};Vn.prototype.locate=function(t){},Vn.prototype.interfaces_=function(){return[]},Vn.prototype.getClass=function(){return Vn};var Un=function(){this._parent=null,this._atStart=null,this._max=null,this._index=null,this._subcollectionIterator=null;var t=arguments[0];this._parent=t,this._atStart=!0,this._index=0,this._max=t.getNumGeometries()};Un.prototype.next=function(){if(this._atStart)return this._atStart=!1,Un.isAtomic(this._parent)&&this._index++,this._parent;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return this._subcollectionIterator.next();this._subcollectionIterator=null}if(this._index>=this._max)throw new i;var t=this._parent.getGeometryN(this._index++);return t instanceof zt?(this._subcollectionIterator=new Un(t),this._subcollectionIterator.next()):t},Un.prototype.remove=function(){throw new Error(this.getClass().getName())},Un.prototype.hasNext=function(){if(this._atStart)return!0;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)},Un.prototype.interfaces_=function(){return[Et]},Un.prototype.getClass=function(){return Un},Un.isAtomic=function(t){return!(t instanceof zt)};var zn=function(){this._geom=null;var t=arguments[0];this._geom=t};zn.prototype.locate=function(t){return zn.locate(t,this._geom)},zn.prototype.interfaces_=function(){return[Vn]},zn.prototype.getClass=function(){return zn},zn.isPointInRing=function(t,e){return!!e.getEnvelopeInternal().intersects(t)&&at.isPointInRing(t,e.getCoordinates())},zn.containsPointInPolygon=function(t,e){if(e.isEmpty())return!1;var n=e.getExteriorRing();if(!zn.isPointInRing(t,n))return!1;for(var i=0;i<e.getNumInteriorRing();i++){var r=e.getInteriorRingN(i);if(zn.isPointInRing(t,r))return!1}return!0},zn.containsPoint=function(t,e){if(e instanceof $t)return zn.containsPointInPolygon(t,e);if(e instanceof zt)for(var n=new Un(e);n.hasNext();){var i=n.next();if(i!==e&&zn.containsPoint(t,i))return!0}return!1},zn.locate=function(t,e){return e.isEmpty()?w.EXTERIOR:zn.containsPoint(t,e)?w.INTERIOR:w.EXTERIOR};var Xn=function(){this._edgeMap=new p,this._edgeList=null,this._ptInAreaLocation=[w.NONE,w.NONE]};Xn.prototype.getNextCW=function(t){this.getEdges();var e=this._edgeList.indexOf(t),n=e-1;return 0===e&&(n=this._edgeList.size()-1),this._edgeList.get(n)},Xn.prototype.propagateSideLabels=function(t){for(var e=w.NONE,n=this.iterator();n.hasNext();){var i=n.next().getLabel();i.isArea(t)&&i.getLocation(t,Se.LEFT)!==w.NONE&&(e=i.getLocation(t,Se.LEFT))}if(e===w.NONE)return null;for(var r=e,o=this.iterator();o.hasNext();){var s=o.next(),a=s.getLabel();if(a.getLocation(t,Se.ON)===w.NONE&&a.setLocation(t,Se.ON,r),a.isArea(t)){var u=a.getLocation(t,Se.LEFT),l=a.getLocation(t,Se.RIGHT);if(l!==w.NONE){if(l!==r)throw new we(\"side location conflict\",s.getCoordinate());u===w.NONE&&et.shouldNeverReachHere(\"found single null side (at \"+s.getCoordinate()+\")\"),r=u}else et.isTrue(a.getLocation(t,Se.LEFT)===w.NONE,\"found single null side\"),a.setLocation(t,Se.RIGHT,r),a.setLocation(t,Se.LEFT,r)}}},Xn.prototype.getCoordinate=function(){var t=this.iterator();if(!t.hasNext())return null;return t.next().getCoordinate()},Xn.prototype.print=function(t){Y.out.println(\"EdgeEndStar:   \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){e.next().print(t)}},Xn.prototype.isAreaLabelsConsistent=function(t){return this.computeEdgeEndLabels(t.getBoundaryNodeRule()),this.checkAreaLabelsConsistent(0)},Xn.prototype.checkAreaLabelsConsistent=function(t){var e=this.getEdges();if(e.size()<=0)return!0;var n=e.size()-1,i=e.get(n).getLabel().getLocation(t,Se.LEFT);et.isTrue(i!==w.NONE,\"Found unlabelled area edge\");for(var r=i,o=this.iterator();o.hasNext();){var s=o.next().getLabel();et.isTrue(s.isArea(t),\"Found non-area edge\");var a=s.getLocation(t,Se.LEFT),u=s.getLocation(t,Se.RIGHT);if(a===u)return!1;if(u!==r)return!1;r=a}return!0},Xn.prototype.findIndex=function(t){this.iterator();for(var e=0;e<this._edgeList.size();e++){if(this._edgeList.get(e)===t)return e}return-1},Xn.prototype.iterator=function(){return this.getEdges().iterator()},Xn.prototype.getEdges=function(){return null===this._edgeList&&(this._edgeList=new Nt(this._edgeMap.values())),this._edgeList},Xn.prototype.getLocation=function(t,e,n){return this._ptInAreaLocation[t]===w.NONE&&(this._ptInAreaLocation[t]=zn.locate(e,n[t].getGeometry())),this._ptInAreaLocation[t]},Xn.prototype.toString=function(){var t=new D;t.append(\"EdgeEndStar:   \"+this.getCoordinate()),t.append(\"\\n\");for(var e=this.iterator();e.hasNext();){var n=e.next();t.append(n),t.append(\"\\n\")}return t.toString()},Xn.prototype.computeEdgeEndLabels=function(t){for(var e=this.iterator();e.hasNext();){e.next().computeLabel(t)}},Xn.prototype.computeLabelling=function(t){this.computeEdgeEndLabels(t[0].getBoundaryNodeRule()),this.propagateSideLabels(0),this.propagateSideLabels(1);for(var e=[!1,!1],n=this.iterator();n.hasNext();)for(var i=n.next().getLabel(),r=0;r<2;r++)i.isLine(r)&&i.getLocation(r)===w.BOUNDARY&&(e[r]=!0);for(var o=this.iterator();o.hasNext();)for(var s=o.next(),a=s.getLabel(),u=0;u<2;u++)if(a.isAnyNull(u)){var l=w.NONE;if(e[u])l=w.EXTERIOR;else{var c=s.getCoordinate();l=this.getLocation(u,c,t)}a.setAllLocationsIfNull(u,l)}},Xn.prototype.getDegree=function(){return this._edgeMap.size()},Xn.prototype.insertEdgeEnd=function(t,e){this._edgeMap.put(t,e),this._edgeList=null},Xn.prototype.interfaces_=function(){return[]},Xn.prototype.getClass=function(){return Xn};var Yn=function(t){function e(){t.call(this),this._resultAreaEdgeList=null,this._label=null,this._SCANNING_FOR_INCOMING=1,this._LINKING_TO_OUTGOING=2}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.linkResultDirectedEdges=function(){this.getResultAreaEdges();for(var t=null,e=null,n=this._SCANNING_FOR_INCOMING,i=0;i<this._resultAreaEdgeList.size();i++){var r=this._resultAreaEdgeList.get(i),o=r.getSym();if(r.getLabel().isArea())switch(null===t&&r.isInResult()&&(t=r),n){case this._SCANNING_FOR_INCOMING:if(!o.isInResult())continue;e=o,n=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(!r.isInResult())continue;e.setNext(r),n=this._SCANNING_FOR_INCOMING}}if(n===this._LINKING_TO_OUTGOING){if(null===t)throw new we(\"no outgoing dirEdge found\",this.getCoordinate());et.isTrue(t.isInResult(),\"unable to link last incoming dirEdge\"),e.setNext(t)}},e.prototype.insert=function(t){var e=t;this.insertEdgeEnd(e,e)},e.prototype.getRightmostEdge=function(){var t=this.getEdges(),e=t.size();if(e<1)return null;var n=t.get(0);if(1===e)return n;var i=t.get(e-1),r=n.getQuadrant(),o=i.getQuadrant();return Be.isNorthern(r)&&Be.isNorthern(o)?n:Be.isNorthern(r)||Be.isNorthern(o)?0!==n.getDy()?n:0!==i.getDy()?i:(et.shouldNeverReachHere(\"found two horizontal edges incident on node\"),null):i},e.prototype.print=function(t){Y.out.println(\"DirectedEdgeStar: \"+this.getCoordinate());for(var e=this.iterator();e.hasNext();){var n=e.next();t.print(\"out \"),n.print(t),t.println(),t.print(\"in \"),n.getSym().print(t),t.println()}},e.prototype.getResultAreaEdges=function(){if(null!==this._resultAreaEdgeList)return this._resultAreaEdgeList;this._resultAreaEdgeList=new Nt;for(var t=this.iterator();t.hasNext();){var e=t.next();(e.isInResult()||e.getSym().isInResult())&&this._resultAreaEdgeList.add(e)}return this._resultAreaEdgeList},e.prototype.updateLabelling=function(t){for(var e=this.iterator();e.hasNext();){var n=e.next().getLabel();n.setAllLocationsIfNull(0,t.getLocation(0)),n.setAllLocationsIfNull(1,t.getLocation(1))}},e.prototype.linkAllDirectedEdges=function(){this.getEdges();for(var t=null,e=null,n=this._edgeList.size()-1;n>=0;n--){var i=this._edgeList.get(n),r=i.getSym();null===e&&(e=r),null!==t&&r.setNext(t),t=i}e.setNext(t)},e.prototype.computeDepths=function(){if(1===arguments.length){var t=arguments[0],e=this.findIndex(t),n=t.getDepth(Se.LEFT),i=t.getDepth(Se.RIGHT),r=this.computeDepths(e+1,this._edgeList.size(),n);if(this.computeDepths(0,e,r)!==i)throw new we(\"depth mismatch at \"+t.getCoordinate())}else if(3===arguments.length){for(var o=arguments[0],s=arguments[1],a=arguments[2],u=o;u<s;u++){var l=this._edgeList.get(u);l.setEdgeDepths(Se.RIGHT,a),a=l.getDepth(Se.LEFT)}return a}},e.prototype.mergeSymLabels=function(){for(var t=this.iterator();t.hasNext();){var e=t.next();e.getLabel().merge(e.getSym().getLabel())}},e.prototype.linkMinimalDirectedEdges=function(t){for(var e=null,n=null,i=this._SCANNING_FOR_INCOMING,r=this._resultAreaEdgeList.size()-1;r>=0;r--){var o=this._resultAreaEdgeList.get(r),s=o.getSym();switch(null===e&&o.getEdgeRing()===t&&(e=o),i){case this._SCANNING_FOR_INCOMING:if(s.getEdgeRing()!==t)continue;n=s,i=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(o.getEdgeRing()!==t)continue;n.setNextMin(o),i=this._SCANNING_FOR_INCOMING}}i===this._LINKING_TO_OUTGOING&&(et.isTrue(null!==e,\"found null for first outgoing dirEdge\"),et.isTrue(e.getEdgeRing()===t,\"unable to link last incoming dirEdge\"),n.setNextMin(e))},e.prototype.getOutgoingDegree=function(){if(0===arguments.length){for(var t=0,e=this.iterator();e.hasNext();){e.next().isInResult()&&t++}return t}if(1===arguments.length){for(var n=arguments[0],i=0,r=this.iterator();r.hasNext();){r.next().getEdgeRing()===n&&i++}return i}},e.prototype.getLabel=function(){return this._label},e.prototype.findCoveredLineEdges=function(){for(var t=w.NONE,e=this.iterator();e.hasNext();){var n=e.next(),i=n.getSym();if(!n.isLineEdge()){if(n.isInResult()){t=w.INTERIOR;break}if(i.isInResult()){t=w.EXTERIOR;break}}}if(t===w.NONE)return null;for(var r=t,o=this.iterator();o.hasNext();){var s=o.next(),a=s.getSym();s.isLineEdge()?s.getEdge().setCovered(r===w.INTERIOR):(s.isInResult()&&(r=w.EXTERIOR),a.isInResult()&&(r=w.INTERIOR))}},e.prototype.computeLabelling=function(e){t.prototype.computeLabelling.call(this,e),this._label=new Pe(w.NONE);for(var n=this.iterator();n.hasNext();)for(var i=n.next().getEdge().getLabel(),r=0;r<2;r++){var o=i.getLocation(r);o!==w.INTERIOR&&o!==w.BOUNDARY||this._label.setLocation(r,w.INTERIOR)}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Xn),kn=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createNode=function(t){return new Ge(t,new Yn)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Xe),jn=function t(){this._pts=null,this._orientation=null;var e=arguments[0];this._pts=e,this._orientation=t.orientation(e)};jn.prototype.compareTo=function(t){var e=t;return jn.compareOriented(this._pts,this._orientation,e._pts,e._orientation)},jn.prototype.interfaces_=function(){return[E]},jn.prototype.getClass=function(){return jn},jn.orientation=function(t){return 1===Lt.increasingDirection(t)},jn.compareOriented=function(t,e,n,i){for(var r=e?1:-1,o=i?1:-1,s=e?t.length:-1,a=i?n.length:-1,u=e?0:t.length-1,l=i?0:n.length-1;;){var c=t[u].compareTo(n[l]);if(0!==c)return c;var p=(u+=r)===s,h=(l+=o)===a;if(p&&!h)return-1;if(!p&&h)return 1;if(p&&h)return 0}};var Hn=function(){this._edges=new Nt,this._ocaMap=new p};Hn.prototype.print=function(t){t.print(\"MULTILINESTRING ( \");for(var e=0;e<this._edges.size();e++){var n=this._edges.get(e);e>0&&t.print(\",\"),t.print(\"(\");for(var i=n.getCoordinates(),r=0;r<i.length;r++)r>0&&t.print(\",\"),t.print(i[r].x+\" \"+i[r].y);t.println(\")\")}t.print(\")  \")},Hn.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next())},Hn.prototype.findEdgeIndex=function(t){for(var e=0;e<this._edges.size();e++)if(this._edges.get(e).equals(t))return e;return-1},Hn.prototype.iterator=function(){return this._edges.iterator()},Hn.prototype.getEdges=function(){return this._edges},Hn.prototype.get=function(t){return this._edges.get(t)},Hn.prototype.findEqualEdge=function(t){var e=new jn(t.getCoordinates());return this._ocaMap.get(e)},Hn.prototype.add=function(t){this._edges.add(t);var e=new jn(t.getCoordinates());this._ocaMap.put(e,t)},Hn.prototype.interfaces_=function(){return[]},Hn.prototype.getClass=function(){return Hn};var Wn=function(){};Wn.prototype.processIntersections=function(t,e,n,i){},Wn.prototype.isDone=function(){},Wn.prototype.interfaces_=function(){return[]},Wn.prototype.getClass=function(){return Wn};var Kn=function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._hasInterior=!1,this._properIntersectionPoint=null,this._li=null,this._isSelfIntersection=null,this.numIntersections=0,this.numInteriorIntersections=0,this.numProperIntersections=0,this.numTests=0;var t=arguments[0];this._li=t};Kn.prototype.isTrivialIntersection=function(t,e,n,i){if(t===n&&1===this._li.getIntersectionNum()){if(Kn.isAdjacentSegments(e,i))return!0;if(t.isClosed()){var r=t.size()-1;if(0===e&&i===r||0===i&&e===r)return!0}}return!1},Kn.prototype.getProperIntersectionPoint=function(){return this._properIntersectionPoint},Kn.prototype.hasProperInteriorIntersection=function(){return this._hasProperInterior},Kn.prototype.getLineIntersector=function(){return this._li},Kn.prototype.hasProperIntersection=function(){return this._hasProper},Kn.prototype.processIntersections=function(t,e,n,i){if(t===n&&e===i)return null;this.numTests++;var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&(this.numIntersections++,this._li.isInteriorIntersection()&&(this.numInteriorIntersections++,this._hasInterior=!0),this.isTrivialIntersection(t,e,n,i)||(this._hasIntersection=!0,t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1),this._li.isProper()&&(this.numProperIntersections++,this._hasProper=!0,this._hasProperInterior=!0)))},Kn.prototype.hasIntersection=function(){return this._hasIntersection},Kn.prototype.isDone=function(){return!1},Kn.prototype.hasInteriorIntersection=function(){return this._hasInterior},Kn.prototype.interfaces_=function(){return[Wn]},Kn.prototype.getClass=function(){return Kn},Kn.isAdjacentSegments=function(t,e){return 1===Math.abs(t-e)};var Jn=function(){this.coord=null,this.segmentIndex=null,this.dist=null;var t=arguments[0],e=arguments[1],n=arguments[2];this.coord=new C(t),this.segmentIndex=e,this.dist=n};Jn.prototype.getSegmentIndex=function(){return this.segmentIndex},Jn.prototype.getCoordinate=function(){return this.coord},Jn.prototype.print=function(t){t.print(this.coord),t.print(\" seg # = \"+this.segmentIndex),t.println(\" dist = \"+this.dist)},Jn.prototype.compareTo=function(t){var e=t;return this.compare(e.segmentIndex,e.dist)},Jn.prototype.isEndPoint=function(t){return 0===this.segmentIndex&&0===this.dist||this.segmentIndex===t},Jn.prototype.toString=function(){return this.coord+\" seg # = \"+this.segmentIndex+\" dist = \"+this.dist},Jn.prototype.getDistance=function(){return this.dist},Jn.prototype.compare=function(t,e){return this.segmentIndex<t?-1:this.segmentIndex>t?1:this.dist<e?-1:this.dist>e?1:0},Jn.prototype.interfaces_=function(){return[E]},Jn.prototype.getClass=function(){return Jn};var Qn=function(){this._nodeMap=new p,this.edge=null;var t=arguments[0];this.edge=t};Qn.prototype.print=function(t){t.println(\"Intersections:\");for(var e=this.iterator();e.hasNext();){e.next().print(t)}},Qn.prototype.iterator=function(){return this._nodeMap.values().iterator()},Qn.prototype.addSplitEdges=function(t){this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var i=e.next(),r=this.createSplitEdge(n,i);t.add(r),n=i}},Qn.prototype.addEndpoints=function(){var t=this.edge.pts.length-1;this.add(this.edge.pts[0],0,0),this.add(this.edge.pts[t],t,0)},Qn.prototype.createSplitEdge=function(t,e){var n=e.segmentIndex-t.segmentIndex+2,i=this.edge.pts[e.segmentIndex],r=e.dist>0||!e.coord.equals2D(i);r||n--;var o=new Array(n).fill(null),s=0;o[s++]=new C(t.coord);for(var a=t.segmentIndex+1;a<=e.segmentIndex;a++)o[s++]=this.edge.pts[a];return r&&(o[s]=e.coord),new ni(o,new Pe(this.edge._label))},Qn.prototype.add=function(t,e,n){var i=new Jn(t,e,n),r=this._nodeMap.get(i);return null!==r?r:(this._nodeMap.put(i,i),i)},Qn.prototype.isIntersection=function(t){for(var e=this.iterator();e.hasNext();){if(e.next().coord.equals(t))return!0}return!1},Qn.prototype.interfaces_=function(){return[]},Qn.prototype.getClass=function(){return Qn};var Zn=function(){};Zn.prototype.getChainStartIndices=function(t){var e=0,n=new Nt;n.add(new M(e));do{var i=this.findChainEnd(t,e);n.add(new M(i)),e=i}while(e<t.length-1);return Zn.toIntArray(n)},Zn.prototype.findChainEnd=function(t,e){for(var n=Be.quadrant(t[e],t[e+1]),i=e+1;i<t.length;){if(Be.quadrant(t[i-1],t[i])!==n)break;i++}return i-1},Zn.prototype.interfaces_=function(){return[]},Zn.prototype.getClass=function(){return Zn},Zn.toIntArray=function(t){for(var e=new Array(t.size()).fill(null),n=0;n<e.length;n++)e[n]=t.get(n).intValue();return e};var $n=function(){this.e=null,this.pts=null,this.startIndex=null,this.env1=new j,this.env2=new j;var t=arguments[0];this.e=t,this.pts=t.getCoordinates();var e=new Zn;this.startIndex=e.getChainStartIndices(this.pts)};$n.prototype.getCoordinates=function(){return this.pts},$n.prototype.getMaxX=function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e>n?e:n},$n.prototype.getMinX=function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e<n?e:n},$n.prototype.computeIntersectsForChain=function(){if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],i=arguments[3];this.computeIntersectsForChain(this.startIndex[t],this.startIndex[t+1],e,e.startIndex[n],e.startIndex[n+1],i)}else if(6===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3],u=arguments[4],l=arguments[5],c=this.pts[r],p=this.pts[o],h=s.pts[a],f=s.pts[u];if(o-r==1&&u-a==1)return l.addIntersections(this.e,r,s.e,a),null;if(this.env1.init(c,p),this.env2.init(h,f),!this.env1.intersects(this.env2))return null;var g=Math.trunc((r+o)/2),d=Math.trunc((a+u)/2);r<g&&(a<d&&this.computeIntersectsForChain(r,g,s,a,d,l),d<u&&this.computeIntersectsForChain(r,g,s,d,u,l)),g<o&&(a<d&&this.computeIntersectsForChain(g,o,s,a,d,l),d<u&&this.computeIntersectsForChain(g,o,s,d,u,l))}},$n.prototype.getStartIndexes=function(){return this.startIndex},$n.prototype.computeIntersects=function(t,e){for(var n=0;n<this.startIndex.length-1;n++)for(var i=0;i<t.startIndex.length-1;i++)this.computeIntersectsForChain(n,t,i,e)},$n.prototype.interfaces_=function(){return[]},$n.prototype.getClass=function(){return $n};var ti=function t(){this._depth=Array(2).fill().map(function(){return Array(3)});for(var e=0;e<2;e++)for(var n=0;n<3;n++)this._depth[e][n]=t.NULL_VALUE},ei={NULL_VALUE:{configurable:!0}};ti.prototype.getDepth=function(t,e){return this._depth[t][e]},ti.prototype.setDepth=function(t,e,n){this._depth[t][e]=n},ti.prototype.isNull=function(){if(0===arguments.length){for(var t=0;t<2;t++)for(var e=0;e<3;e++)if(this._depth[t][e]!==ti.NULL_VALUE)return!1;return!0}if(1===arguments.length){var n=arguments[0];return this._depth[n][1]===ti.NULL_VALUE}if(2===arguments.length){var i=arguments[0],r=arguments[1];return this._depth[i][r]===ti.NULL_VALUE}},ti.prototype.normalize=function(){for(var t=0;t<2;t++)if(!this.isNull(t)){var e=this._depth[t][1];this._depth[t][2]<e&&(e=this._depth[t][2]),e<0&&(e=0);for(var n=1;n<3;n++){var i=0;this._depth[t][n]>e&&(i=1),this._depth[t][n]=i}}},ti.prototype.getDelta=function(t){return this._depth[t][Se.RIGHT]-this._depth[t][Se.LEFT]},ti.prototype.getLocation=function(t,e){return this._depth[t][e]<=0?w.EXTERIOR:w.INTERIOR},ti.prototype.toString=function(){return\"A: \"+this._depth[0][1]+\",\"+this._depth[0][2]+\" B: \"+this._depth[1][1]+\",\"+this._depth[1][2]},ti.prototype.add=function(){if(1===arguments.length)for(var t=arguments[0],e=0;e<2;e++)for(var n=1;n<3;n++){var i=t.getLocation(e,n);i!==w.EXTERIOR&&i!==w.INTERIOR||(this.isNull(e,n)?this._depth[e][n]=ti.depthAtLocation(i):this._depth[e][n]+=ti.depthAtLocation(i))}else if(3===arguments.length){var r=arguments[0],o=arguments[1];arguments[2]===w.INTERIOR&&this._depth[r][o]++}},ti.prototype.interfaces_=function(){return[]},ti.prototype.getClass=function(){return ti},ti.depthAtLocation=function(t){return t===w.EXTERIOR?0:t===w.INTERIOR?1:ti.NULL_VALUE},ei.NULL_VALUE.get=function(){return-1},Object.defineProperties(ti,ei);var ni=function(t){function e(){if(t.call(this),this.pts=null,this._env=null,this.eiList=new Qn(this),this._name=null,this._mce=null,this._isIsolated=!0,this._depth=new ti,this._depthDelta=0,1===arguments.length){var n=arguments[0];e.call(this,n,null)}else if(2===arguments.length){var i=arguments[0],r=arguments[1];this.pts=i,this._label=r}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDepth=function(){return this._depth},e.prototype.getCollapsedEdge=function(){var t=new Array(2).fill(null);t[0]=this.pts[0],t[1]=this.pts[1];return new e(t,Pe.toLineLabel(this._label))},e.prototype.isIsolated=function(){return this._isIsolated},e.prototype.getCoordinates=function(){return this.pts},e.prototype.setIsolated=function(t){this._isIsolated=t},e.prototype.setName=function(t){this._name=t},e.prototype.equals=function(t){if(!(t instanceof e))return!1;var n=t;if(this.pts.length!==n.pts.length)return!1;for(var i=!0,r=!0,o=this.pts.length,s=0;s<this.pts.length;s++)if(this.pts[s].equals2D(n.pts[s])||(i=!1),this.pts[s].equals2D(n.pts[--o])||(r=!1),!i&&!r)return!1;return!0},e.prototype.getCoordinate=function(){if(0===arguments.length)return this.pts.length>0?this.pts[0]:null;if(1===arguments.length){var t=arguments[0];return this.pts[t]}},e.prototype.print=function(t){t.print(\"edge \"+this._name+\": \"),t.print(\"LINESTRING (\");for(var e=0;e<this.pts.length;e++)e>0&&t.print(\",\"),t.print(this.pts[e].x+\" \"+this.pts[e].y);t.print(\")  \"+this._label+\" \"+this._depthDelta)},e.prototype.computeIM=function(t){e.updateIM(this._label,t)},e.prototype.isCollapsed=function(){return!!this._label.isArea()&&(3===this.pts.length&&!!this.pts[0].equals(this.pts[2]))},e.prototype.isClosed=function(){return this.pts[0].equals(this.pts[this.pts.length-1])},e.prototype.getMaximumSegmentIndex=function(){return this.pts.length-1},e.prototype.getDepthDelta=function(){return this._depthDelta},e.prototype.getNumPoints=function(){return this.pts.length},e.prototype.printReverse=function(t){t.print(\"edge \"+this._name+\": \");for(var e=this.pts.length-1;e>=0;e--)t.print(this.pts[e]+\" \");t.println(\"\")},e.prototype.getMonotoneChainEdge=function(){return null===this._mce&&(this._mce=new $n(this)),this._mce},e.prototype.getEnvelope=function(){if(null===this._env){this._env=new j;for(var t=0;t<this.pts.length;t++)this._env.expandToInclude(this.pts[t])}return this._env},e.prototype.addIntersection=function(t,e,n,i){var r=new C(t.getIntersection(i)),o=e,s=t.getEdgeDistance(n,i),a=o+1;if(a<this.pts.length){var u=this.pts[a];r.equals2D(u)&&(o=a,s=0)}this.eiList.add(r,o,s)},e.prototype.toString=function(){var t=new D;t.append(\"edge \"+this._name+\": \"),t.append(\"LINESTRING (\");for(var e=0;e<this.pts.length;e++)e>0&&t.append(\",\"),t.append(this.pts[e].x+\" \"+this.pts[e].y);return t.append(\")  \"+this._label+\" \"+this._depthDelta),t.toString()},e.prototype.isPointwiseEqual=function(t){if(this.pts.length!==t.pts.length)return!1;for(var e=0;e<this.pts.length;e++)if(!this.pts[e].equals2D(t.pts[e]))return!1;return!0},e.prototype.setDepthDelta=function(t){this._depthDelta=t},e.prototype.getEdgeIntersectionList=function(){return this.eiList},e.prototype.addIntersections=function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++)this.addIntersection(t,e,n,i)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.updateIM=function(){if(2!==arguments.length)return t.prototype.updateIM.apply(this,arguments);var e=arguments[0],n=arguments[1];n.setAtLeastIfValid(e.getLocation(0,Se.ON),e.getLocation(1,Se.ON),1),e.isArea()&&(n.setAtLeastIfValid(e.getLocation(0,Se.LEFT),e.getLocation(1,Se.LEFT),2),n.setAtLeastIfValid(e.getLocation(0,Se.RIGHT),e.getLocation(1,Se.RIGHT),2))},e}(Fe),ii=function(t){this._workingPrecisionModel=null,this._workingNoder=null,this._geomFact=null,this._graph=null,this._edgeList=new Hn,this._bufParams=t||null};ii.prototype.setWorkingPrecisionModel=function(t){this._workingPrecisionModel=t},ii.prototype.insertUniqueEdge=function(t){var e=this._edgeList.findEqualEdge(t);if(null!==e){var n=e.getLabel(),i=t.getLabel();e.isPointwiseEqual(t)||(i=new Pe(t.getLabel())).flip(),n.merge(i);var r=ii.depthDelta(i),o=e.getDepthDelta()+r;e.setDepthDelta(o)}else this._edgeList.add(t),t.setDepthDelta(ii.depthDelta(t.getLabel()))},ii.prototype.buildSubgraphs=function(t,e){for(var n=new Nt,i=t.iterator();i.hasNext();){var r=i.next(),o=r.getRightmostCoordinate(),s=new An(n).getDepth(o);r.computeDepth(s),r.findResultEdges(),n.add(r),e.add(r.getDirectedEdges(),r.getNodes())}},ii.prototype.createSubgraphs=function(t){for(var e=new Nt,n=t.getNodes().iterator();n.hasNext();){var i=n.next();if(!i.isVisited()){var r=new Te;r.create(i),e.add(r)}}return $e.sort(e,$e.reverseOrder()),e},ii.prototype.createEmptyResultGeometry=function(){return this._geomFact.createPolygon()},ii.prototype.getNoder=function(t){if(null!==this._workingNoder)return this._workingNoder;var e=new xn,n=new rt;return n.setPrecisionModel(t),e.setSegmentIntersector(new Kn(n)),e},ii.prototype.buffer=function(t,e){var n=this._workingPrecisionModel;null===n&&(n=t.getPrecisionModel()),this._geomFact=t.getFactory();var i=new Mn(n,this._bufParams),r=new Bn(t,e,i).getCurves();if(r.size()<=0)return this.createEmptyResultGeometry();this.computeNodedEdges(r,n),this._graph=new Ye(new kn),this._graph.addEdges(this._edgeList.getEdges());var o=this.createSubgraphs(this._graph),s=new ke(this._geomFact);this.buildSubgraphs(o,s);var a=s.getPolygons();if(a.size()<=0)return this.createEmptyResultGeometry();return this._geomFact.buildGeometry(a)},ii.prototype.computeNodedEdges=function(t,e){var n=this.getNoder(e);n.computeNodes(t);for(var i=n.getNodedSubstrings().iterator();i.hasNext();){var r=i.next(),o=r.getCoordinates();if(2!==o.length||!o[0].equals2D(o[1])){var s=r.getData(),a=new ni(r.getCoordinates(),new Pe(s));this.insertUniqueEdge(a)}}},ii.prototype.setNoder=function(t){this._workingNoder=t},ii.prototype.interfaces_=function(){return[]},ii.prototype.getClass=function(){return ii},ii.depthDelta=function(t){var e=t.getLocation(0,Se.LEFT),n=t.getLocation(0,Se.RIGHT);return e===w.INTERIOR&&n===w.EXTERIOR?1:e===w.EXTERIOR&&n===w.INTERIOR?-1:0},ii.convertSegStrings=function(t){for(var e=new _e,n=new Nt;t.hasNext();){var i=t.next(),r=e.createLineString(i.getCoordinates());n.add(r)}return e.buildGeometry(n)};var ri=function(){if(this._noder=null,this._scaleFactor=null,this._offsetX=null,this._offsetY=null,this._isScaled=!1,2===arguments.length){var t=arguments[0],e=arguments[1];this._noder=t,this._scaleFactor=e,this._offsetX=0,this._offsetY=0,this._isScaled=!this.isIntegerPrecision()}else if(4===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=arguments[3];this._noder=n,this._scaleFactor=i,this._offsetX=r,this._offsetY=o,this._isScaled=!this.isIntegerPrecision()}};ri.prototype.rescale=function(){if(T(arguments[0],It))for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.rescale(e.getCoordinates())}else if(arguments[0]instanceof Array){for(var n=arguments[0],i=0;i<n.length;i++)n[i].x=n[i].x/this._scaleFactor+this._offsetX,n[i].y=n[i].y/this._scaleFactor+this._offsetY;2===n.length&&n[0].equals2D(n[1])&&Y.out.println(n)}},ri.prototype.scale=function(){if(T(arguments[0],It)){for(var t=arguments[0],e=new Nt,n=t.iterator();n.hasNext();){var i=n.next();e.add(new gn(this.scale(i.getCoordinates()),i.getData()))}return e}if(arguments[0]instanceof Array){for(var r=arguments[0],o=new Array(r.length).fill(null),s=0;s<r.length;s++)o[s]=new C(Math.round((r[s].x-this._offsetX)*this._scaleFactor),Math.round((r[s].y-this._offsetY)*this._scaleFactor),r[s].z);return Lt.removeRepeatedPoints(o)}},ri.prototype.isIntegerPrecision=function(){return 1===this._scaleFactor},ri.prototype.getNodedSubstrings=function(){var t=this._noder.getNodedSubstrings();return this._isScaled&&this.rescale(t),t},ri.prototype.computeNodes=function(t){var e=t;this._isScaled&&(e=this.scale(t)),this._noder.computeNodes(e)},ri.prototype.interfaces_=function(){return[In]},ri.prototype.getClass=function(){return ri};var oi=function(){this._li=new rt,this._segStrings=null;var t=arguments[0];this._segStrings=t},si={fact:{configurable:!0}};oi.prototype.checkEndPtVertexIntersections=function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next().getCoordinates();this.checkEndPtVertexIntersections(e[0],this._segStrings),this.checkEndPtVertexIntersections(e[e.length-1],this._segStrings)}else if(2===arguments.length)for(var n=arguments[0],i=arguments[1].iterator();i.hasNext();)for(var r=i.next().getCoordinates(),o=1;o<r.length-1;o++)if(r[o].equals(n))throw new $(\"found endpt/interior pt intersection at index \"+o+\" :pt \"+n)},oi.prototype.checkInteriorIntersections=function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();)for(var e=t.next(),n=this._segStrings.iterator();n.hasNext();){var i=n.next();this.checkInteriorIntersections(e,i)}else if(2===arguments.length)for(var r=arguments[0],o=arguments[1],s=r.getCoordinates(),a=o.getCoordinates(),u=0;u<s.length-1;u++)for(var l=0;l<a.length-1;l++)this.checkInteriorIntersections(r,u,o,l);else if(4===arguments.length){var c=arguments[0],p=arguments[1],h=arguments[2],f=arguments[3];if(c===h&&p===f)return null;var g=c.getCoordinates()[p],d=c.getCoordinates()[p+1],y=h.getCoordinates()[f],_=h.getCoordinates()[f+1];if(this._li.computeIntersection(g,d,y,_),this._li.hasIntersection()&&(this._li.isProper()||this.hasInteriorIntersection(this._li,g,d)||this.hasInteriorIntersection(this._li,y,_)))throw new $(\"found non-noded intersection at \"+g+\"-\"+d+\" and \"+y+\"-\"+_)}},oi.prototype.checkValid=function(){this.checkEndPtVertexIntersections(),this.checkInteriorIntersections(),this.checkCollapses()},oi.prototype.checkCollapses=function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next();this.checkCollapses(e)}else if(1===arguments.length)for(var n=arguments[0].getCoordinates(),i=0;i<n.length-2;i++)this.checkCollapse(n[i],n[i+1],n[i+2])},oi.prototype.hasInteriorIntersection=function(t,e,n){for(var i=0;i<t.getIntersectionNum();i++){var r=t.getIntersection(i);if(!r.equals(e)&&!r.equals(n))return!0}return!1},oi.prototype.checkCollapse=function(t,e,n){if(t.equals(n))throw new $(\"found non-noded collapse at \"+oi.fact.createLineString([t,e,n]))},oi.prototype.interfaces_=function(){return[]},oi.prototype.getClass=function(){return oi},si.fact.get=function(){return new _e},Object.defineProperties(oi,si);var ai=function(){this._li=null,this._pt=null,this._originalPt=null,this._ptScaled=null,this._p0Scaled=null,this._p1Scaled=null,this._scaleFactor=null,this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,this._corner=new Array(4).fill(null),this._safeEnv=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(this._originalPt=t,this._pt=t,this._scaleFactor=e,this._li=n,e<=0)throw new m(\"Scale factor must be non-zero\");1!==e&&(this._pt=new C(this.scale(t.x),this.scale(t.y)),this._p0Scaled=new C,this._p1Scaled=new C),this.initCorners(this._pt)},ui={SAFE_ENV_EXPANSION_FACTOR:{configurable:!0}};ai.prototype.intersectsScaled=function(t,e){var n=Math.min(t.x,e.x),i=Math.max(t.x,e.x),r=Math.min(t.y,e.y),o=Math.max(t.y,e.y),s=this._maxx<n||this._minx>i||this._maxy<r||this._miny>o;if(s)return!1;var a=this.intersectsToleranceSquare(t,e);return et.isTrue(!(s&&a),\"Found bad envelope test\"),a},ai.prototype.initCorners=function(t){this._minx=t.x-.5,this._maxx=t.x+.5,this._miny=t.y-.5,this._maxy=t.y+.5,this._corner[0]=new C(this._maxx,this._maxy),this._corner[1]=new C(this._minx,this._maxy),this._corner[2]=new C(this._minx,this._miny),this._corner[3]=new C(this._maxx,this._miny)},ai.prototype.intersects=function(t,e){return 1===this._scaleFactor?this.intersectsScaled(t,e):(this.copyScaled(t,this._p0Scaled),this.copyScaled(e,this._p1Scaled),this.intersectsScaled(this._p0Scaled,this._p1Scaled))},ai.prototype.scale=function(t){return Math.round(t*this._scaleFactor)},ai.prototype.getCoordinate=function(){return this._originalPt},ai.prototype.copyScaled=function(t,e){e.x=this.scale(t.x),e.y=this.scale(t.y)},ai.prototype.getSafeEnvelope=function(){if(null===this._safeEnv){var t=ai.SAFE_ENV_EXPANSION_FACTOR/this._scaleFactor;this._safeEnv=new j(this._originalPt.x-t,this._originalPt.x+t,this._originalPt.y-t,this._originalPt.y+t)}return this._safeEnv},ai.prototype.intersectsPixelClosure=function(t,e){return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.hasIntersection())))},ai.prototype.intersectsToleranceSquare=function(t,e){var n=!1,i=!1;return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.isProper()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.isProper()||(this._li.hasIntersection()&&(n=!0),this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.isProper()||(this._li.hasIntersection()&&(i=!0),this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.isProper()||(!(!n||!i)||(!!t.equals(this._pt)||!!e.equals(this._pt))))))},ai.prototype.addSnappedNode=function(t,e){var n=t.getCoordinate(e),i=t.getCoordinate(e+1);return!!this.intersects(n,i)&&(t.addIntersection(this.getCoordinate(),e),!0)},ai.prototype.interfaces_=function(){return[]},ai.prototype.getClass=function(){return ai},ui.SAFE_ENV_EXPANSION_FACTOR.get=function(){return.75},Object.defineProperties(ai,ui);var li=function(){this.tempEnv1=new j,this.selectedSegment=new dn};li.prototype.select=function(){if(1===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];t.getLineSegment(e,this.selectedSegment),this.select(this.selectedSegment)}},li.prototype.interfaces_=function(){return[]},li.prototype.getClass=function(){return li};var ci=function(){this._index=null;var t=arguments[0];this._index=t},pi={HotPixelSnapAction:{configurable:!0}};ci.prototype.snap=function(){if(1===arguments.length){var t=arguments[0];return this.snap(t,null,-1)}if(3===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2],r=e.getSafeEnvelope(),o=new hi(e,n,i);return this._index.query(r,{interfaces_:function(){return[Ke]},visitItem:function(t){t.select(r,o)}}),o.isNodeAdded()}},ci.prototype.interfaces_=function(){return[]},ci.prototype.getClass=function(){return ci},pi.HotPixelSnapAction.get=function(){return hi},Object.defineProperties(ci,pi);var hi=function(t){function e(){t.call(this),this._hotPixel=null,this._parentEdge=null,this._hotPixelVertexIndex=null,this._isNodeAdded=!1;var e=arguments[0],n=arguments[1],i=arguments[2];this._hotPixel=e,this._parentEdge=n,this._hotPixelVertexIndex=i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isNodeAdded=function(){return this._isNodeAdded},e.prototype.select=function(){if(2!==arguments.length)return t.prototype.select.apply(this,arguments);var e=arguments[0],n=arguments[1],i=e.getContext();if(null!==this._parentEdge&&i===this._parentEdge&&n===this._hotPixelVertexIndex)return null;this._isNodeAdded=this._hotPixel.addSnappedNode(i,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(li),fi=function(){this._li=null,this._interiorIntersections=null;var t=arguments[0];this._li=t,this._interiorIntersections=new Nt};fi.prototype.processIntersections=function(t,e,n,i){if(t===n&&e===i)return null;var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];if(this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&this._li.isInteriorIntersection()){for(var u=0;u<this._li.getIntersectionNum();u++)this._interiorIntersections.add(this._li.getIntersection(u));t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1)}},fi.prototype.isDone=function(){return!1},fi.prototype.getInteriorIntersections=function(){return this._interiorIntersections},fi.prototype.interfaces_=function(){return[Wn]},fi.prototype.getClass=function(){return fi};var gi=function(){this._pm=null,this._li=null,this._scaleFactor=null,this._noder=null,this._pointSnapper=null,this._nodedSegStrings=null;var t=arguments[0];this._pm=t,this._li=new rt,this._li.setPrecisionModel(t),this._scaleFactor=t.getScale()};gi.prototype.checkCorrectness=function(t){var e=gn.getNodedSubstrings(t),n=new oi(e);try{n.checkValid()}catch(t){if(!(t instanceof z))throw t;t.printStackTrace()}},gi.prototype.getNodedSubstrings=function(){return gn.getNodedSubstrings(this._nodedSegStrings)},gi.prototype.snapRound=function(t,e){var n=this.findInteriorIntersections(t,e);this.computeIntersectionSnaps(n),this.computeVertexSnaps(t)},gi.prototype.findInteriorIntersections=function(t,e){var n=new fi(e);return this._noder.setSegmentIntersector(n),this._noder.computeNodes(t),n.getInteriorIntersections()},gi.prototype.computeVertexSnaps=function(){if(T(arguments[0],It))for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.computeVertexSnaps(e)}else if(arguments[0]instanceof gn)for(var n=arguments[0],i=n.getCoordinates(),r=0;r<i.length;r++){var o=new ai(i[r],this._scaleFactor,this._li);this._pointSnapper.snap(o,n,r)&&n.addIntersection(i[r],r)}},gi.prototype.computeNodes=function(t){this._nodedSegStrings=t,this._noder=new xn,this._pointSnapper=new ci(this._noder.getIndex()),this.snapRound(t,this._li)},gi.prototype.computeIntersectionSnaps=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),i=new ai(n,this._scaleFactor,this._li);this._pointSnapper.snap(i)}},gi.prototype.interfaces_=function(){return[In]},gi.prototype.getClass=function(){return gi};var di=function(){if(this._argGeom=null,this._distance=null,this._bufParams=new Cn,this._resultGeometry=null,this._saveException=null,1===arguments.length){var t=arguments[0];this._argGeom=t}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this._argGeom=e,this._bufParams=n}},yi={CAP_ROUND:{configurable:!0},CAP_BUTT:{configurable:!0},CAP_FLAT:{configurable:!0},CAP_SQUARE:{configurable:!0},MAX_PRECISION_DIGITS:{configurable:!0}};di.prototype.bufferFixedPrecision=function(t){var e=new ri(new gi(new fe(1)),t.getScale()),n=new ii(this._bufParams);n.setWorkingPrecisionModel(t),n.setNoder(e),this._resultGeometry=n.buffer(this._argGeom,this._distance)},di.prototype.bufferReducedPrecision=function(){var t=this;if(0===arguments.length){for(var e=di.MAX_PRECISION_DIGITS;e>=0;e--){try{t.bufferReducedPrecision(e)}catch(e){if(!(e instanceof we))throw e;t._saveException=e}if(null!==t._resultGeometry)return null}throw this._saveException}if(1===arguments.length){var n=arguments[0],i=di.precisionScaleFactor(this._argGeom,this._distance,n),r=new fe(i);this.bufferFixedPrecision(r)}},di.prototype.computeGeometry=function(){if(this.bufferOriginalPrecision(),null!==this._resultGeometry)return null;var t=this._argGeom.getFactory().getPrecisionModel();t.getType()===fe.FIXED?this.bufferFixedPrecision(t):this.bufferReducedPrecision()},di.prototype.setQuadrantSegments=function(t){this._bufParams.setQuadrantSegments(t)},di.prototype.bufferOriginalPrecision=function(){try{var t=new ii(this._bufParams);this._resultGeometry=t.buffer(this._argGeom,this._distance)}catch(t){if(!(t instanceof $))throw t;this._saveException=t}},di.prototype.getResultGeometry=function(t){return this._distance=t,this.computeGeometry(),this._resultGeometry},di.prototype.setEndCapStyle=function(t){this._bufParams.setEndCapStyle(t)},di.prototype.interfaces_=function(){return[]},di.prototype.getClass=function(){return di},di.bufferOp=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return new di(t).getResultGeometry(e)}if(3===arguments.length){if(Number.isInteger(arguments[2])&&arguments[0]instanceof ct&&\"number\"==typeof arguments[1]){var n=arguments[0],i=arguments[1],r=arguments[2],o=new di(n);o.setQuadrantSegments(r);return o.getResultGeometry(i)}if(arguments[2]instanceof Cn&&arguments[0]instanceof ct&&\"number\"==typeof arguments[1]){var s=arguments[0],a=arguments[1],u=arguments[2];return new di(s,u).getResultGeometry(a)}}else if(4===arguments.length){var l=arguments[0],c=arguments[1],p=arguments[2],h=arguments[3],f=new di(l);f.setQuadrantSegments(p),f.setEndCapStyle(h);return f.getResultGeometry(c)}},di.precisionScaleFactor=function(t,e,n){var i=t.getEnvelopeInternal(),r=R.max(Math.abs(i.getMaxX()),Math.abs(i.getMaxY()),Math.abs(i.getMinX()),Math.abs(i.getMinY()))+2*(e>0?e:0),o=n-Math.trunc(Math.log(r)/Math.log(10)+1);return Math.pow(10,o)},yi.CAP_ROUND.get=function(){return Cn.CAP_ROUND},yi.CAP_BUTT.get=function(){return Cn.CAP_FLAT},yi.CAP_FLAT.get=function(){return Cn.CAP_FLAT},yi.CAP_SQUARE.get=function(){return Cn.CAP_SQUARE},yi.MAX_PRECISION_DIGITS.get=function(){return 12},Object.defineProperties(di,yi);var _i=function(){this._pt=[new C,new C],this._distance=v.NaN,this._isNull=!0};_i.prototype.getCoordinates=function(){return this._pt},_i.prototype.getCoordinate=function(t){return this._pt[t]},_i.prototype.setMinimum=function(){if(1===arguments.length){var t=arguments[0];this.setMinimum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);i<this._distance&&this.initialize(e,n,i)}},_i.prototype.initialize=function(){if(0===arguments.length)this._isNull=!0;else if(2===arguments.length){var t=arguments[0],e=arguments[1];this._pt[0].setCoordinate(t),this._pt[1].setCoordinate(e),this._distance=t.distance(e),this._isNull=!1}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this._pt[0].setCoordinate(n),this._pt[1].setCoordinate(i),this._distance=r,this._isNull=!1}},_i.prototype.getDistance=function(){return this._distance},_i.prototype.setMaximum=function(){if(1===arguments.length){var t=arguments[0];this.setMaximum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);i>this._distance&&this.initialize(e,n,i)}},_i.prototype.interfaces_=function(){return[]},_i.prototype.getClass=function(){return _i};var mi=function(){};mi.prototype.interfaces_=function(){return[]},mi.prototype.getClass=function(){return mi},mi.computeDistance=function(){if(arguments[2]instanceof _i&&arguments[0]instanceof Kt&&arguments[1]instanceof C)for(var t=arguments[0],e=arguments[1],n=arguments[2],i=t.getCoordinates(),r=new dn,o=0;o<i.length-1;o++){r.setCoordinates(i[o],i[o+1]);var s=r.closestPoint(e);n.setMinimum(s,e)}else if(arguments[2]instanceof _i&&arguments[0]instanceof $t&&arguments[1]instanceof C){var a=arguments[0],u=arguments[1],l=arguments[2];mi.computeDistance(a.getExteriorRing(),u,l);for(var c=0;c<a.getNumInteriorRing();c++)mi.computeDistance(a.getInteriorRingN(c),u,l)}else if(arguments[2]instanceof _i&&arguments[0]instanceof ct&&arguments[1]instanceof C){var p=arguments[0],h=arguments[1],f=arguments[2];if(p instanceof Kt)mi.computeDistance(p,h,f);else if(p instanceof $t)mi.computeDistance(p,h,f);else if(p instanceof zt)for(var g=p,d=0;d<g.getNumGeometries();d++){var y=g.getGeometryN(d);mi.computeDistance(y,h,f)}else f.setMinimum(p.getCoordinate(),h)}else if(arguments[2]instanceof _i&&arguments[0]instanceof dn&&arguments[1]instanceof C){var _=arguments[0],m=arguments[1],v=arguments[2],I=_.closestPoint(m);v.setMinimum(I,m)}};var vi=function(t){this._maxPtDist=new _i,this._inputGeom=t||null},Ii={MaxPointDistanceFilter:{configurable:!0},MaxMidpointDistanceFilter:{configurable:!0}};vi.prototype.computeMaxMidpointDistance=function(t){var e=new xi(this._inputGeom);t.apply(e),this._maxPtDist.setMaximum(e.getMaxPointDistance())},vi.prototype.computeMaxVertexDistance=function(t){var e=new Ei(this._inputGeom);t.apply(e),this._maxPtDist.setMaximum(e.getMaxPointDistance())},vi.prototype.findDistance=function(t){return this.computeMaxVertexDistance(t),this.computeMaxMidpointDistance(t),this._maxPtDist.getDistance()},vi.prototype.getDistancePoints=function(){return this._maxPtDist},vi.prototype.interfaces_=function(){return[]},vi.prototype.getClass=function(){return vi},Ii.MaxPointDistanceFilter.get=function(){return Ei},Ii.MaxMidpointDistanceFilter.get=function(){return xi},Object.defineProperties(vi,Ii);var Ei=function(t){this._maxPtDist=new _i,this._minPtDist=new _i,this._geom=t||null};Ei.prototype.filter=function(t){this._minPtDist.initialize(),mi.computeDistance(this._geom,t,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)},Ei.prototype.getMaxPointDistance=function(){return this._maxPtDist},Ei.prototype.interfaces_=function(){return[ft]},Ei.prototype.getClass=function(){return Ei};var xi=function(t){this._maxPtDist=new _i,this._minPtDist=new _i,this._geom=t||null};xi.prototype.filter=function(t,e){if(0===e)return null;var n=t.getCoordinate(e-1),i=t.getCoordinate(e),r=new C((n.x+i.x)/2,(n.y+i.y)/2);this._minPtDist.initialize(),mi.computeDistance(this._geom,r,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)},xi.prototype.isDone=function(){return!1},xi.prototype.isGeometryChanged=function(){return!1},xi.prototype.getMaxPointDistance=function(){return this._maxPtDist},xi.prototype.interfaces_=function(){return[Ut]},xi.prototype.getClass=function(){return xi};var Ni=function(t){this._comps=t||null};Ni.prototype.filter=function(t){t instanceof $t&&this._comps.add(t)},Ni.prototype.interfaces_=function(){return[Vt]},Ni.prototype.getClass=function(){return Ni},Ni.getPolygons=function(){if(1===arguments.length){var t=arguments[0];return Ni.getPolygons(t,new Nt)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e instanceof $t?n.add(e):e instanceof zt&&e.apply(new Ni(n)),n}};var Ci=function(){if(this._lines=null,this._isForcedToLineString=!1,1===arguments.length){var t=arguments[0];this._lines=t}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this._lines=e,this._isForcedToLineString=n}};Ci.prototype.filter=function(t){if(this._isForcedToLineString&&t instanceof ee){var e=t.getFactory().createLineString(t.getCoordinateSequence());return this._lines.add(e),null}t instanceof Kt&&this._lines.add(t)},Ci.prototype.setForceToLineString=function(t){this._isForcedToLineString=t},Ci.prototype.interfaces_=function(){return[lt]},Ci.prototype.getClass=function(){return Ci},Ci.getGeometry=function(){if(1===arguments.length){var t=arguments[0];return t.getFactory().buildGeometry(Ci.getLines(t))}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e.getFactory().buildGeometry(Ci.getLines(e,n))}},Ci.getLines=function(){if(1===arguments.length){var t=arguments[0];return Ci.getLines(t,!1)}if(2===arguments.length){if(T(arguments[0],It)&&T(arguments[1],It)){for(var e=arguments[0],n=arguments[1],i=e.iterator();i.hasNext();){var r=i.next();Ci.getLines(r,n)}return n}if(arguments[0]instanceof ct&&\"boolean\"==typeof arguments[1]){var o=arguments[0],s=arguments[1],a=new Nt;return o.apply(new Ci(a,s)),a}if(arguments[0]instanceof ct&&T(arguments[1],It)){var u=arguments[0],l=arguments[1];return u instanceof Kt?l.add(u):u.apply(new Ci(l)),l}}else if(3===arguments.length){if(\"boolean\"==typeof arguments[2]&&T(arguments[0],It)&&T(arguments[1],It)){for(var c=arguments[0],p=arguments[1],h=arguments[2],f=c.iterator();f.hasNext();){var g=f.next();Ci.getLines(g,p,h)}return p}if(\"boolean\"==typeof arguments[2]&&arguments[0]instanceof ct&&T(arguments[1],It)){var d=arguments[0],y=arguments[1],_=arguments[2];return d.apply(new Ci(y,_)),y}}};var Si=function(){if(this._boundaryRule=gt.OGC_SFS_BOUNDARY_RULE,this._isIn=null,this._numBoundaries=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];if(null===t)throw new m(\"Rule must be non-null\");this._boundaryRule=t}};Si.prototype.locateInternal=function(){if(arguments[0]instanceof C&&arguments[1]instanceof $t){var t=arguments[0],e=arguments[1];if(e.isEmpty())return w.EXTERIOR;var n=e.getExteriorRing(),i=this.locateInPolygonRing(t,n);if(i===w.EXTERIOR)return w.EXTERIOR;if(i===w.BOUNDARY)return w.BOUNDARY;for(var r=0;r<e.getNumInteriorRing();r++){var o=e.getInteriorRingN(r),s=this.locateInPolygonRing(t,o);if(s===w.INTERIOR)return w.EXTERIOR;if(s===w.BOUNDARY)return w.BOUNDARY}return w.INTERIOR}if(arguments[0]instanceof C&&arguments[1]instanceof Kt){var a=arguments[0],u=arguments[1];if(!u.getEnvelopeInternal().intersects(a))return w.EXTERIOR;var l=u.getCoordinates();return u.isClosed()||!a.equals(l[0])&&!a.equals(l[l.length-1])?at.isOnLine(a,l)?w.INTERIOR:w.EXTERIOR:w.BOUNDARY}if(arguments[0]instanceof C&&arguments[1]instanceof Qt){var c=arguments[0];return arguments[1].getCoordinate().equals2D(c)?w.INTERIOR:w.EXTERIOR}},Si.prototype.locateInPolygonRing=function(t,e){return e.getEnvelopeInternal().intersects(t)?at.locatePointInRing(t,e.getCoordinates()):w.EXTERIOR},Si.prototype.intersects=function(t,e){return this.locate(t,e)!==w.EXTERIOR},Si.prototype.updateLocationInfo=function(t){t===w.INTERIOR&&(this._isIn=!0),t===w.BOUNDARY&&this._numBoundaries++},Si.prototype.computeLocation=function(t,e){if(e instanceof Qt&&this.updateLocationInfo(this.locateInternal(t,e)),e instanceof Kt)this.updateLocationInfo(this.locateInternal(t,e));else if(e instanceof $t)this.updateLocationInfo(this.locateInternal(t,e));else if(e instanceof Xt)for(var n=e,i=0;i<n.getNumGeometries();i++){var r=n.getGeometryN(i);this.updateLocationInfo(this.locateInternal(t,r))}else if(e instanceof ne)for(var o=e,s=0;s<o.getNumGeometries();s++){var a=o.getGeometryN(s);this.updateLocationInfo(this.locateInternal(t,a))}else if(e instanceof zt)for(var u=new Un(e);u.hasNext();){var l=u.next();l!==e&&this.computeLocation(t,l)}},Si.prototype.locate=function(t,e){return e.isEmpty()?w.EXTERIOR:e instanceof Kt?this.locateInternal(t,e):e instanceof $t?this.locateInternal(t,e):(this._isIn=!1,this._numBoundaries=0,this.computeLocation(t,e),this._boundaryRule.isInBoundary(this._numBoundaries)?w.BOUNDARY:this._numBoundaries>0||this._isIn?w.INTERIOR:w.EXTERIOR)},Si.prototype.interfaces_=function(){return[]},Si.prototype.getClass=function(){return Si};var Li=function t(){if(this._component=null,this._segIndex=null,this._pt=null,2===arguments.length){var e=arguments[0],n=arguments[1];t.call(this,e,t.INSIDE_AREA,n)}else if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];this._component=i,this._segIndex=r,this._pt=o}},bi={INSIDE_AREA:{configurable:!0}};Li.prototype.isInsideArea=function(){return this._segIndex===Li.INSIDE_AREA},Li.prototype.getCoordinate=function(){return this._pt},Li.prototype.getGeometryComponent=function(){return this._component},Li.prototype.getSegmentIndex=function(){return this._segIndex},Li.prototype.interfaces_=function(){return[]},Li.prototype.getClass=function(){return Li},bi.INSIDE_AREA.get=function(){return-1},Object.defineProperties(Li,bi);var wi=function(t){this._pts=t||null};wi.prototype.filter=function(t){t instanceof Qt&&this._pts.add(t)},wi.prototype.interfaces_=function(){return[Vt]},wi.prototype.getClass=function(){return wi},wi.getPoints=function(){if(1===arguments.length){var t=arguments[0];return t instanceof Qt?$e.singletonList(t):wi.getPoints(t,new Nt)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e instanceof Qt?n.add(e):e instanceof zt&&e.apply(new wi(n)),n}};var Oi=function(){this._locations=null;var t=arguments[0];this._locations=t};Oi.prototype.filter=function(t){(t instanceof Qt||t instanceof Kt||t instanceof $t)&&this._locations.add(new Li(t,0,t.getCoordinate()))},Oi.prototype.interfaces_=function(){return[Vt]},Oi.prototype.getClass=function(){return Oi},Oi.getLocations=function(t){var e=new Nt;return t.apply(new Oi(e)),e};var Ti=function(){if(this._geom=null,this._terminateDistance=0,this._ptLocator=new Si,this._minDistanceLocation=null,this._minDistance=v.MAX_VALUE,2===arguments.length){var t=arguments[0],e=arguments[1];this._geom=[t,e],this._terminateDistance=0}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this._geom=new Array(2).fill(null),this._geom[0]=n,this._geom[1]=i,this._terminateDistance=r}};Ti.prototype.computeContainmentDistance=function(){if(0===arguments.length){var t=new Array(2).fill(null);if(this.computeContainmentDistance(0,t),this._minDistance<=this._terminateDistance)return null;this.computeContainmentDistance(1,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=1-e,r=Ni.getPolygons(this._geom[e]);if(r.size()>0){var o=Oi.getLocations(this._geom[i]);if(this.computeContainmentDistance(o,r,n),this._minDistance<=this._terminateDistance)return this._minDistanceLocation[i]=n[0],this._minDistanceLocation[e]=n[1],null}}else if(3===arguments.length)if(arguments[2]instanceof Array&&T(arguments[0],xt)&&T(arguments[1],xt)){for(var s=arguments[0],a=arguments[1],u=arguments[2],l=0;l<s.size();l++)for(var c=s.get(l),p=0;p<a.size();p++)if(this.computeContainmentDistance(c,a.get(p),u),this._minDistance<=this._terminateDistance)return null}else if(arguments[2]instanceof Array&&arguments[0]instanceof Li&&arguments[1]instanceof $t){var h=arguments[0],f=arguments[1],g=arguments[2],d=h.getCoordinate();if(w.EXTERIOR!==this._ptLocator.locate(d,f))return this._minDistance=0,g[0]=h,g[1]=new Li(f,d),null}},Ti.prototype.computeMinDistanceLinesPoints=function(t,e,n){for(var i=0;i<t.size();i++)for(var r=t.get(i),o=0;o<e.size();o++){var s=e.get(o);if(this.computeMinDistance(r,s,n),this._minDistance<=this._terminateDistance)return null}},Ti.prototype.computeFacetDistance=function(){var t=new Array(2).fill(null),e=Ci.getLines(this._geom[0]),n=Ci.getLines(this._geom[1]),i=wi.getPoints(this._geom[0]),r=wi.getPoints(this._geom[1]);return this.computeMinDistanceLines(e,n,t),this.updateMinDistance(t,!1),this._minDistance<=this._terminateDistance?null:(t[0]=null,t[1]=null,this.computeMinDistanceLinesPoints(e,r,t),this.updateMinDistance(t,!1),this._minDistance<=this._terminateDistance?null:(t[0]=null,t[1]=null,this.computeMinDistanceLinesPoints(n,i,t),this.updateMinDistance(t,!0),this._minDistance<=this._terminateDistance?null:(t[0]=null,t[1]=null,this.computeMinDistancePoints(i,r,t),void this.updateMinDistance(t,!1))))},Ti.prototype.nearestLocations=function(){return this.computeMinDistance(),this._minDistanceLocation},Ti.prototype.updateMinDistance=function(t,e){if(null===t[0])return null;e?(this._minDistanceLocation[0]=t[1],this._minDistanceLocation[1]=t[0]):(this._minDistanceLocation[0]=t[0],this._minDistanceLocation[1]=t[1])},Ti.prototype.nearestPoints=function(){this.computeMinDistance();return[this._minDistanceLocation[0].getCoordinate(),this._minDistanceLocation[1].getCoordinate()]},Ti.prototype.computeMinDistance=function(){if(0===arguments.length){if(null!==this._minDistanceLocation)return null;if(this._minDistanceLocation=new Array(2).fill(null),this.computeContainmentDistance(),this._minDistance<=this._terminateDistance)return null;this.computeFacetDistance()}else if(3===arguments.length)if(arguments[2]instanceof Array&&arguments[0]instanceof Kt&&arguments[1]instanceof Qt){var t=arguments[0],e=arguments[1],n=arguments[2];if(t.getEnvelopeInternal().distance(e.getEnvelopeInternal())>this._minDistance)return null;for(var i=t.getCoordinates(),r=e.getCoordinate(),o=0;o<i.length-1;o++){var s=at.distancePointLine(r,i[o],i[o+1]);if(s<this._minDistance){this._minDistance=s;var a=new dn(i[o],i[o+1]).closestPoint(r);n[0]=new Li(t,o,a),n[1]=new Li(e,0,r)}if(this._minDistance<=this._terminateDistance)return null}}else if(arguments[2]instanceof Array&&arguments[0]instanceof Kt&&arguments[1]instanceof Kt){var u=arguments[0],l=arguments[1],c=arguments[2];if(u.getEnvelopeInternal().distance(l.getEnvelopeInternal())>this._minDistance)return null;for(var p=u.getCoordinates(),h=l.getCoordinates(),f=0;f<p.length-1;f++)for(var g=0;g<h.length-1;g++){var d=at.distanceLineLine(p[f],p[f+1],h[g],h[g+1]);if(d<this._minDistance){this._minDistance=d;var y=new dn(p[f],p[f+1]),_=new dn(h[g],h[g+1]),m=y.closestPoints(_);c[0]=new Li(u,f,m[0]),c[1]=new Li(l,g,m[1])}if(this._minDistance<=this._terminateDistance)return null}}},Ti.prototype.computeMinDistancePoints=function(t,e,n){for(var i=0;i<t.size();i++)for(var r=t.get(i),o=0;o<e.size();o++){var s=e.get(o),a=r.getCoordinate().distance(s.getCoordinate());if(a<this._minDistance&&(this._minDistance=a,n[0]=new Li(r,0,r.getCoordinate()),n[1]=new Li(s,0,s.getCoordinate())),this._minDistance<=this._terminateDistance)return null}},Ti.prototype.distance=function(){if(null===this._geom[0]||null===this._geom[1])throw new m(\"null geometries are not supported\");return this._geom[0].isEmpty()||this._geom[1].isEmpty()?0:(this.computeMinDistance(),this._minDistance)},Ti.prototype.computeMinDistanceLines=function(t,e,n){for(var i=0;i<t.size();i++)for(var r=t.get(i),o=0;o<e.size();o++){var s=e.get(o);if(this.computeMinDistance(r,s,n),this._minDistance<=this._terminateDistance)return null}},Ti.prototype.interfaces_=function(){return[]},Ti.prototype.getClass=function(){return Ti},Ti.distance=function(t,e){return new Ti(t,e).distance()},Ti.isWithinDistance=function(t,e,n){return new Ti(t,e,n).distance()<=n},Ti.nearestPoints=function(t,e){return new Ti(t,e).nearestPoints()};var Ri=function(){this._pt=[new C,new C],this._distance=v.NaN,this._isNull=!0};Ri.prototype.getCoordinates=function(){return this._pt},Ri.prototype.getCoordinate=function(t){return this._pt[t]},Ri.prototype.setMinimum=function(){if(1===arguments.length){var t=arguments[0];this.setMinimum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);i<this._distance&&this.initialize(e,n,i)}},Ri.prototype.initialize=function(){if(0===arguments.length)this._isNull=!0;else if(2===arguments.length){var t=arguments[0],e=arguments[1];this._pt[0].setCoordinate(t),this._pt[1].setCoordinate(e),this._distance=t.distance(e),this._isNull=!1}else if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2];this._pt[0].setCoordinate(n),this._pt[1].setCoordinate(i),this._distance=r,this._isNull=!1}},Ri.prototype.toString=function(){return Z.toLineString(this._pt[0],this._pt[1])},Ri.prototype.getDistance=function(){return this._distance},Ri.prototype.setMaximum=function(){if(1===arguments.length){var t=arguments[0];this.setMaximum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var i=e.distance(n);i>this._distance&&this.initialize(e,n,i)}},Ri.prototype.interfaces_=function(){return[]},Ri.prototype.getClass=function(){return Ri};var Pi=function(){};Pi.prototype.interfaces_=function(){return[]},Pi.prototype.getClass=function(){return Pi},Pi.computeDistance=function(){if(arguments[2]instanceof Ri&&arguments[0]instanceof Kt&&arguments[1]instanceof C)for(var t=arguments[0],e=arguments[1],n=arguments[2],i=new dn,r=t.getCoordinates(),o=0;o<r.length-1;o++){i.setCoordinates(r[o],r[o+1]);var s=i.closestPoint(e);n.setMinimum(s,e)}else if(arguments[2]instanceof Ri&&arguments[0]instanceof $t&&arguments[1]instanceof C){var a=arguments[0],u=arguments[1],l=arguments[2];Pi.computeDistance(a.getExteriorRing(),u,l);for(var c=0;c<a.getNumInteriorRing();c++)Pi.computeDistance(a.getInteriorRingN(c),u,l)}else if(arguments[2]instanceof Ri&&arguments[0]instanceof ct&&arguments[1]instanceof C){var p=arguments[0],h=arguments[1],f=arguments[2];if(p instanceof Kt)Pi.computeDistance(p,h,f);else if(p instanceof $t)Pi.computeDistance(p,h,f);else if(p instanceof zt)for(var g=p,d=0;d<g.getNumGeometries();d++){var y=g.getGeometryN(d);Pi.computeDistance(y,h,f)}else f.setMinimum(p.getCoordinate(),h)}else if(arguments[2]instanceof Ri&&arguments[0]instanceof dn&&arguments[1]instanceof C){var _=arguments[0],m=arguments[1],v=arguments[2],I=_.closestPoint(m);v.setMinimum(I,m)}};var Di=function(){this._g0=null,this._g1=null,this._ptDist=new Ri,this._densifyFrac=0;var t=arguments[0],e=arguments[1];this._g0=t,this._g1=e},Mi={MaxPointDistanceFilter:{configurable:!0},MaxDensifiedByFractionDistanceFilter:{configurable:!0}};Di.prototype.getCoordinates=function(){return this._ptDist.getCoordinates()},Di.prototype.setDensifyFraction=function(t){if(t>1||t<=0)throw new m(\"Fraction is not in range (0.0 - 1.0]\");this._densifyFrac=t},Di.prototype.compute=function(t,e){this.computeOrientedDistance(t,e,this._ptDist),this.computeOrientedDistance(e,t,this._ptDist)},Di.prototype.distance=function(){return this.compute(this._g0,this._g1),this._ptDist.getDistance()},Di.prototype.computeOrientedDistance=function(t,e,n){var i=new Ai(e);if(t.apply(i),n.setMaximum(i.getMaxPointDistance()),this._densifyFrac>0){var r=new Fi(e,this._densifyFrac);t.apply(r),n.setMaximum(r.getMaxPointDistance())}},Di.prototype.orientedDistance=function(){return this.computeOrientedDistance(this._g0,this._g1,this._ptDist),this._ptDist.getDistance()},Di.prototype.interfaces_=function(){return[]},Di.prototype.getClass=function(){return Di},Di.distance=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return new Di(t,e).distance()}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=new Di(n,i);return o.setDensifyFraction(r),o.distance()}},Mi.MaxPointDistanceFilter.get=function(){return Ai},Mi.MaxDensifiedByFractionDistanceFilter.get=function(){return Fi},Object.defineProperties(Di,Mi);var Ai=function(){this._maxPtDist=new Ri,this._minPtDist=new Ri,this._euclideanDist=new Pi,this._geom=null;var t=arguments[0];this._geom=t};Ai.prototype.filter=function(t){this._minPtDist.initialize(),Pi.computeDistance(this._geom,t,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)},Ai.prototype.getMaxPointDistance=function(){return this._maxPtDist},Ai.prototype.interfaces_=function(){return[ft]},Ai.prototype.getClass=function(){return Ai};var Fi=function(){this._maxPtDist=new Ri,this._minPtDist=new Ri,this._geom=null,this._numSubSegs=0;var t=arguments[0],e=arguments[1];this._geom=t,this._numSubSegs=Math.trunc(Math.round(1/e))};Fi.prototype.filter=function(t,e){if(0===e)return null;for(var n=t.getCoordinate(e-1),i=t.getCoordinate(e),r=(i.x-n.x)/this._numSubSegs,o=(i.y-n.y)/this._numSubSegs,s=0;s<this._numSubSegs;s++){var a=n.x+s*r,u=n.y+s*o,l=new C(a,u);this._minPtDist.initialize(),Pi.computeDistance(this._geom,l,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)}},Fi.prototype.isDone=function(){return!1},Fi.prototype.isGeometryChanged=function(){return!1},Fi.prototype.getMaxPointDistance=function(){return this._maxPtDist},Fi.prototype.interfaces_=function(){return[Ut]},Fi.prototype.getClass=function(){return Fi};var Gi=function(t,e,n){this._minValidDistance=null,this._maxValidDistance=null,this._minDistanceFound=null,this._maxDistanceFound=null,this._isValid=!0,this._errMsg=null,this._errorLocation=null,this._errorIndicator=null,this._input=t||null,this._bufDistance=e||null,this._result=n||null},qi={VERBOSE:{configurable:!0},MAX_DISTANCE_DIFF_FRAC:{configurable:!0}};Gi.prototype.checkMaximumDistance=function(t,e,n){var i=new Di(e,t);if(i.setDensifyFraction(.25),this._maxDistanceFound=i.orientedDistance(),this._maxDistanceFound>n){this._isValid=!1;var r=i.getCoordinates();this._errorLocation=r[1],this._errorIndicator=t.getFactory().createLineString(r),this._errMsg=\"Distance between buffer curve and input is too large (\"+this._maxDistanceFound+\" at \"+Z.toLineString(r[0],r[1])+\")\"}},Gi.prototype.isValid=function(){var t=Math.abs(this._bufDistance),e=Gi.MAX_DISTANCE_DIFF_FRAC*t;return this._minValidDistance=t-e,this._maxValidDistance=t+e,!(!this._input.isEmpty()&&!this._result.isEmpty())||(this._bufDistance>0?this.checkPositiveValid():this.checkNegativeValid(),Gi.VERBOSE&&Y.out.println(\"Min Dist= \"+this._minDistanceFound+\"  err= \"+(1-this._minDistanceFound/this._bufDistance)+\"  Max Dist= \"+this._maxDistanceFound+\"  err= \"+(this._maxDistanceFound/this._bufDistance-1)),this._isValid)},Gi.prototype.checkNegativeValid=function(){if(!(this._input instanceof $t||this._input instanceof ne||this._input instanceof zt))return null;var t=this.getPolygonLines(this._input);if(this.checkMinimumDistance(t,this._result,this._minValidDistance),!this._isValid)return null;this.checkMaximumDistance(t,this._result,this._maxValidDistance)},Gi.prototype.getErrorIndicator=function(){return this._errorIndicator},Gi.prototype.checkMinimumDistance=function(t,e,n){var i=new Ti(t,e,n);if(this._minDistanceFound=i.distance(),this._minDistanceFound<n){this._isValid=!1;var r=i.nearestPoints();this._errorLocation=i.nearestPoints()[1],this._errorIndicator=t.getFactory().createLineString(r),this._errMsg=\"Distance between buffer curve and input is too small (\"+this._minDistanceFound+\" at \"+Z.toLineString(r[0],r[1])+\" )\"}},Gi.prototype.checkPositiveValid=function(){var t=this._result.getBoundary();if(this.checkMinimumDistance(this._input,t,this._minValidDistance),!this._isValid)return null;this.checkMaximumDistance(this._input,t,this._maxValidDistance)},Gi.prototype.getErrorLocation=function(){return this._errorLocation},Gi.prototype.getPolygonLines=function(t){for(var e=new Nt,n=new Ci(e),i=Ni.getPolygons(t).iterator();i.hasNext();){i.next().apply(n)}return t.getFactory().buildGeometry(e)},Gi.prototype.getErrorMessage=function(){return this._errMsg},Gi.prototype.interfaces_=function(){return[]},Gi.prototype.getClass=function(){return Gi},qi.VERBOSE.get=function(){return!1},qi.MAX_DISTANCE_DIFF_FRAC.get=function(){return.012},Object.defineProperties(Gi,qi);var Bi=function(t,e,n){this._isValid=!0,this._errorMsg=null,this._errorLocation=null,this._errorIndicator=null,this._input=t||null,this._distance=e||null,this._result=n||null},Vi={VERBOSE:{configurable:!0},MAX_ENV_DIFF_FRAC:{configurable:!0}};Bi.prototype.isValid=function(){return this.checkPolygonal(),this._isValid?(this.checkExpectedEmpty(),this._isValid?(this.checkEnvelope(),this._isValid?(this.checkArea(),this._isValid?(this.checkDistance(),this._isValid):this._isValid):this._isValid):this._isValid):this._isValid},Bi.prototype.checkEnvelope=function(){if(this._distance<0)return null;var t=this._distance*Bi.MAX_ENV_DIFF_FRAC;0===t&&(t=.001);var e=new j(this._input.getEnvelopeInternal());e.expandBy(this._distance);var n=new j(this._result.getEnvelopeInternal());n.expandBy(t),n.contains(e)||(this._isValid=!1,this._errorMsg=\"Buffer envelope is incorrect\",this._errorIndicator=this._input.getFactory().toGeometry(n)),this.report(\"Envelope\")},Bi.prototype.checkDistance=function(){var t=new Gi(this._input,this._distance,this._result);t.isValid()||(this._isValid=!1,this._errorMsg=t.getErrorMessage(),this._errorLocation=t.getErrorLocation(),this._errorIndicator=t.getErrorIndicator()),this.report(\"Distance\")},Bi.prototype.checkArea=function(){var t=this._input.getArea(),e=this._result.getArea();this._distance>0&&t>e&&(this._isValid=!1,this._errorMsg=\"Area of positive buffer is smaller than input\",this._errorIndicator=this._result),this._distance<0&&t<e&&(this._isValid=!1,this._errorMsg=\"Area of negative buffer is larger than input\",this._errorIndicator=this._result),this.report(\"Area\")},Bi.prototype.checkPolygonal=function(){this._result instanceof $t||this._result instanceof ne||(this._isValid=!1),this._errorMsg=\"Result is not polygonal\",this._errorIndicator=this._result,this.report(\"Polygonal\")},Bi.prototype.getErrorIndicator=function(){return this._errorIndicator},Bi.prototype.getErrorLocation=function(){return this._errorLocation},Bi.prototype.checkExpectedEmpty=function(){return this._input.getDimension()>=2?null:this._distance>0?null:(this._result.isEmpty()||(this._isValid=!1,this._errorMsg=\"Result is non-empty\",this._errorIndicator=this._result),void this.report(\"ExpectedEmpty\"))},Bi.prototype.report=function(t){if(!Bi.VERBOSE)return null;Y.out.println(\"Check \"+t+\": \"+(this._isValid?\"passed\":\"FAILED\"))},Bi.prototype.getErrorMessage=function(){return this._errorMsg},Bi.prototype.interfaces_=function(){return[]},Bi.prototype.getClass=function(){return Bi},Bi.isValidMsg=function(t,e,n){var i=new Bi(t,e,n);return i.isValid()?null:i.getErrorMessage()},Bi.isValid=function(t,e,n){return!!new Bi(t,e,n).isValid()},Vi.VERBOSE.get=function(){return!1},Vi.MAX_ENV_DIFF_FRAC.get=function(){return.012},Object.defineProperties(Bi,Vi);var Ui=function(){this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e};Ui.prototype.getCoordinates=function(){return this._pts},Ui.prototype.size=function(){return this._pts.length},Ui.prototype.getCoordinate=function(t){return this._pts[t]},Ui.prototype.isClosed=function(){return this._pts[0].equals(this._pts[this._pts.length-1])},Ui.prototype.getSegmentOctant=function(t){return t===this._pts.length-1?-1:pn.octant(this.getCoordinate(t),this.getCoordinate(t+1))},Ui.prototype.setData=function(t){this._data=t},Ui.prototype.getData=function(){return this._data},Ui.prototype.toString=function(){return Z.toLineString(new ue(this._pts))},Ui.prototype.interfaces_=function(){return[hn]},Ui.prototype.getClass=function(){return Ui};var zi=function(){this._findAllIntersections=!1,this._isCheckEndSegmentsOnly=!1,this._li=null,this._interiorIntersection=null,this._intSegments=null,this._intersections=new Nt,this._intersectionCount=0,this._keepIntersections=!0;var t=arguments[0];this._li=t,this._interiorIntersection=null};zi.prototype.getInteriorIntersection=function(){return this._interiorIntersection},zi.prototype.setCheckEndSegmentsOnly=function(t){this._isCheckEndSegmentsOnly=t},zi.prototype.getIntersectionSegments=function(){return this._intSegments},zi.prototype.count=function(){return this._intersectionCount},zi.prototype.getIntersections=function(){return this._intersections},zi.prototype.setFindAllIntersections=function(t){this._findAllIntersections=t},zi.prototype.setKeepIntersections=function(t){this._keepIntersections=t},zi.prototype.processIntersections=function(t,e,n,i){if(!this._findAllIntersections&&this.hasIntersection())return null;if(t===n&&e===i)return null;if(this._isCheckEndSegmentsOnly){if(!(this.isEndSegment(t,e)||this.isEndSegment(n,i)))return null}var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&this._li.isInteriorIntersection()&&(this._intSegments=new Array(4).fill(null),this._intSegments[0]=r,this._intSegments[1]=o,this._intSegments[2]=s,this._intSegments[3]=a,this._interiorIntersection=this._li.getIntersection(0),this._keepIntersections&&this._intersections.add(this._interiorIntersection),this._intersectionCount++)},zi.prototype.isEndSegment=function(t,e){return 0===e||e>=t.size()-2},zi.prototype.hasIntersection=function(){return null!==this._interiorIntersection},zi.prototype.isDone=function(){return!this._findAllIntersections&&null!==this._interiorIntersection},zi.prototype.interfaces_=function(){return[Wn]},zi.prototype.getClass=function(){return zi},zi.createAllIntersectionsFinder=function(t){var e=new zi(t);return e.setFindAllIntersections(!0),e},zi.createAnyIntersectionFinder=function(t){return new zi(t)},zi.createIntersectionCounter=function(t){var e=new zi(t);return e.setFindAllIntersections(!0),e.setKeepIntersections(!1),e};var Xi=function(){this._li=new rt,this._segStrings=null,this._findAllIntersections=!1,this._segInt=null,this._isValid=!0;var t=arguments[0];this._segStrings=t};Xi.prototype.execute=function(){if(null!==this._segInt)return null;this.checkInteriorIntersections()},Xi.prototype.getIntersections=function(){return this._segInt.getIntersections()},Xi.prototype.isValid=function(){return this.execute(),this._isValid},Xi.prototype.setFindAllIntersections=function(t){this._findAllIntersections=t},Xi.prototype.checkInteriorIntersections=function(){this._isValid=!0,this._segInt=new zi(this._li),this._segInt.setFindAllIntersections(this._findAllIntersections);var t=new xn;if(t.setSegmentIntersector(this._segInt),t.computeNodes(this._segStrings),this._segInt.hasIntersection())return this._isValid=!1,null},Xi.prototype.checkValid=function(){if(this.execute(),!this._isValid)throw new we(this.getErrorMessage(),this._segInt.getInteriorIntersection())},Xi.prototype.getErrorMessage=function(){if(this._isValid)return\"no intersections found\";var t=this._segInt.getIntersectionSegments();return\"found non-noded intersection between \"+Z.toLineString(t[0],t[1])+\" and \"+Z.toLineString(t[2],t[3])},Xi.prototype.interfaces_=function(){return[]},Xi.prototype.getClass=function(){return Xi},Xi.computeIntersections=function(t){var e=new Xi(t);return e.setFindAllIntersections(!0),e.isValid(),e.getIntersections()};var Yi=function t(){this._nv=null;var e=arguments[0];this._nv=new Xi(t.toSegmentStrings(e))};Yi.prototype.checkValid=function(){this._nv.checkValid()},Yi.prototype.interfaces_=function(){return[]},Yi.prototype.getClass=function(){return Yi},Yi.toSegmentStrings=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next();e.add(new Ui(i.getCoordinates(),i))}return e},Yi.checkValid=function(t){new Yi(t).checkValid()};var ki=function(t){this._mapOp=t};ki.prototype.map=function(t){for(var e=new Nt,n=0;n<t.getNumGeometries();n++){var i=this._mapOp.map(t.getGeometryN(n));i.isEmpty()||e.add(i)}return t.getFactory().createGeometryCollection(_e.toGeometryArray(e))},ki.prototype.interfaces_=function(){return[]},ki.prototype.getClass=function(){return ki},ki.map=function(t,e){return new ki(e).map(t)};var ji=function(){this._op=null,this._geometryFactory=null,this._ptLocator=null,this._lineEdgesList=new Nt,this._resultLineList=new Nt;var t=arguments[0],e=arguments[1],n=arguments[2];this._op=t,this._geometryFactory=e,this._ptLocator=n};ji.prototype.collectLines=function(t){for(var e=this._op.getGraph().getEdgeEnds().iterator();e.hasNext();){var n=e.next();this.collectLineEdge(n,t,this._lineEdgesList),this.collectBoundaryTouchEdge(n,t,this._lineEdgesList)}},ji.prototype.labelIsolatedLine=function(t,e){var n=this._ptLocator.locate(t.getCoordinate(),this._op.getArgGeometry(e));t.getLabel().setLocation(e,n)},ji.prototype.build=function(t){return this.findCoveredLineEdges(),this.collectLines(t),this.buildLines(t),this._resultLineList},ji.prototype.collectLineEdge=function(t,e,n){var i=t.getLabel(),r=t.getEdge();t.isLineEdge()&&(t.isVisited()||!Lr.isResultOfOp(i,e)||r.isCovered()||(n.add(r),t.setVisitedEdge(!0)))},ji.prototype.findCoveredLineEdges=function(){for(var t=this._op.getGraph().getNodes().iterator();t.hasNext();){t.next().getEdges().findCoveredLineEdges()}for(var e=this._op.getGraph().getEdgeEnds().iterator();e.hasNext();){var n=e.next(),i=n.getEdge();if(n.isLineEdge()&&!i.isCoveredSet()){var r=this._op.isCoveredByA(n.getCoordinate());i.setCovered(r)}}},ji.prototype.labelIsolatedLines=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),i=n.getLabel();n.isIsolated()&&(i.isNull(0)?this.labelIsolatedLine(n,0):this.labelIsolatedLine(n,1))}},ji.prototype.buildLines=function(t){for(var e=this._lineEdgesList.iterator();e.hasNext();){var n=e.next(),i=this._geometryFactory.createLineString(n.getCoordinates());this._resultLineList.add(i),n.setInResult(!0)}},ji.prototype.collectBoundaryTouchEdge=function(t,e,n){var i=t.getLabel();return t.isLineEdge()?null:t.isVisited()?null:t.isInteriorAreaEdge()?null:t.getEdge().isInResult()?null:(et.isTrue(!(t.isInResult()||t.getSym().isInResult())||!t.getEdge().isInResult()),void(Lr.isResultOfOp(i,e)&&e===Lr.INTERSECTION&&(n.add(t.getEdge()),t.setVisitedEdge(!0))))},ji.prototype.interfaces_=function(){return[]},ji.prototype.getClass=function(){return ji};var Hi=function(){this._op=null,this._geometryFactory=null,this._resultPointList=new Nt;var t=arguments[0],e=arguments[1];this._op=t,this._geometryFactory=e};Hi.prototype.filterCoveredNodeToPoint=function(t){var e=t.getCoordinate();if(!this._op.isCoveredByLA(e)){var n=this._geometryFactory.createPoint(e);this._resultPointList.add(n)}},Hi.prototype.extractNonCoveredResultNodes=function(t){for(var e=this._op.getGraph().getNodes().iterator();e.hasNext();){var n=e.next();if(!n.isInResult()&&(!n.isIncidentEdgeInResult()&&(0===n.getEdges().getDegree()||t===Lr.INTERSECTION))){var i=n.getLabel();Lr.isResultOfOp(i,t)&&this.filterCoveredNodeToPoint(n)}}},Hi.prototype.build=function(t){return this.extractNonCoveredResultNodes(t),this._resultPointList},Hi.prototype.interfaces_=function(){return[]},Hi.prototype.getClass=function(){return Hi};var Wi=function(){this._inputGeom=null,this._factory=null,this._pruneEmptyGeometry=!0,this._preserveGeometryCollectionType=!0,this._preserveCollections=!1,this._preserveType=!1};Wi.prototype.transformPoint=function(t,e){return this._factory.createPoint(this.transformCoordinates(t.getCoordinateSequence(),t))},Wi.prototype.transformPolygon=function(t,e){var n=!0,i=this.transformLinearRing(t.getExteriorRing(),t);null!==i&&i instanceof ee&&!i.isEmpty()||(n=!1);for(var r=new Nt,o=0;o<t.getNumInteriorRing();o++){var s=this.transformLinearRing(t.getInteriorRingN(o),t);null===s||s.isEmpty()||(s instanceof ee||(n=!1),r.add(s))}if(n)return this._factory.createPolygon(i,r.toArray([]));var a=new Nt;return null!==i&&a.add(i),a.addAll(r),this._factory.buildGeometry(a)},Wi.prototype.createCoordinateSequence=function(t){return this._factory.getCoordinateSequenceFactory().create(t)},Wi.prototype.getInputGeometry=function(){return this._inputGeom},Wi.prototype.transformMultiLineString=function(t,e){for(var n=new Nt,i=0;i<t.getNumGeometries();i++){var r=this.transformLineString(t.getGeometryN(i),t);null!==r&&(r.isEmpty()||n.add(r))}return this._factory.buildGeometry(n)},Wi.prototype.transformCoordinates=function(t,e){return this.copy(t)},Wi.prototype.transformLineString=function(t,e){return this._factory.createLineString(this.transformCoordinates(t.getCoordinateSequence(),t))},Wi.prototype.transformMultiPoint=function(t,e){for(var n=new Nt,i=0;i<t.getNumGeometries();i++){var r=this.transformPoint(t.getGeometryN(i),t);null!==r&&(r.isEmpty()||n.add(r))}return this._factory.buildGeometry(n)},Wi.prototype.transformMultiPolygon=function(t,e){for(var n=new Nt,i=0;i<t.getNumGeometries();i++){var r=this.transformPolygon(t.getGeometryN(i),t);null!==r&&(r.isEmpty()||n.add(r))}return this._factory.buildGeometry(n)},Wi.prototype.copy=function(t){return t.copy()},Wi.prototype.transformGeometryCollection=function(t,e){for(var n=new Nt,i=0;i<t.getNumGeometries();i++){var r=this.transform(t.getGeometryN(i));null!==r&&(this._pruneEmptyGeometry&&r.isEmpty()||n.add(r))}return this._preserveGeometryCollectionType?this._factory.createGeometryCollection(_e.toGeometryArray(n)):this._factory.buildGeometry(n)},Wi.prototype.transform=function(t){if(this._inputGeom=t,this._factory=t.getFactory(),t instanceof Qt)return this.transformPoint(t,null);if(t instanceof te)return this.transformMultiPoint(t,null);if(t instanceof ee)return this.transformLinearRing(t,null);if(t instanceof Kt)return this.transformLineString(t,null);if(t instanceof Xt)return this.transformMultiLineString(t,null);if(t instanceof $t)return this.transformPolygon(t,null);if(t instanceof ne)return this.transformMultiPolygon(t,null);if(t instanceof zt)return this.transformGeometryCollection(t,null);throw new m(\"Unknown Geometry subtype: \"+t.getClass().getName())},Wi.prototype.transformLinearRing=function(t,e){var n=this.transformCoordinates(t.getCoordinateSequence(),t);if(null===n)return this._factory.createLinearRing(null);var i=n.size();return i>0&&i<4&&!this._preserveType?this._factory.createLineString(n):this._factory.createLinearRing(n)},Wi.prototype.interfaces_=function(){return[]},Wi.prototype.getClass=function(){return Wi};var Ki=function t(){if(this._snapTolerance=0,this._srcPts=null,this._seg=new dn,this._allowSnappingToSourceVertices=!1,this._isClosed=!1,arguments[0]instanceof Kt&&\"number\"==typeof arguments[1]){var e=arguments[0],n=arguments[1];t.call(this,e.getCoordinates(),n)}else if(arguments[0]instanceof Array&&\"number\"==typeof arguments[1]){var i=arguments[0],r=arguments[1];this._srcPts=i,this._isClosed=t.isClosed(i),this._snapTolerance=r}};Ki.prototype.snapVertices=function(t,e){for(var n=this._isClosed?t.size()-1:t.size(),i=0;i<n;i++){var r=t.get(i),o=this.findSnapForVertex(r,e);null!==o&&(t.set(i,new C(o)),0===i&&this._isClosed&&t.set(t.size()-1,new C(o)))}},Ki.prototype.findSnapForVertex=function(t,e){for(var n=0;n<e.length;n++){if(t.equals2D(e[n]))return null;if(t.distance(e[n])<this._snapTolerance)return e[n]}return null},Ki.prototype.snapTo=function(t){var e=new St(this._srcPts);this.snapVertices(e,t),this.snapSegments(e,t);return e.toCoordinateArray()},Ki.prototype.snapSegments=function(t,e){if(0===e.length)return null;var n=e.length;e[0].equals2D(e[e.length-1])&&(n=e.length-1);for(var i=0;i<n;i++){var r=e[i],o=this.findSegmentIndexToSnap(r,t);o>=0&&t.add(o+1,new C(r),!1)}},Ki.prototype.findSegmentIndexToSnap=function(t,e){for(var n=v.MAX_VALUE,i=-1,r=0;r<e.size()-1;r++){if(this._seg.p0=e.get(r),this._seg.p1=e.get(r+1),this._seg.p0.equals2D(t)||this._seg.p1.equals2D(t)){if(this._allowSnappingToSourceVertices)continue;return-1}var o=this._seg.distance(t);o<this._snapTolerance&&o<n&&(n=o,i=r)}return i},Ki.prototype.setAllowSnappingToSourceVertices=function(t){this._allowSnappingToSourceVertices=t},Ki.prototype.interfaces_=function(){return[]},Ki.prototype.getClass=function(){return Ki},Ki.isClosed=function(t){return!(t.length<=1)&&t[0].equals2D(t[t.length-1])};var Ji=function(t){this._srcGeom=t||null},Qi={SNAP_PRECISION_FACTOR:{configurable:!0}};Ji.prototype.snapTo=function(t,e){var n=this.extractTargetCoordinates(t);return new Zi(e,n).transform(this._srcGeom)},Ji.prototype.snapToSelf=function(t,e){var n=this.extractTargetCoordinates(this._srcGeom),i=new Zi(t,n,!0).transform(this._srcGeom),r=i;return e&&T(r,Zt)&&(r=i.buffer(0)),r},Ji.prototype.computeSnapTolerance=function(t){return this.computeMinimumSegmentLength(t)/10},Ji.prototype.extractTargetCoordinates=function(t){for(var e=new f,n=t.getCoordinates(),i=0;i<n.length;i++)e.add(n[i]);return e.toArray(new Array(0).fill(null))},Ji.prototype.computeMinimumSegmentLength=function(t){for(var e=v.MAX_VALUE,n=0;n<t.length-1;n++){var i=t[n].distance(t[n+1]);i<e&&(e=i)}return e},Ji.prototype.interfaces_=function(){return[]},Ji.prototype.getClass=function(){return Ji},Ji.snap=function(t,e,n){var i=new Array(2).fill(null),r=new Ji(t);i[0]=r.snapTo(e,n);var o=new Ji(e);return i[1]=o.snapTo(i[0],n),i},Ji.computeOverlaySnapTolerance=function(){if(1===arguments.length){var t=arguments[0],e=Ji.computeSizeBasedSnapTolerance(t),n=t.getPrecisionModel();if(n.getType()===fe.FIXED){var i=1/n.getScale()*2/1.415;i>e&&(e=i)}return e}if(2===arguments.length){var r=arguments[0],o=arguments[1];return Math.min(Ji.computeOverlaySnapTolerance(r),Ji.computeOverlaySnapTolerance(o))}},Ji.computeSizeBasedSnapTolerance=function(t){var e=t.getEnvelopeInternal();return Math.min(e.getHeight(),e.getWidth())*Ji.SNAP_PRECISION_FACTOR},Ji.snapToSelf=function(t,e,n){return new Ji(t).snapToSelf(e,n)},Qi.SNAP_PRECISION_FACTOR.get=function(){return 1e-9},Object.defineProperties(Ji,Qi);var Zi=function(t){function e(e,n,i){t.call(this),this._snapTolerance=e||null,this._snapPts=n||null,this._isSelfSnap=void 0!==i&&i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.snapLine=function(t,e){var n=new Ki(t,this._snapTolerance);return n.setAllowSnappingToSourceVertices(this._isSelfSnap),n.snapTo(e)},e.prototype.transformCoordinates=function(t,e){var n=t.toCoordinateArray(),i=this.snapLine(n,this._snapPts);return this._factory.getCoordinateSequenceFactory().create(i)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Wi),$i=function(){this._isFirst=!0,this._commonMantissaBitsCount=53,this._commonBits=0,this._commonSignExp=null};$i.prototype.getCommon=function(){return v.longBitsToDouble(this._commonBits)},$i.prototype.add=function(t){var e=v.doubleToLongBits(t);if(this._isFirst)return this._commonBits=e,this._commonSignExp=$i.signExpBits(this._commonBits),this._isFirst=!1,null;if($i.signExpBits(e)!==this._commonSignExp)return this._commonBits=0,null;this._commonMantissaBitsCount=$i.numCommonMostSigMantissaBits(this._commonBits,e),this._commonBits=$i.zeroLowerBits(this._commonBits,64-(12+this._commonMantissaBitsCount))},$i.prototype.toString=function(){if(1===arguments.length){var t=arguments[0],e=v.longBitsToDouble(t),n=\"0000000000000000000000000000000000000000000000000000000000000000\"+v.toBinaryString(t),i=n.substring(n.length-64);return i.substring(0,1)+\"  \"+i.substring(1,12)+\"(exp) \"+i.substring(12)+\" [ \"+e+\" ]\"}},$i.prototype.interfaces_=function(){return[]},$i.prototype.getClass=function(){return $i},$i.getBit=function(t,e){return 0!=(t&1<<e)?1:0},$i.signExpBits=function(t){return t>>52},$i.zeroLowerBits=function(t,e){return t&~((1<<e)-1)},$i.numCommonMostSigMantissaBits=function(t,e){for(var n=0,i=52;i>=0;i--){if($i.getBit(t,i)!==$i.getBit(e,i))return n;n++}return 52};var tr=function(){this._commonCoord=null,this._ccFilter=new nr},er={CommonCoordinateFilter:{configurable:!0},Translater:{configurable:!0}};tr.prototype.addCommonBits=function(t){var e=new ir(this._commonCoord);t.apply(e),t.geometryChanged()},tr.prototype.removeCommonBits=function(t){if(0===this._commonCoord.x&&0===this._commonCoord.y)return t;var e=new C(this._commonCoord);e.x=-e.x,e.y=-e.y;var n=new ir(e);return t.apply(n),t.geometryChanged(),t},tr.prototype.getCommonCoordinate=function(){return this._commonCoord},tr.prototype.add=function(t){t.apply(this._ccFilter),this._commonCoord=this._ccFilter.getCommonCoordinate()},tr.prototype.interfaces_=function(){return[]},tr.prototype.getClass=function(){return tr},er.CommonCoordinateFilter.get=function(){return nr},er.Translater.get=function(){return ir},Object.defineProperties(tr,er);var nr=function(){this._commonBitsX=new $i,this._commonBitsY=new $i};nr.prototype.filter=function(t){this._commonBitsX.add(t.x),this._commonBitsY.add(t.y)},nr.prototype.getCommonCoordinate=function(){return new C(this._commonBitsX.getCommon(),this._commonBitsY.getCommon())},nr.prototype.interfaces_=function(){return[ft]},nr.prototype.getClass=function(){return nr};var ir=function(){this.trans=null;var t=arguments[0];this.trans=t};ir.prototype.filter=function(t,e){var n=t.getOrdinate(e,0)+this.trans.x,i=t.getOrdinate(e,1)+this.trans.y;t.setOrdinate(e,0,n),t.setOrdinate(e,1,i)},ir.prototype.isDone=function(){return!1},ir.prototype.isGeometryChanged=function(){return!0},ir.prototype.interfaces_=function(){return[Ut]},ir.prototype.getClass=function(){return ir};var rr=function(t,e){this._geom=new Array(2).fill(null),this._snapTolerance=null,this._cbr=null,this._geom[0]=t,this._geom[1]=e,this.computeSnapTolerance()};rr.prototype.selfSnap=function(t){return new Ji(t).snapTo(t,this._snapTolerance)},rr.prototype.removeCommonBits=function(t){this._cbr=new tr,this._cbr.add(t[0]),this._cbr.add(t[1]);var e=new Array(2).fill(null);return e[0]=this._cbr.removeCommonBits(t[0].copy()),e[1]=this._cbr.removeCommonBits(t[1].copy()),e},rr.prototype.prepareResult=function(t){return this._cbr.addCommonBits(t),t},rr.prototype.getResultGeometry=function(t){var e=this.snap(this._geom),n=Lr.overlayOp(e[0],e[1],t);return this.prepareResult(n)},rr.prototype.checkValid=function(t){t.isValid()||Y.out.println(\"Snapped geometry is invalid\")},rr.prototype.computeSnapTolerance=function(){this._snapTolerance=Ji.computeOverlaySnapTolerance(this._geom[0],this._geom[1])},rr.prototype.snap=function(t){var e=this.removeCommonBits(t);return Ji.snap(e[0],e[1],this._snapTolerance)},rr.prototype.interfaces_=function(){return[]},rr.prototype.getClass=function(){return rr},rr.overlayOp=function(t,e,n){return new rr(t,e).getResultGeometry(n)},rr.union=function(t,e){return rr.overlayOp(t,e,Lr.UNION)},rr.intersection=function(t,e){return rr.overlayOp(t,e,Lr.INTERSECTION)},rr.symDifference=function(t,e){return rr.overlayOp(t,e,Lr.SYMDIFFERENCE)},rr.difference=function(t,e){return rr.overlayOp(t,e,Lr.DIFFERENCE)};var or=function(t,e){this._geom=new Array(2).fill(null),this._geom[0]=t,this._geom[1]=e};or.prototype.getResultGeometry=function(t){var e=null,n=!1,i=null;try{e=Lr.overlayOp(this._geom[0],this._geom[1],t);n=!0}catch(t){if(!(t instanceof $))throw t;i=t}if(!n)try{e=rr.overlayOp(this._geom[0],this._geom[1],t)}catch(t){throw t instanceof $?i:t}return e},or.prototype.interfaces_=function(){return[]},or.prototype.getClass=function(){return or},or.overlayOp=function(t,e,n){return new or(t,e).getResultGeometry(n)},or.union=function(t,e){return or.overlayOp(t,e,Lr.UNION)},or.intersection=function(t,e){return or.overlayOp(t,e,Lr.INTERSECTION)},or.symDifference=function(t,e){return or.overlayOp(t,e,Lr.SYMDIFFERENCE)},or.difference=function(t,e){return or.overlayOp(t,e,Lr.DIFFERENCE)};var sr=function(){this.mce=null,this.chainIndex=null;var t=arguments[0],e=arguments[1];this.mce=t,this.chainIndex=e};sr.prototype.computeIntersections=function(t,e){this.mce.computeIntersectsForChain(this.chainIndex,t.mce,t.chainIndex,e)},sr.prototype.interfaces_=function(){return[]},sr.prototype.getClass=function(){return sr};var ar=function t(){if(this._label=null,this._xValue=null,this._eventType=null,this._insertEvent=null,this._deleteEventIndex=null,this._obj=null,2===arguments.length){var e=arguments[0],n=arguments[1];this._eventType=t.DELETE,this._xValue=e,this._insertEvent=n}else if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];this._eventType=t.INSERT,this._label=i,this._xValue=r,this._obj=o}},ur={INSERT:{configurable:!0},DELETE:{configurable:!0}};ar.prototype.isDelete=function(){return this._eventType===ar.DELETE},ar.prototype.setDeleteEventIndex=function(t){this._deleteEventIndex=t},ar.prototype.getObject=function(){return this._obj},ar.prototype.compareTo=function(t){var e=t;return this._xValue<e._xValue?-1:this._xValue>e._xValue?1:this._eventType<e._eventType?-1:this._eventType>e._eventType?1:0},ar.prototype.getInsertEvent=function(){return this._insertEvent},ar.prototype.isInsert=function(){return this._eventType===ar.INSERT},ar.prototype.isSameLabel=function(t){return null!==this._label&&this._label===t._label},ar.prototype.getDeleteEventIndex=function(){return this._deleteEventIndex},ar.prototype.interfaces_=function(){return[E]},ar.prototype.getClass=function(){return ar},ur.INSERT.get=function(){return 1},ur.DELETE.get=function(){return 2},Object.defineProperties(ar,ur);var lr=function(){};lr.prototype.interfaces_=function(){return[]},lr.prototype.getClass=function(){return lr};var cr=function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._properIntersectionPoint=null,this._li=null,this._includeProper=null,this._recordIsolated=null,this._isSelfIntersection=null,this._numIntersections=0,this.numTests=0,this._bdyNodes=null,this._isDone=!1,this._isDoneWhenProperInt=!1;var t=arguments[0],e=arguments[1],n=arguments[2];this._li=t,this._includeProper=e,this._recordIsolated=n};cr.prototype.isTrivialIntersection=function(t,e,n,i){if(t===n&&1===this._li.getIntersectionNum()){if(cr.isAdjacentSegments(e,i))return!0;if(t.isClosed()){var r=t.getNumPoints()-1;if(0===e&&i===r||0===i&&e===r)return!0}}return!1},cr.prototype.getProperIntersectionPoint=function(){return this._properIntersectionPoint},cr.prototype.setIsDoneIfProperInt=function(t){this._isDoneWhenProperInt=t},cr.prototype.hasProperInteriorIntersection=function(){return this._hasProperInterior},cr.prototype.isBoundaryPointInternal=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next().getCoordinate();if(t.isIntersection(i))return!0}return!1},cr.prototype.hasProperIntersection=function(){return this._hasProper},cr.prototype.hasIntersection=function(){return this._hasIntersection},cr.prototype.isDone=function(){return this._isDone},cr.prototype.isBoundaryPoint=function(t,e){return null!==e&&(!!this.isBoundaryPointInternal(t,e[0])||!!this.isBoundaryPointInternal(t,e[1]))},cr.prototype.setBoundaryNodes=function(t,e){this._bdyNodes=new Array(2).fill(null),this._bdyNodes[0]=t,this._bdyNodes[1]=e},cr.prototype.addIntersections=function(t,e,n,i){if(t===n&&e===i)return null;this.numTests++;var r=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[i],a=n.getCoordinates()[i+1];this._li.computeIntersection(r,o,s,a),this._li.hasIntersection()&&(this._recordIsolated&&(t.setIsolated(!1),n.setIsolated(!1)),this._numIntersections++,this.isTrivialIntersection(t,e,n,i)||(this._hasIntersection=!0,!this._includeProper&&this._li.isProper()||(t.addIntersections(this._li,e,0),n.addIntersections(this._li,i,1)),this._li.isProper()&&(this._properIntersectionPoint=this._li.getIntersection(0).copy(),this._hasProper=!0,this._isDoneWhenProperInt&&(this._isDone=!0),this.isBoundaryPoint(this._li,this._bdyNodes)||(this._hasProperInterior=!0))))},cr.prototype.interfaces_=function(){return[]},cr.prototype.getClass=function(){return cr},cr.isAdjacentSegments=function(t,e){return 1===Math.abs(t-e)};var pr=function(t){function e(){t.call(this),this.events=new Nt,this.nOverlaps=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.prepareEvents=function(){$e.sort(this.events);for(var t=0;t<this.events.size();t++){var e=this.events.get(t);e.isDelete()&&e.getInsertEvent().setDeleteEventIndex(t)}},e.prototype.computeIntersections=function(){if(1===arguments.length){var t=arguments[0];this.nOverlaps=0,this.prepareEvents();for(var e=0;e<this.events.size();e++){var n=this.events.get(e);if(n.isInsert()&&this.processOverlaps(e,n.getDeleteEventIndex(),n,t),t.isDone())break}}else if(3===arguments.length)if(arguments[2]instanceof cr&&T(arguments[0],xt)&&T(arguments[1],xt)){var i=arguments[0],r=arguments[1],o=arguments[2];this.addEdges(i,i),this.addEdges(r,r),this.computeIntersections(o)}else if(\"boolean\"==typeof arguments[2]&&T(arguments[0],xt)&&arguments[1]instanceof cr){var s=arguments[0],a=arguments[1];arguments[2]?this.addEdges(s,null):this.addEdges(s),this.computeIntersections(a)}},e.prototype.addEdge=function(t,e){for(var n=t.getMonotoneChainEdge(),i=n.getStartIndexes(),r=0;r<i.length-1;r++){var o=new sr(n,r),s=new ar(e,n.getMinX(r),o);this.events.add(s),this.events.add(new ar(n.getMaxX(r),s))}},e.prototype.processOverlaps=function(t,e,n,i){for(var r=n.getObject(),o=t;o<e;o++){var s=this.events.get(o);if(s.isInsert()){var a=s.getObject();n.isSameLabel(s)||(r.computeIntersections(a,i),this.nOverlaps++)}}},e.prototype.addEdges=function(){if(1===arguments.length)for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.addEdge(e,e)}else if(2===arguments.length)for(var n=arguments[0],i=arguments[1],r=n.iterator();r.hasNext();){var o=r.next();this.addEdge(o,i)}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(lr),hr=function(){this._min=v.POSITIVE_INFINITY,this._max=v.NEGATIVE_INFINITY},fr={NodeComparator:{configurable:!0}};hr.prototype.getMin=function(){return this._min},hr.prototype.intersects=function(t,e){return!(this._min>e||this._max<t)},hr.prototype.getMax=function(){return this._max},hr.prototype.toString=function(){return Z.toLineString(new C(this._min,0),new C(this._max,0))},hr.prototype.interfaces_=function(){return[]},hr.prototype.getClass=function(){return hr},fr.NodeComparator.get=function(){return gr},Object.defineProperties(hr,fr);var gr=function(){};gr.prototype.compare=function(t,e){var n=t,i=e,r=(n._min+n._max)/2,o=(i._min+i._max)/2;return r<o?-1:r>o?1:0},gr.prototype.interfaces_=function(){return[N]},gr.prototype.getClass=function(){return gr};var dr=function(t){function e(){t.call(this),this._item=null;var e=arguments[0],n=arguments[1],i=arguments[2];this._min=e,this._max=n,this._item=i}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.query=function(t,e,n){if(!this.intersects(t,e))return null;n.visitItem(this._item)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(hr),yr=function(t){function e(){t.call(this),this._node1=null,this._node2=null;var e=arguments[0],n=arguments[1];this._node1=e,this._node2=n,this.buildExtent(this._node1,this._node2)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.buildExtent=function(t,e){this._min=Math.min(t._min,e._min),this._max=Math.max(t._max,e._max)},e.prototype.query=function(t,e,n){if(!this.intersects(t,e))return null;null!==this._node1&&this._node1.query(t,e,n),null!==this._node2&&this._node2.query(t,e,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(hr),_r=function(){this._leaves=new Nt,this._root=null,this._level=0};_r.prototype.buildTree=function(){$e.sort(this._leaves,new hr.NodeComparator);for(var t=this._leaves,e=null,n=new Nt;;){if(this.buildLevel(t,n),1===n.size())return n.get(0);e=t,t=n,n=e}},_r.prototype.insert=function(t,e,n){if(null!==this._root)throw new Error(\"Index cannot be added to once it has been queried\");this._leaves.add(new dr(t,e,n))},_r.prototype.query=function(t,e,n){this.init(),this._root.query(t,e,n)},_r.prototype.buildRoot=function(){if(null!==this._root)return null;this._root=this.buildTree()},_r.prototype.printNode=function(t){Y.out.println(Z.toLineString(new C(t._min,this._level),new C(t._max,this._level)))},_r.prototype.init=function(){if(null!==this._root)return null;this.buildRoot()},_r.prototype.buildLevel=function(t,e){this._level++,e.clear();for(var n=0;n<t.size();n+=2){var i=t.get(n);if(null===(n+1<t.size()?t.get(n):null))e.add(i);else{var r=new yr(t.get(n),t.get(n+1));e.add(r)}}},_r.prototype.interfaces_=function(){return[]},_r.prototype.getClass=function(){return _r};var mr=function(){this._items=new Nt};mr.prototype.visitItem=function(t){this._items.add(t)},mr.prototype.getItems=function(){return this._items},mr.prototype.interfaces_=function(){return[Ke]},mr.prototype.getClass=function(){return mr};var vr=function(){this._index=null;var t=arguments[0];if(!T(t,Zt))throw new m(\"Argument must be Polygonal\");this._index=new xr(t)},Ir={SegmentVisitor:{configurable:!0},IntervalIndexedGeometry:{configurable:!0}};vr.prototype.locate=function(t){var e=new st(t),n=new Er(e);return this._index.query(t.y,t.y,n),e.getLocation()},vr.prototype.interfaces_=function(){return[Vn]},vr.prototype.getClass=function(){return vr},Ir.SegmentVisitor.get=function(){return Er},Ir.IntervalIndexedGeometry.get=function(){return xr},Object.defineProperties(vr,Ir);var Er=function(){this._counter=null;var t=arguments[0];this._counter=t};Er.prototype.visitItem=function(t){var e=t;this._counter.countSegment(e.getCoordinate(0),e.getCoordinate(1))},Er.prototype.interfaces_=function(){return[Ke]},Er.prototype.getClass=function(){return Er};var xr=function(){this._index=new _r;var t=arguments[0];this.init(t)};xr.prototype.init=function(t){for(var e=Ci.getLines(t).iterator();e.hasNext();){var n=e.next().getCoordinates();this.addLine(n)}},xr.prototype.addLine=function(t){for(var e=1;e<t.length;e++){var n=new dn(t[e-1],t[e]),i=Math.min(n.p0.y,n.p1.y),r=Math.max(n.p0.y,n.p1.y);this._index.insert(i,r,n)}},xr.prototype.query=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=new mr;return this._index.query(t,e,n),n.getItems()}if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];this._index.query(i,r,o)}},xr.prototype.interfaces_=function(){return[]},xr.prototype.getClass=function(){return xr};var Nr=function(t){function e(){if(t.call(this),this._parentGeom=null,this._lineEdgeMap=new he,this._boundaryNodeRule=null,this._useBoundaryDeterminationRule=!0,this._argIndex=null,this._boundaryNodes=null,this._hasTooFewPoints=!1,this._invalidPoint=null,this._areaPtLocator=null,this._ptLocator=new Si,2===arguments.length){var e=arguments[0],n=arguments[1],i=gt.OGC_SFS_BOUNDARY_RULE;this._argIndex=e,this._parentGeom=n,this._boundaryNodeRule=i,null!==n&&this.add(n)}else if(3===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2];this._argIndex=r,this._parentGeom=o,this._boundaryNodeRule=s,null!==o&&this.add(o)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.insertBoundaryPoint=function(t,n){var i=this._nodes.addNode(n).getLabel(),r=1;w.NONE;i.getLocation(t,Se.ON)===w.BOUNDARY&&r++;var o=e.determineBoundary(this._boundaryNodeRule,r);i.setLocation(t,o)},e.prototype.computeSelfNodes=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.computeSelfNodes(t,e,!1)}if(3===arguments.length){var n=arguments[0],i=arguments[1],r=arguments[2],o=new cr(n,!0,!1);o.setIsDoneIfProperInt(r);var s=this.createEdgeSetIntersector(),a=this._parentGeom instanceof ee||this._parentGeom instanceof $t||this._parentGeom instanceof ne,u=i||!a;return s.computeIntersections(this._edges,o,u),this.addSelfIntersectionNodes(this._argIndex),o}},e.prototype.computeSplitEdges=function(t){for(var e=this._edges.iterator();e.hasNext();){e.next().eiList.addSplitEdges(t)}},e.prototype.computeEdgeIntersections=function(t,e,n){var i=new cr(e,n,!0);i.setBoundaryNodes(this.getBoundaryNodes(),t.getBoundaryNodes());return this.createEdgeSetIntersector().computeIntersections(this._edges,t._edges,i),i},e.prototype.getGeometry=function(){return this._parentGeom},e.prototype.getBoundaryNodeRule=function(){return this._boundaryNodeRule},e.prototype.hasTooFewPoints=function(){return this._hasTooFewPoints},e.prototype.addPoint=function(){if(arguments[0]instanceof Qt){var t=arguments[0].getCoordinate();this.insertPoint(this._argIndex,t,w.INTERIOR)}else if(arguments[0]instanceof C){var e=arguments[0];this.insertPoint(this._argIndex,e,w.INTERIOR)}},e.prototype.addPolygon=function(t){this.addPolygonRing(t.getExteriorRing(),w.EXTERIOR,w.INTERIOR);for(var e=0;e<t.getNumInteriorRing();e++){var n=t.getInteriorRingN(e);this.addPolygonRing(n,w.INTERIOR,w.EXTERIOR)}},e.prototype.addEdge=function(t){this.insertEdge(t);var e=t.getCoordinates();this.insertPoint(this._argIndex,e[0],w.BOUNDARY),this.insertPoint(this._argIndex,e[e.length-1],w.BOUNDARY)},e.prototype.addLineString=function(t){var e=Lt.removeRepeatedPoints(t.getCoordinates());if(e.length<2)return this._hasTooFewPoints=!0,this._invalidPoint=e[0],null;var n=new ni(e,new Pe(this._argIndex,w.INTERIOR));this._lineEdgeMap.put(t,n),this.insertEdge(n),et.isTrue(e.length>=2,\"found LineString with single point\"),this.insertBoundaryPoint(this._argIndex,e[0]),this.insertBoundaryPoint(this._argIndex,e[e.length-1])},e.prototype.getInvalidPoint=function(){return this._invalidPoint},e.prototype.getBoundaryPoints=function(){for(var t=this.getBoundaryNodes(),e=new Array(t.size()).fill(null),n=0,i=t.iterator();i.hasNext();){var r=i.next();e[n++]=r.getCoordinate().copy()}return e},e.prototype.getBoundaryNodes=function(){return null===this._boundaryNodes&&(this._boundaryNodes=this._nodes.getBoundaryNodes(this._argIndex)),this._boundaryNodes},e.prototype.addSelfIntersectionNode=function(t,e,n){if(this.isBoundaryNode(t,e))return null;n===w.BOUNDARY&&this._useBoundaryDeterminationRule?this.insertBoundaryPoint(t,e):this.insertPoint(t,e,n)},e.prototype.addPolygonRing=function(t,e,n){if(t.isEmpty())return null;var i=Lt.removeRepeatedPoints(t.getCoordinates());if(i.length<4)return this._hasTooFewPoints=!0,this._invalidPoint=i[0],null;var r=e,o=n;at.isCCW(i)&&(r=n,o=e);var s=new ni(i,new Pe(this._argIndex,w.BOUNDARY,r,o));this._lineEdgeMap.put(t,s),this.insertEdge(s),this.insertPoint(this._argIndex,i[0],w.BOUNDARY)},e.prototype.insertPoint=function(t,e,n){var i=this._nodes.addNode(e),r=i.getLabel();null===r?i._label=new Pe(t,n):r.setLocation(t,n)},e.prototype.createEdgeSetIntersector=function(){return new pr},e.prototype.addSelfIntersectionNodes=function(t){for(var e=this._edges.iterator();e.hasNext();)for(var n=e.next(),i=n.getLabel().getLocation(t),r=n.eiList.iterator();r.hasNext();){var o=r.next();this.addSelfIntersectionNode(t,o.coord,i)}},e.prototype.add=function(){if(1!==arguments.length)return t.prototype.add.apply(this,arguments);var e=arguments[0];if(e.isEmpty())return null;if(e instanceof ne&&(this._useBoundaryDeterminationRule=!1),e instanceof $t)this.addPolygon(e);else if(e instanceof Kt)this.addLineString(e);else if(e instanceof Qt)this.addPoint(e);else if(e instanceof te)this.addCollection(e);else if(e instanceof Xt)this.addCollection(e);else if(e instanceof ne)this.addCollection(e);else{if(!(e instanceof zt))throw new Error(e.getClass().getName());this.addCollection(e)}},e.prototype.addCollection=function(t){for(var e=0;e<t.getNumGeometries();e++){var n=t.getGeometryN(e);this.add(n)}},e.prototype.locate=function(t){return T(this._parentGeom,Zt)&&this._parentGeom.getNumGeometries()>50?(null===this._areaPtLocator&&(this._areaPtLocator=new vr(this._parentGeom)),this._areaPtLocator.locate(t)):this._ptLocator.locate(t,this._parentGeom)},e.prototype.findEdge=function(){if(1===arguments.length){var e=arguments[0];return this._lineEdgeMap.get(e)}return t.prototype.findEdge.apply(this,arguments)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.determineBoundary=function(t,e){return t.isInBoundary(e)?w.BOUNDARY:w.INTERIOR},e}(Ye),Cr=function(){if(this._li=new rt,this._resultPrecisionModel=null,this._arg=null,1===arguments.length){var t=arguments[0];this.setComputationPrecision(t.getPrecisionModel()),this._arg=new Array(1).fill(null),this._arg[0]=new Nr(0,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],i=gt.OGC_SFS_BOUNDARY_RULE;e.getPrecisionModel().compareTo(n.getPrecisionModel())>=0?this.setComputationPrecision(e.getPrecisionModel()):this.setComputationPrecision(n.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Nr(0,e,i),this._arg[1]=new Nr(1,n,i)}else if(3===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2];r.getPrecisionModel().compareTo(o.getPrecisionModel())>=0?this.setComputationPrecision(r.getPrecisionModel()):this.setComputationPrecision(o.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Nr(0,r,s),this._arg[1]=new Nr(1,o,s)}};Cr.prototype.getArgGeometry=function(t){return this._arg[t].getGeometry()},Cr.prototype.setComputationPrecision=function(t){this._resultPrecisionModel=t,this._li.setPrecisionModel(this._resultPrecisionModel)},Cr.prototype.interfaces_=function(){return[]},Cr.prototype.getClass=function(){return Cr};var Sr=function(){};Sr.prototype.interfaces_=function(){return[]},Sr.prototype.getClass=function(){return Sr},Sr.map=function(){if(arguments[0]instanceof ct&&T(arguments[1],Sr.MapOp)){for(var t=arguments[0],e=arguments[1],n=new Nt,i=0;i<t.getNumGeometries();i++){var r=e.map(t.getGeometryN(i));null!==r&&n.add(r)}return t.getFactory().buildGeometry(n)}if(T(arguments[0],It)&&T(arguments[1],Sr.MapOp)){for(var o=arguments[0],s=arguments[1],a=new Nt,u=o.iterator();u.hasNext();){var l=u.next(),c=s.map(l);null!==c&&a.add(c)}return a}},Sr.MapOp=function(){};var Lr=function(t){function e(){var e=arguments[0],n=arguments[1];t.call(this,e,n),this._ptLocator=new Si,this._geomFact=null,this._resultGeom=null,this._graph=null,this._edgeList=new Hn,this._resultPolyList=new Nt,this._resultLineList=new Nt,this._resultPointList=new Nt,this._graph=new Ye(new kn),this._geomFact=e.getFactory()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.insertUniqueEdge=function(t){var e=this._edgeList.findEqualEdge(t);if(null!==e){var n=e.getLabel(),i=t.getLabel();e.isPointwiseEqual(t)||(i=new Pe(t.getLabel())).flip();var r=e.getDepth();r.isNull()&&r.add(n),r.add(i),n.merge(i)}else this._edgeList.add(t)},e.prototype.getGraph=function(){return this._graph},e.prototype.cancelDuplicateResultEdges=function(){for(var t=this._graph.getEdgeEnds().iterator();t.hasNext();){var e=t.next(),n=e.getSym();e.isInResult()&&n.isInResult()&&(e.setInResult(!1),n.setInResult(!1))}},e.prototype.isCoveredByLA=function(t){return!!this.isCovered(t,this._resultLineList)||!!this.isCovered(t,this._resultPolyList)},e.prototype.computeGeometry=function(t,n,i,r){var o=new Nt;return o.addAll(t),o.addAll(n),o.addAll(i),o.isEmpty()?e.createEmptyResult(r,this._arg[0].getGeometry(),this._arg[1].getGeometry(),this._geomFact):this._geomFact.buildGeometry(o)},e.prototype.mergeSymLabels=function(){for(var t=this._graph.getNodes().iterator();t.hasNext();){t.next().getEdges().mergeSymLabels()}},e.prototype.isCovered=function(t,e){for(var n=e.iterator();n.hasNext();){var i=n.next();if(this._ptLocator.locate(t,i)!==w.EXTERIOR)return!0}return!1},e.prototype.replaceCollapsedEdges=function(){for(var t=new Nt,e=this._edgeList.iterator();e.hasNext();){var n=e.next();n.isCollapsed()&&(e.remove(),t.add(n.getCollapsedEdge()))}this._edgeList.addAll(t)},e.prototype.updateNodeLabelling=function(){for(var t=this._graph.getNodes().iterator();t.hasNext();){var e=t.next(),n=e.getEdges().getLabel();e.getLabel().merge(n)}},e.prototype.getResultGeometry=function(t){return this.computeOverlay(t),this._resultGeom},e.prototype.insertUniqueEdges=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();this.insertUniqueEdge(n)}},e.prototype.computeOverlay=function(t){this.copyPoints(0),this.copyPoints(1),this._arg[0].computeSelfNodes(this._li,!1),this._arg[1].computeSelfNodes(this._li,!1),this._arg[0].computeEdgeIntersections(this._arg[1],this._li,!0);var e=new Nt;this._arg[0].computeSplitEdges(e),this._arg[1].computeSplitEdges(e),this.insertUniqueEdges(e),this.computeLabelsFromDepths(),this.replaceCollapsedEdges(),Yi.checkValid(this._edgeList.getEdges()),this._graph.addEdges(this._edgeList.getEdges()),this.computeLabelling(),this.labelIncompleteNodes(),this.findResultAreaEdges(t),this.cancelDuplicateResultEdges();var n=new ke(this._geomFact);n.add(this._graph),this._resultPolyList=n.getPolygons();var i=new ji(this,this._geomFact,this._ptLocator);this._resultLineList=i.build(t);var r=new Hi(this,this._geomFact,this._ptLocator);this._resultPointList=r.build(t),this._resultGeom=this.computeGeometry(this._resultPointList,this._resultLineList,this._resultPolyList,t)},e.prototype.labelIncompleteNode=function(t,e){var n=this._ptLocator.locate(t.getCoordinate(),this._arg[e].getGeometry());t.getLabel().setLocation(e,n)},e.prototype.copyPoints=function(t){for(var e=this._arg[t].getNodeIterator();e.hasNext();){var n=e.next();this._graph.addNode(n.getCoordinate()).setLabel(t,n.getLabel().getLocation(t))}},e.prototype.findResultAreaEdges=function(t){for(var n=this._graph.getEdgeEnds().iterator();n.hasNext();){var i=n.next(),r=i.getLabel();r.isArea()&&!i.isInteriorAreaEdge()&&e.isResultOfOp(r.getLocation(0,Se.RIGHT),r.getLocation(1,Se.RIGHT),t)&&i.setInResult(!0)}},e.prototype.computeLabelsFromDepths=function(){for(var t=this._edgeList.iterator();t.hasNext();){var e=t.next(),n=e.getLabel(),i=e.getDepth();if(!i.isNull()){i.normalize();for(var r=0;r<2;r++)n.isNull(r)||!n.isArea()||i.isNull(r)||(0===i.getDelta(r)?n.toLine(r):(et.isTrue(!i.isNull(r,Se.LEFT),\"depth of LEFT side has not been initialized\"),n.setLocation(r,Se.LEFT,i.getLocation(r,Se.LEFT)),et.isTrue(!i.isNull(r,Se.RIGHT),\"depth of RIGHT side has not been initialized\"),n.setLocation(r,Se.RIGHT,i.getLocation(r,Se.RIGHT))))}}},e.prototype.computeLabelling=function(){for(var t=this._graph.getNodes().iterator();t.hasNext();){t.next().getEdges().computeLabelling(this._arg)}this.mergeSymLabels(),this.updateNodeLabelling()},e.prototype.labelIncompleteNodes=function(){for(var t=this._graph.getNodes().iterator();t.hasNext();){var e=t.next(),n=e.getLabel();e.isIsolated()&&(n.isNull(0)?this.labelIncompleteNode(e,0):this.labelIncompleteNode(e,1)),e.getEdges().updateLabelling(n)}},e.prototype.isCoveredByA=function(t){return!!this.isCovered(t,this._resultPolyList)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Cr);Lr.overlayOp=function(t,e,n){return new Lr(t,e).getResultGeometry(n)},Lr.intersection=function(t,e){if(t.isEmpty()||e.isEmpty())return Lr.createEmptyResult(Lr.INTERSECTION,t,e,t.getFactory());if(t.isGeometryCollection()){var n=e;return ki.map(t,{interfaces_:function(){return[Sr.MapOp]},map:function(t){return t.intersection(n)}})}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.INTERSECTION)},Lr.symDifference=function(t,e){if(t.isEmpty()||e.isEmpty()){if(t.isEmpty()&&e.isEmpty())return Lr.createEmptyResult(Lr.SYMDIFFERENCE,t,e,t.getFactory());if(t.isEmpty())return e.copy();if(e.isEmpty())return t.copy()}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.SYMDIFFERENCE)},Lr.resultDimension=function(t,e,n){var i=e.getDimension(),r=n.getDimension(),o=-1;switch(t){case Lr.INTERSECTION:o=Math.min(i,r);break;case Lr.UNION:o=Math.max(i,r);break;case Lr.DIFFERENCE:o=i;break;case Lr.SYMDIFFERENCE:o=Math.max(i,r)}return o},Lr.createEmptyResult=function(t,e,n,i){var r=null;switch(Lr.resultDimension(t,e,n)){case-1:r=i.createGeometryCollection(new Array(0).fill(null));break;case 0:r=i.createPoint();break;case 1:r=i.createLineString();break;case 2:r=i.createPolygon()}return r},Lr.difference=function(t,e){return t.isEmpty()?Lr.createEmptyResult(Lr.DIFFERENCE,t,e,t.getFactory()):e.isEmpty()?t.copy():(t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.DIFFERENCE))},Lr.isResultOfOp=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=t.getLocation(0),i=t.getLocation(1);return Lr.isResultOfOp(n,i,e)}if(3===arguments.length){var r=arguments[0],o=arguments[1],s=arguments[2];switch(r===w.BOUNDARY&&(r=w.INTERIOR),o===w.BOUNDARY&&(o=w.INTERIOR),s){case Lr.INTERSECTION:return r===w.INTERIOR&&o===w.INTERIOR;case Lr.UNION:return r===w.INTERIOR||o===w.INTERIOR;case Lr.DIFFERENCE:return r===w.INTERIOR&&o!==w.INTERIOR;case Lr.SYMDIFFERENCE:return r===w.INTERIOR&&o!==w.INTERIOR||r!==w.INTERIOR&&o===w.INTERIOR}return!1}},Lr.INTERSECTION=1,Lr.UNION=2,Lr.DIFFERENCE=3,Lr.SYMDIFFERENCE=4;var br=function(){this._g=null,this._boundaryDistanceTolerance=null,this._linework=null,this._ptLocator=new Si,this._seg=new dn;var t=arguments[0],e=arguments[1];this._g=t,this._boundaryDistanceTolerance=e,this._linework=this.extractLinework(t)};br.prototype.isWithinToleranceOfBoundary=function(t){for(var e=0;e<this._linework.getNumGeometries();e++)for(var n=this._linework.getGeometryN(e).getCoordinateSequence(),i=0;i<n.size()-1;i++){n.getCoordinate(i,this._seg.p0),n.getCoordinate(i+1,this._seg.p1);if(this._seg.distance(t)<=this._boundaryDistanceTolerance)return!0}return!1},br.prototype.getLocation=function(t){return this.isWithinToleranceOfBoundary(t)?w.BOUNDARY:this._ptLocator.locate(t,this._g)},br.prototype.extractLinework=function(t){var e=new wr;t.apply(e);var n=e.getLinework(),i=_e.toLineStringArray(n);return t.getFactory().createMultiLineString(i)},br.prototype.interfaces_=function(){return[]},br.prototype.getClass=function(){return br};var wr=function(){this._linework=null,this._linework=new Nt};wr.prototype.getLinework=function(){return this._linework},wr.prototype.filter=function(t){if(t instanceof $t){var e=t;this._linework.add(e.getExteriorRing());for(var n=0;n<e.getNumInteriorRing();n++)this._linework.add(e.getInteriorRingN(n))}},wr.prototype.interfaces_=function(){return[Vt]},wr.prototype.getClass=function(){return wr};var Or=function(){this._g=null,this._doLeft=!0,this._doRight=!0;var t=arguments[0];this._g=t};Or.prototype.extractPoints=function(t,e,n){for(var i=t.getCoordinates(),r=0;r<i.length-1;r++)this.computeOffsetPoints(i[r],i[r+1],e,n)},Or.prototype.setSidesToGenerate=function(t,e){this._doLeft=t,this._doRight=e},Or.prototype.getPoints=function(t){for(var e=new Nt,n=Ci.getLines(this._g).iterator();n.hasNext();){var i=n.next();this.extractPoints(i,t,e)}return e},Or.prototype.computeOffsetPoints=function(t,e,n,i){var r=e.x-t.x,o=e.y-t.y,s=Math.sqrt(r*r+o*o),a=n*r/s,u=n*o/s,l=(e.x+t.x)/2,c=(e.y+t.y)/2;if(this._doLeft){var p=new C(l-u,c+a);i.add(p)}if(this._doRight){var h=new C(l+u,c-a);i.add(h)}},Or.prototype.interfaces_=function(){return[]},Or.prototype.getClass=function(){return Or};var Tr=function t(){this._geom=null,this._locFinder=null,this._location=new Array(3).fill(null),this._invalidLocation=null,this._boundaryDistanceTolerance=t.TOLERANCE,this._testCoords=new Nt;var e=arguments[0],n=arguments[1],i=arguments[2];this._boundaryDistanceTolerance=t.computeBoundaryDistanceTolerance(e,n),this._geom=[e,n,i],this._locFinder=[new br(this._geom[0],this._boundaryDistanceTolerance),new br(this._geom[1],this._boundaryDistanceTolerance),new br(this._geom[2],this._boundaryDistanceTolerance)]},Rr={TOLERANCE:{configurable:!0}};Tr.prototype.reportResult=function(t,e,n){Y.out.println(\"Overlay result invalid - A:\"+w.toLocationSymbol(e[0])+\" B:\"+w.toLocationSymbol(e[1])+\" expected:\"+(n?\"i\":\"e\")+\" actual:\"+w.toLocationSymbol(e[2]))},Tr.prototype.isValid=function(t){this.addTestPts(this._geom[0]),this.addTestPts(this._geom[1]);var e=this.checkValid(t);return e},Tr.prototype.checkValid=function(){if(1===arguments.length){for(var t=arguments[0],e=0;e<this._testCoords.size();e++){var n=this._testCoords.get(e);if(!this.checkValid(t,n))return this._invalidLocation=n,!1}return!0}if(2===arguments.length){var i=arguments[0],r=arguments[1];return this._location[0]=this._locFinder[0].getLocation(r),this._location[1]=this._locFinder[1].getLocation(r),this._location[2]=this._locFinder[2].getLocation(r),!!Tr.hasLocation(this._location,w.BOUNDARY)||this.isValidResult(i,this._location)}},Tr.prototype.addTestPts=function(t){var e=new Or(t);this._testCoords.addAll(e.getPoints(5*this._boundaryDistanceTolerance))},Tr.prototype.isValidResult=function(t,e){var n=Lr.isResultOfOp(e[0],e[1],t),i=!(n^e[2]===w.INTERIOR);return i||this.reportResult(t,e,n),i},Tr.prototype.getInvalidLocation=function(){return this._invalidLocation},Tr.prototype.interfaces_=function(){return[]},Tr.prototype.getClass=function(){return Tr},Tr.hasLocation=function(t,e){for(var n=0;n<3;n++)if(t[n]===e)return!0;return!1},Tr.computeBoundaryDistanceTolerance=function(t,e){return Math.min(Ji.computeSizeBasedSnapTolerance(t),Ji.computeSizeBasedSnapTolerance(e))},Tr.isValid=function(t,e,n,i){return new Tr(t,e,i).isValid(n)},Rr.TOLERANCE.get=function(){return 1e-6},Object.defineProperties(Tr,Rr);var Pr=function t(e){this._geomFactory=null,this._skipEmpty=!1,this._inputGeoms=null,this._geomFactory=t.extractFactory(e),this._inputGeoms=e};Pr.prototype.extractElements=function(t,e){if(null===t)return null;for(var n=0;n<t.getNumGeometries();n++){var i=t.getGeometryN(n);this._skipEmpty&&i.isEmpty()||e.add(i)}},Pr.prototype.combine=function(){for(var t=new Nt,e=this._inputGeoms.iterator();e.hasNext();){var n=e.next();this.extractElements(n,t)}return 0===t.size()?null!==this._geomFactory?this._geomFactory.createGeometryCollection(null):null:this._geomFactory.buildGeometry(t)},Pr.prototype.interfaces_=function(){return[]},Pr.prototype.getClass=function(){return Pr},Pr.combine=function(){if(1===arguments.length){var t=arguments[0];return new Pr(t).combine()}if(2===arguments.length){var e=arguments[0],n=arguments[1];return new Pr(Pr.createList(e,n)).combine()}if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2];return new Pr(Pr.createList(i,r,o)).combine()}},Pr.extractFactory=function(t){return t.isEmpty()?null:t.iterator().next().getFactory()},Pr.createList=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=new Nt;return n.add(t),n.add(e),n}if(3===arguments.length){var i=arguments[0],r=arguments[1],o=arguments[2],s=new Nt;return s.add(i),s.add(r),s.add(o),s}};var Dr=function(){this._inputPolys=null,this._geomFactory=null;var t=arguments[0];this._inputPolys=t,null===this._inputPolys&&(this._inputPolys=new Nt)},Mr={STRTREE_NODE_CAPACITY:{configurable:!0}};Dr.prototype.reduceToGeometries=function(t){for(var e=new Nt,n=t.iterator();n.hasNext();){var i=n.next(),r=null;T(i,xt)?r=this.unionTree(i):i instanceof ct&&(r=i),e.add(r)}return e},Dr.prototype.extractByEnvelope=function(t,e,n){for(var i=new Nt,r=0;r<e.getNumGeometries();r++){var o=e.getGeometryN(r);o.getEnvelopeInternal().intersects(t)?i.add(o):n.add(o)}return this._geomFactory.buildGeometry(i)},Dr.prototype.unionOptimized=function(t,e){var n=t.getEnvelopeInternal(),i=e.getEnvelopeInternal();if(!n.intersects(i)){return Pr.combine(t,e)}if(t.getNumGeometries()<=1&&e.getNumGeometries()<=1)return this.unionActual(t,e);var r=n.intersection(i);return this.unionUsingEnvelopeIntersection(t,e,r)},Dr.prototype.union=function(){if(null===this._inputPolys)throw new Error(\"union() method cannot be called twice\");if(this._inputPolys.isEmpty())return null;this._geomFactory=this._inputPolys.iterator().next().getFactory();for(var t=new sn(Dr.STRTREE_NODE_CAPACITY),e=this._inputPolys.iterator();e.hasNext();){var n=e.next();t.insert(n.getEnvelopeInternal(),n)}this._inputPolys=null;var i=t.itemsTree();return this.unionTree(i)},Dr.prototype.binaryUnion=function(){if(1===arguments.length){var t=arguments[0];return this.binaryUnion(t,0,t.size())}if(3===arguments.length){var e=arguments[0],n=arguments[1],i=arguments[2];if(i-n<=1){var r=Dr.getGeometry(e,n);return this.unionSafe(r,null)}if(i-n==2)return this.unionSafe(Dr.getGeometry(e,n),Dr.getGeometry(e,n+1));var o=Math.trunc((i+n)/2),s=this.binaryUnion(e,n,o),a=this.binaryUnion(e,o,i);return this.unionSafe(s,a)}},Dr.prototype.repeatedUnion=function(t){for(var e=null,n=t.iterator();n.hasNext();){var i=n.next();e=null===e?i.copy():e.union(i)}return e},Dr.prototype.unionSafe=function(t,e){return null===t&&null===e?null:null===t?e.copy():null===e?t.copy():this.unionOptimized(t,e)},Dr.prototype.unionActual=function(t,e){return Dr.restrictToPolygons(t.union(e))},Dr.prototype.unionTree=function(t){var e=this.reduceToGeometries(t);return this.binaryUnion(e)},Dr.prototype.unionUsingEnvelopeIntersection=function(t,e,n){var i=new Nt,r=this.extractByEnvelope(n,t,i),o=this.extractByEnvelope(n,e,i),s=this.unionActual(r,o);i.add(s);return Pr.combine(i)},Dr.prototype.bufferUnion=function(){if(1===arguments.length){var t=arguments[0];return t.get(0).getFactory().buildGeometry(t).buffer(0)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e.getFactory().createGeometryCollection([e,n]).buffer(0)}},Dr.prototype.interfaces_=function(){return[]},Dr.prototype.getClass=function(){return Dr},Dr.restrictToPolygons=function(t){if(T(t,Zt))return t;var e=Ni.getPolygons(t);return 1===e.size()?e.get(0):t.getFactory().createMultiPolygon(_e.toPolygonArray(e))},Dr.getGeometry=function(t,e){return e>=t.size()?null:t.get(e)},Dr.union=function(t){return new Dr(t).union()},Mr.STRTREE_NODE_CAPACITY.get=function(){return 4},Object.defineProperties(Dr,Mr);var Ar=function(){};Ar.prototype.interfaces_=function(){return[]},Ar.prototype.getClass=function(){return Ar},Ar.union=function(t,e){if(t.isEmpty()||e.isEmpty()){if(t.isEmpty()&&e.isEmpty())return Lr.createEmptyResult(Lr.UNION,t,e,t.getFactory());if(t.isEmpty())return e.copy();if(e.isEmpty())return t.copy()}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),or.overlayOp(t,e,Lr.UNION)},t.GeoJSONReader=Ne,t.GeoJSONWriter=Ce,t.OverlayOp=Lr,t.UnionOp=Ar,t.BufferOp=di,Object.defineProperty(t,\"__esModule\",{value:!0})});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n// http://en.wikipedia.org/wiki/Haversine_formula\n// http://www.movable-type.co.uk/scripts/latlong.html\n/**\n * Takes two {@link Point|points} and finds the geographic bearing between them,\n * i.e. the angle measured in degrees from the north line (0 degrees)\n *\n * @name bearing\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.final=false] calculates the final bearing if true\n * @returns {number} bearing in decimal degrees, between -180 and 180 degrees (positive clockwise)\n * @example\n * var point1 = turf.point([-75.343, 39.984]);\n * var point2 = turf.point([-75.534, 39.123]);\n *\n * var bearing = turf.bearing(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2]\n * point1.properties['marker-color'] = '#f00'\n * point2.properties['marker-color'] = '#0f0'\n * point1.properties.bearing = bearing\n */\nfunction bearing(start, end, options) {\n    if (options === void 0) { options = {}; }\n    // Reverse calculation\n    if (options.final === true) {\n        return calculateFinalBearing(start, end);\n    }\n    var coordinates1 = invariant_1.getCoord(start);\n    var coordinates2 = invariant_1.getCoord(end);\n    var lon1 = helpers_1.degreesToRadians(coordinates1[0]);\n    var lon2 = helpers_1.degreesToRadians(coordinates2[0]);\n    var lat1 = helpers_1.degreesToRadians(coordinates1[1]);\n    var lat2 = helpers_1.degreesToRadians(coordinates2[1]);\n    var a = Math.sin(lon2 - lon1) * Math.cos(lat2);\n    var b = Math.cos(lat1) * Math.sin(lat2) -\n        Math.sin(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1);\n    return helpers_1.radiansToDegrees(Math.atan2(a, b));\n}\nexports.default = bearing;\n/**\n * Calculates Final Bearing\n *\n * @private\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @returns {number} bearing\n */\nfunction calculateFinalBearing(start, end) {\n    // Swap start & end\n    var bear = bearing(end, start);\n    bear = (bear + 180) % 360;\n    return bear;\n}\n","var pointInPolygonFlat = require('./flat.js')\nvar pointInPolygonNested = require('./nested.js')\n\nmodule.exports = function pointInPolygon (point, vs, start, end) {\n    if (vs.length > 0 && Array.isArray(vs[0])) {\n        return pointInPolygonNested(point, vs, start, end);\n    } else {\n        return pointInPolygonFlat(point, vs, start, end);\n    }\n}\nmodule.exports.nested = pointInPolygonNested\nmodule.exports.flat = pointInPolygonFlat\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n  return new Adder;\n}\n\nfunction Adder() {\n  this.reset();\n}\n\nAdder.prototype = {\n  constructor: Adder,\n  reset: function() {\n    this.s = // rounded value\n    this.t = 0; // exact error\n  },\n  add: function(y) {\n    add(temp, y, this.t);\n    add(this, temp.s, this.s);\n    if (this.s) this.t += temp.t;\n    else this.s = temp.t;\n  },\n  valueOf: function() {\n    return this.s;\n  }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n  var x = adder.s = a + b,\n      bv = x - a,\n      av = x - bv;\n  adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum.reset();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum.reset();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum = adder(),\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum.reset();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon) phi1 = 90;\n    else if (deltaSum < -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: noop,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = sqrt(cx * cx + cy * cy + cz * cz),\n      w = asin(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2 += v * cx;\n  Y2 += v * cy;\n  Z2 += v * cz;\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 =\n  X2 = Y2 = Z2 = 0;\n  stream(object, centroidStream);\n\n  var x = X2,\n      y = Y2,\n      z = Z2,\n      m = x * x + y * y + z * z;\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < epsilon2) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n    m = x * x + y * y + z * z;\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < epsilon2) return [NaN, NaN];\n  }\n\n  return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n","import compose from \"./compose\";\nimport {asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n  return [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos(radius),\n      sinRadius = sin(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees, x[1] *= degrees;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y) {\n      line.push([x, y]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n  return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    // If the first and last points of a segment are coincident, then treat as a\n    // closed ring. TODO if all rings are closed, then the winding order of the\n    // exterior ring should be checked.\n    if (pointEqual(p0, p1)) {\n      stream.lineStart();\n      for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n      stream.lineEnd();\n      return;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n","export default function(arrays) {\n  var n = arrays.length,\n      m,\n      i = -1,\n      j = 0,\n      merged,\n      array;\n\n  while (++i < n) j += arrays[i].length;\n  merged = new Array(j);\n\n  while (--n >= 0) {\n    array = arrays[n];\n    m = array.length;\n    while (--m >= 0) {\n      merged[--j] = array[m];\n    }\n  }\n\n  return merged;\n}\n","export default function(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipPolygon from \"./polygon\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport function clipExtent(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n        : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n        : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipPolygon(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n\nexport default function() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = clipExtent(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n  var lambda = point[0],\n      phi = point[1],\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  sum.reset();\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = point0[0],\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = point1[0],\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: noop,\n  point: noop,\n  lineStart: lengthLineStart,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var sinPhi = sin(phi),\n      cosPhi = cos(phi),\n      delta = abs(lambda - lambda0),\n      cosDelta = cos(delta),\n      sinDelta = sin(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(atan2(sqrt(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n  lengthSum.reset();\n  stream(object, lengthStream);\n  return +lengthSum;\n}\n","import length from \"./length\";\n\nvar coordinates = [null, null],\n    object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n  coordinates[0] = a;\n  coordinates[1] = b;\n  return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains\";\nimport {default as distance} from \"./distance\";\nimport {epsilon, radians} from \"./math\";\n\nvar containsObjectType = {\n  Feature: function(object, point) {\n    return containsGeometry(object.geometry, point);\n  },\n  FeatureCollection: function(object, point) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n    return false;\n  }\n};\n\nvar containsGeometryType = {\n  Sphere: function() {\n    return true;\n  },\n  Point: function(object, point) {\n    return containsPoint(object.coordinates, point);\n  },\n  MultiPoint: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n    return false;\n  },\n  LineString: function(object, point) {\n    return containsLine(object.coordinates, point);\n  },\n  MultiLineString: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsLine(coordinates[i], point)) return true;\n    return false;\n  },\n  Polygon: function(object, point) {\n    return containsPolygon(object.coordinates, point);\n  },\n  MultiPolygon: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n    return false;\n  },\n  GeometryCollection: function(object, point) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n    return false;\n  }\n};\n\nfunction containsGeometry(geometry, point) {\n  return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n      ? containsGeometryType[geometry.type](geometry, point)\n      : false;\n}\n\nfunction containsPoint(coordinates, point) {\n  return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n  var ab = distance(coordinates[0], coordinates[1]),\n      ao = distance(coordinates[0], point),\n      ob = distance(point, coordinates[1]);\n  return ao + ob <= ab + epsilon;\n}\n\nfunction containsPolygon(coordinates, point) {\n  return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n  return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n  return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n  return (object && containsObjectType.hasOwnProperty(object.type)\n      ? containsObjectType[object.type]\n      : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math\";\n\nfunction graticuleX(y0, y1, dy) {\n  var y = range(y0, y1 - epsilon, dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = range(x0, x1 - epsilon, dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n        .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n        .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n      .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n  return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math\";\n\nexport default function(a, b) {\n  var x0 = a[0] * radians,\n      y0 = a[1] * radians,\n      x1 = b[0] * radians,\n      y1 = b[1] * radians,\n      cy0 = cos(y0),\n      sy0 = sin(y0),\n      cy1 = cos(y1),\n      sy1 = sin(y1),\n      kx0 = cy0 * cos(x0),\n      ky0 = cy0 * sin(x0),\n      kx1 = cy1 * cos(x1),\n      ky1 = cy1 * sin(x1),\n      d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n      k = sin(d);\n\n  var interpolate = d ? function(t) {\n    var B = sin(t *= d) / k,\n        A = sin(d - t) / k,\n        x = A * kx0 + B * kx1,\n        y = A * ky0 + B * ky1,\n        z = A * sy0 + B * sy1;\n    return [\n      atan2(y, x) * degrees,\n      atan2(z, sqrt(x * x + y * y)) * degrees\n    ];\n  } : function() {\n    return [x0 * degrees, y0 * degrees];\n  };\n\n  interpolate.distance = d;\n\n  return interpolate;\n}\n","export default function(x) {\n  return x;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n    areaRingSum = adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum.reset();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum.reset();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = sqrt(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau);\n        break;\n      }\n    }\n  },\n  result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum.reset();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n  this._string = [];\n}\n\nPathString.prototype = {\n  _radius: 4.5,\n  _circle: circle(4.5),\n  pointRadius: function(_) {\n    if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n    return this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._string.push(\"Z\");\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._string.push(\"M\", x, \",\", y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._string.push(\"L\", x, \",\", y);\n        break;\n      }\n      default: {\n        if (this._circle == null) this._circle = circle(this._radius);\n        this._string.push(\"M\", x, \",\", y, this._circle);\n        break;\n      }\n    }\n  },\n  result: function() {\n    if (this._string.length) {\n      var result = this._string.join(\"\");\n      this._string = [];\n      return result;\n    } else {\n      return null;\n    }\n  }\n};\n\nfunction circle(radius) {\n  return \"m0,\" + radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n      + \"z\";\n}\n","import identity from \"../identity\";\nimport stream from \"../stream\";\nimport pathArea from \"./area\";\nimport pathBounds from \"./bounds\";\nimport pathCentroid from \"./centroid\";\nimport PathContext from \"./context\";\nimport pathMeasure from \"./measure\";\nimport PathString from \"./string\";\n\nexport default function(projection, context) {\n  var pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      stream(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    stream(object, projectionStream(pathArea));\n    return pathArea.result();\n  };\n\n  path.measure = function(object) {\n    stream(object, projectionStream(pathMeasure));\n    return pathMeasure.result();\n  };\n\n  path.bounds = function(object) {\n    stream(object, projectionStream(pathBounds));\n    return pathBounds.result();\n  };\n\n  path.centroid = function(object) {\n    stream(object, projectionStream(pathCentroid));\n    return pathCentroid.result();\n  };\n\n  path.projection = function(_) {\n    return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  return path.projection(projection).context(context);\n}\n","import clipBuffer from \"./buffer\";\nimport clipPolygon from \"./polygon\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n  return function(rotate, sink) {\n    var line = clipLine(sink),\n        rotatedStart = rotate.invert(start[0], start[1]),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = merge(segments);\n        var startInside = polygonContains(polygon, rotatedStart);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipPolygon(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      var point = rotate(lambda, phi);\n      if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      var point = rotate(lambda, phi);\n      line.point(point[0], point[1]);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      var point = rotate(lambda, phi);\n      ringSink.point(point[0], point[1]);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? pi : -pi,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi) < epsilon) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n        if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) > epsilon\n      ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n          - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi;\n    stream.point(-pi, phi);\n    stream.point(0, phi);\n    stream.point(pi, phi);\n    stream.point(pi, 0);\n    stream.point(pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi, -phi);\n    stream.point(-pi, 0);\n    stream.point(-pi, phi);\n  } else if (abs(from[0] - to[0]) > epsilon) {\n    var lambda = from[0] < to[0] ? pi : -pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n","export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nexport function fitExtent(projection, extent, object) {\n  var w = extent[1][0] - extent[0][0],\n      h = extent[1][1] - extent[0][1],\n      clip = projection.clipExtent && projection.clipExtent();\n\n  projection\n      .scale(150)\n      .translate([0, 0]);\n\n  if (clip != null) projection.clipExtent(null);\n\n  geoStream(object, projection.stream(boundsStream));\n\n  var b = boundsStream.result(),\n      k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n      x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n      y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n\n  if (clip != null) projection.clipExtent(clip);\n\n  return projection\n      .scale(k * 150)\n      .translate([x, y]);\n}\n\nexport function fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport {clipExtent} from \"../clip/extent\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {degrees, radians, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nexport default function projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      dx, dy, lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate\n      theta = null, preclip = clipAntimeridian, // clip angle\n      x0 = null, y0, x1, y1, postclip = identity, // clip extent\n      delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    point = projectRotate(point[0] * radians, point[1] * radians);\n    return [point[0] * k + dx, dy - point[1] * k];\n  }\n\n  function invert(point) {\n    point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);\n    return point && [point[0] * degrees, point[1] * degrees];\n  }\n\n  function projectTransform(x, y) {\n    return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(preclip(rotate, projectResample(postclip(cacheStream = stream))));\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians, 6 * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  function recenter() {\n    projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project);\n    var center = project(lambda, phi);\n    dx = x - center[0] * k;\n    dy = y + center[1] * k;\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius, delta) {\n  var cr = cos(radius),\n      smallRadius = cr > 0,\n      notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos(lambda) * cos(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        // Handle degeneracies.\n        // TODO ignore if not clipping polygons.\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n            point1[0] += epsilon;\n            point1[1] += epsilon;\n            v = visible(point1[0], point1[1]);\n          }\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1]);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n            }\n          }\n        }\n        if (v && (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi) < epsilon,\n        meridian = polar || delta < epsilon;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import {degrees, pi, radians} from \"../math\";\nimport {projectionMutator} from \"./index\";\n\nexport function conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = pi / 3,\n      m = projectionMutator(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n  };\n\n  return p;\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n  var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n  function project(x, y) {\n    var r = sqrt(c - 2 * n * sin(y)) / n;\n    return [r * sin(x *= n), r0 - r * cos(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y;\n    return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n","import conicEqualArea from \"./conicEqualArea\";\n\nexport default function() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math\";\nimport albers from \"./albers\";\nimport conicEqualArea from \"./conicEqualArea\";\nimport {fitExtent, fitSize} from \"./fit\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return fitExtent(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return fitSize(albersUsa, size, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n  return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n  var m = projection(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = pi * scale(),\n        t = m(rotation(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {mercatorRaw} from \"./mercator\";\n\nfunction tany(y) {\n  return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n      f = cy0 * pow(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n    else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n    var r = f / pow(tany(y), n);\n    return [r * sin(n * x), f - r * cos(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n    return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\n\nexport function conicEquidistantRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (abs(n) < epsilon) return equirectangularRaw;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * sin(nx), g - gy * cos(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y;\n    return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n","import {clipExtent} from \"../clip/extent\";\nimport identity from \"../identity\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize} from \"./fit\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n  return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n    point: function(x, y) {\n      this.stream.point(x * kx + tx, y * ky + ty);\n    }\n  });\n}\n\nexport default function() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n      x0 = null, y0, x1, y1, clip = identity, // clip extent\n      cache,\n      cacheStream,\n      projection;\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return projection = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = transform(clip(cacheStream = stream));\n    },\n    clipExtent: function(_) {\n      return arguments.length ? (clip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n    },\n    scale: function(_) {\n      return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n    },\n    translate: function(_) {\n      return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n    },\n    reflectX: function(_) {\n      return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n    },\n    reflectY: function(_) {\n      return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n    },\n    fitExtent: function(extent, object) {\n      return fitExtent(projection, extent, object);\n    },\n    fitSize: function(size, object) {\n      return fitSize(projection, size, object);\n    }\n  };\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (abs(delta) > epsilon && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\nexport default function() {\n  return projection(naturalEarth1Raw)\n      .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n  return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n  var cy = cos(y), k = 1 + cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nexport default function() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n  return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n}\n","/**\n * react-router v7.15.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n\"use client\";\nimport {\n  RSCRouterGlobalErrorBoundary,\n  deserializeErrors,\n  getHydrationData,\n  populateRSCRouteModules\n} from \"./chunk-RJYABSBD.mjs\";\nimport {\n  CRITICAL_CSS_DATA_ATTRIBUTE,\n  ErrorResponseImpl,\n  FrameworkContext,\n  RSCRouterContext,\n  RemixErrorBoundary,\n  RouterProvider,\n  URL_LIMIT,\n  createBrowserHistory,\n  createClientRoutes,\n  createClientRoutesWithHMRRevalidationOptOut,\n  createContext,\n  createRequestInit,\n  createRouter,\n  decodeViaTurboStream,\n  getPatchRoutesOnNavigationFunction,\n  getSingleFetchDataStrategyImpl,\n  getTurboStreamSingleFetchDataStrategy,\n  hydrationRouteProperties,\n  invalidProtocols,\n  invariant,\n  isMutationMethod,\n  mapRouteProperties,\n  noActionDefinedError,\n  setIsHydrated,\n  shouldHydrateRouteLoader,\n  singleFetchUrl,\n  stripIndexParam,\n  useFogOFWarDiscovery\n} from \"./chunk-4N6VE7H7.mjs\";\n\n// lib/dom-export/dom-router-provider.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nfunction RouterProvider2(props) {\n  return /* @__PURE__ */ React.createElement(RouterProvider, { flushSync: ReactDOM.flushSync, ...props });\n}\n\n// lib/dom-export/hydrated-router.tsx\nimport * as React2 from \"react\";\nvar ssrInfo = null;\nvar router = null;\nfunction initSsrInfo() {\n  if (!ssrInfo && window.__reactRouterContext && window.__reactRouterManifest && window.__reactRouterRouteModules) {\n    if (window.__reactRouterManifest.sri === true) {\n      const importMap = document.querySelector(\"script[rr-importmap]\");\n      if (importMap?.textContent) {\n        try {\n          window.__reactRouterManifest.sri = JSON.parse(\n            importMap.textContent\n          ).integrity;\n        } catch (err) {\n          console.error(\"Failed to parse import map\", err);\n        }\n      }\n    }\n    ssrInfo = {\n      context: window.__reactRouterContext,\n      manifest: window.__reactRouterManifest,\n      routeModules: window.__reactRouterRouteModules,\n      stateDecodingPromise: void 0,\n      router: void 0,\n      routerInitialized: false\n    };\n  }\n}\nfunction createHydratedRouter({\n  getContext,\n  instrumentations\n}) {\n  initSsrInfo();\n  if (!ssrInfo) {\n    throw new Error(\n      \"You must be using the SSR features of React Router in order to skip passing a `router` prop to `<RouterProvider>`\"\n    );\n  }\n  let localSsrInfo = ssrInfo;\n  if (!ssrInfo.stateDecodingPromise) {\n    let stream = ssrInfo.context.stream;\n    invariant(stream, \"No stream found for single fetch decoding\");\n    ssrInfo.context.stream = void 0;\n    ssrInfo.stateDecodingPromise = decodeViaTurboStream(stream, window).then((value) => {\n      ssrInfo.context.state = value.value;\n      localSsrInfo.stateDecodingPromise.value = true;\n    }).catch((e) => {\n      localSsrInfo.stateDecodingPromise.error = e;\n    });\n  }\n  if (ssrInfo.stateDecodingPromise.error) {\n    throw ssrInfo.stateDecodingPromise.error;\n  }\n  if (!ssrInfo.stateDecodingPromise.value) {\n    throw ssrInfo.stateDecodingPromise;\n  }\n  let routes = createClientRoutes(\n    ssrInfo.manifest.routes,\n    ssrInfo.routeModules,\n    ssrInfo.context.state,\n    ssrInfo.context.ssr,\n    ssrInfo.context.isSpaMode\n  );\n  let hydrationData = void 0;\n  if (ssrInfo.context.isSpaMode) {\n    let { loaderData } = ssrInfo.context.state;\n    if (ssrInfo.manifest.routes.root?.hasLoader && loaderData && \"root\" in loaderData) {\n      hydrationData = {\n        loaderData: {\n          root: loaderData.root\n        }\n      };\n    }\n  } else {\n    hydrationData = getHydrationData({\n      state: ssrInfo.context.state,\n      routes,\n      getRouteInfo: (routeId) => ({\n        clientLoader: ssrInfo.routeModules[routeId]?.clientLoader,\n        hasLoader: ssrInfo.manifest.routes[routeId]?.hasLoader === true,\n        hasHydrateFallback: ssrInfo.routeModules[routeId]?.HydrateFallback != null\n      }),\n      location: window.location,\n      basename: window.__reactRouterContext?.basename,\n      isSpaMode: ssrInfo.context.isSpaMode\n    });\n    if (hydrationData && hydrationData.errors) {\n      hydrationData.errors = deserializeErrors(hydrationData.errors);\n    }\n  }\n  if (window.history.state && window.history.state.masked) {\n    window.history.replaceState(\n      { ...window.history.state, masked: void 0 },\n      \"\"\n    );\n  }\n  let router2 = createRouter({\n    routes,\n    history: createBrowserHistory(),\n    basename: ssrInfo.context.basename,\n    getContext,\n    hydrationData,\n    hydrationRouteProperties,\n    instrumentations,\n    mapRouteProperties,\n    future: {\n      v8_passThroughRequests: ssrInfo.context.future.v8_passThroughRequests\n    },\n    dataStrategy: getTurboStreamSingleFetchDataStrategy(\n      () => router2,\n      ssrInfo.manifest,\n      ssrInfo.routeModules,\n      ssrInfo.context.ssr,\n      ssrInfo.context.basename,\n      ssrInfo.context.future.unstable_trailingSlashAwareDataRequests\n    ),\n    patchRoutesOnNavigation: getPatchRoutesOnNavigationFunction(\n      () => router2,\n      ssrInfo.manifest,\n      ssrInfo.routeModules,\n      ssrInfo.context.ssr,\n      ssrInfo.context.routeDiscovery,\n      ssrInfo.context.isSpaMode,\n      ssrInfo.context.basename\n    )\n  });\n  ssrInfo.router = router2;\n  if (router2.state.initialized) {\n    ssrInfo.routerInitialized = true;\n    router2.initialize();\n  }\n  router2.createRoutesForHMR = /* spacer so ts-ignore does not affect the right hand of the assignment */\n  createClientRoutesWithHMRRevalidationOptOut;\n  window.__reactRouterDataRouter = router2;\n  return router2;\n}\nfunction HydratedRouter(props) {\n  if (!router) {\n    router = createHydratedRouter({\n      getContext: props.getContext,\n      instrumentations: props.instrumentations\n    });\n  }\n  let [criticalCss, setCriticalCss] = React2.useState(\n    process.env.NODE_ENV === \"development\" ? ssrInfo?.context.criticalCss : void 0\n  );\n  React2.useEffect(() => {\n    if (process.env.NODE_ENV === \"development\") {\n      setCriticalCss(void 0);\n    }\n  }, []);\n  React2.useEffect(() => {\n    if (process.env.NODE_ENV === \"development\" && criticalCss === void 0) {\n      document.querySelectorAll(`[${CRITICAL_CSS_DATA_ATTRIBUTE}]`).forEach((element) => element.remove());\n    }\n  }, [criticalCss]);\n  let [location2, setLocation] = React2.useState(router.state.location);\n  React2.useLayoutEffect(() => {\n    if (ssrInfo && ssrInfo.router && !ssrInfo.routerInitialized) {\n      ssrInfo.routerInitialized = true;\n      ssrInfo.router.initialize();\n    }\n  }, []);\n  React2.useLayoutEffect(() => {\n    if (ssrInfo && ssrInfo.router) {\n      return ssrInfo.router.subscribe((newState) => {\n        if (newState.location !== location2) {\n          setLocation(newState.location);\n        }\n      });\n    }\n  }, [location2]);\n  invariant(ssrInfo, \"ssrInfo unavailable for HydratedRouter\");\n  useFogOFWarDiscovery(\n    router,\n    ssrInfo.manifest,\n    ssrInfo.routeModules,\n    ssrInfo.context.ssr,\n    ssrInfo.context.routeDiscovery,\n    ssrInfo.context.isSpaMode\n  );\n  return (\n    // This fragment is important to ensure we match the <ServerRouter> JSX\n    // structure so that useId values hydrate correctly\n    /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\n      FrameworkContext.Provider,\n      {\n        value: {\n          manifest: ssrInfo.manifest,\n          routeModules: ssrInfo.routeModules,\n          future: ssrInfo.context.future,\n          criticalCss,\n          ssr: ssrInfo.context.ssr,\n          isSpaMode: ssrInfo.context.isSpaMode,\n          routeDiscovery: ssrInfo.context.routeDiscovery\n        }\n      },\n      /* @__PURE__ */ React2.createElement(RemixErrorBoundary, { location: location2 }, /* @__PURE__ */ React2.createElement(\n        RouterProvider2,\n        {\n          router,\n          useTransitions: props.useTransitions,\n          onError: props.onError\n        }\n      ))\n    ), /* @__PURE__ */ React2.createElement(React2.Fragment, null))\n  );\n}\n\n// lib/rsc/browser.tsx\nimport * as React3 from \"react\";\nimport * as ReactDOM2 from \"react-dom\";\nvar defaultManifestPath = \"/__manifest\";\nfunction createCallServer({\n  createFromReadableStream,\n  createTemporaryReferenceSet,\n  encodeReply,\n  fetch: fetchImplementation = fetch\n}) {\n  const globalVar = window;\n  let landedActionId = 0;\n  return async (id, args) => {\n    let actionId = globalVar.__routerActionID = (globalVar.__routerActionID ?? (globalVar.__routerActionID = 0)) + 1;\n    const temporaryReferences = createTemporaryReferenceSet();\n    const payloadPromise = fetchImplementation(\n      new Request(location.href, {\n        body: await encodeReply(args, { temporaryReferences }),\n        method: \"POST\",\n        headers: {\n          Accept: \"text/x-component\",\n          \"rsc-action-id\": id\n        }\n      })\n    ).then((response) => {\n      if (!response.body) {\n        throw new Error(\"No response body\");\n      }\n      return createFromReadableStream(response.body, {\n        temporaryReferences\n      });\n    });\n    React3.startTransition(\n      () => (\n        // @ts-expect-error - Needs React 19 types\n        Promise.resolve(payloadPromise).then(async (payload) => {\n          if (payload.type === \"redirect\") {\n            if (payload.reload || isExternalLocation(payload.location)) {\n              if (hasInvalidProtocol(payload.location)) {\n                throw new Error(\"Invalid redirect location\");\n              }\n              window.location.href = payload.location;\n              return;\n            }\n            React3.startTransition(() => {\n              globalVar.__reactRouterDataRouter.navigate(payload.location, {\n                replace: payload.replace\n              });\n            });\n            return;\n          }\n          if (payload.type !== \"action\") {\n            throw new Error(\"Unexpected payload type\");\n          }\n          const rerender = await payload.rerender;\n          if (rerender && landedActionId < actionId && globalVar.__routerActionID <= actionId) {\n            if (rerender.type === \"redirect\") {\n              if (rerender.reload || isExternalLocation(rerender.location)) {\n                if (hasInvalidProtocol(rerender.location)) {\n                  throw new Error(\"Invalid redirect location\");\n                }\n                window.location.href = rerender.location;\n                return;\n              }\n              React3.startTransition(() => {\n                globalVar.__reactRouterDataRouter.navigate(rerender.location, {\n                  replace: rerender.replace\n                });\n              });\n              return;\n            }\n            React3.startTransition(() => {\n              let lastMatch;\n              for (const match of rerender.matches) {\n                globalVar.__reactRouterDataRouter.patchRoutes(\n                  lastMatch?.id ?? null,\n                  [createRouteFromServerManifest(match)],\n                  true\n                );\n                lastMatch = match;\n              }\n              window.__reactRouterDataRouter._internalSetStateDoNotUseOrYouWillBreakYourApp(\n                {\n                  loaderData: Object.assign(\n                    {},\n                    globalVar.__reactRouterDataRouter.state.loaderData,\n                    rerender.loaderData\n                  ),\n                  errors: rerender.errors ? Object.assign(\n                    {},\n                    globalVar.__reactRouterDataRouter.state.errors,\n                    rerender.errors\n                  ) : null\n                }\n              );\n            });\n          }\n        }).catch(() => {\n        })\n      )\n    );\n    return payloadPromise.then((payload) => {\n      if (payload.type !== \"action\" && payload.type !== \"redirect\") {\n        throw new Error(\"Unexpected payload type\");\n      }\n      return payload.actionResult;\n    });\n  };\n}\nfunction createRouterFromPayload({\n  fetchImplementation,\n  createFromReadableStream,\n  getContext,\n  payload\n}) {\n  const globalVar = window;\n  if (globalVar.__reactRouterDataRouter && globalVar.__reactRouterRouteModules)\n    return {\n      router: globalVar.__reactRouterDataRouter,\n      routeModules: globalVar.__reactRouterRouteModules\n    };\n  if (payload.type !== \"render\") throw new Error(\"Invalid payload type\");\n  globalVar.__reactRouterRouteModules = globalVar.__reactRouterRouteModules ?? {};\n  populateRSCRouteModules(globalVar.__reactRouterRouteModules, payload.matches);\n  let routes = payload.matches.reduceRight((previous, match) => {\n    const route = createRouteFromServerManifest(\n      match,\n      payload\n    );\n    if (previous.length > 0) {\n      route.children = previous;\n    } else if (!route.index) {\n      route.children = [];\n    }\n    return [route];\n  }, []);\n  let applyPatchesPromise;\n  globalVar.__reactRouterDataRouter = createRouter({\n    routes,\n    getContext,\n    basename: payload.basename,\n    history: createBrowserHistory(),\n    hydrationData: getHydrationData({\n      state: {\n        loaderData: payload.loaderData,\n        actionData: payload.actionData,\n        errors: payload.errors\n      },\n      routes,\n      getRouteInfo: (routeId) => {\n        let match = payload.matches.find((m) => m.id === routeId);\n        invariant(match, \"Route not found in payload\");\n        return {\n          clientLoader: match.clientLoader,\n          hasLoader: match.hasLoader,\n          hasHydrateFallback: match.hydrateFallbackElement != null\n        };\n      },\n      location: payload.location,\n      basename: payload.basename,\n      isSpaMode: false\n    }),\n    async patchRoutesOnNavigation({ path, signal }) {\n      if (payload.routeDiscovery.mode === \"initial\") {\n        if (!applyPatchesPromise) {\n          applyPatchesPromise = (async () => {\n            if (!payload.patches) return;\n            let patches = await payload.patches;\n            React3.startTransition(() => {\n              patches.forEach((p) => {\n                window.__reactRouterDataRouter.patchRoutes(p.parentId ?? null, [\n                  createRouteFromServerManifest(p)\n                ]);\n              });\n            });\n          })();\n        }\n        await applyPatchesPromise;\n        return;\n      }\n      if (discoveredPaths.has(path)) {\n        return;\n      }\n      await fetchAndApplyManifestPatches(\n        [path],\n        createFromReadableStream,\n        fetchImplementation,\n        signal\n      );\n    },\n    // FIXME: Pass `build.ssr` into this function\n    dataStrategy: getRSCSingleFetchDataStrategy(\n      () => globalVar.__reactRouterDataRouter,\n      true,\n      payload.basename,\n      createFromReadableStream,\n      fetchImplementation\n    )\n  });\n  if (globalVar.__reactRouterDataRouter.state.initialized) {\n    globalVar.__routerInitialized = true;\n    globalVar.__reactRouterDataRouter.initialize();\n  } else {\n    globalVar.__routerInitialized = false;\n  }\n  let lastLoaderData = void 0;\n  globalVar.__reactRouterDataRouter.subscribe(({ loaderData, actionData }) => {\n    if (lastLoaderData !== loaderData) {\n      globalVar.__routerActionID = (globalVar.__routerActionID ?? (globalVar.__routerActionID = 0)) + 1;\n    }\n  });\n  globalVar.__reactRouterDataRouter._updateRoutesForHMR = (routeUpdateByRouteId) => {\n    const oldRoutes = window.__reactRouterDataRouter.routes;\n    const newRoutes = [];\n    function walkRoutes(routes2, parentId) {\n      return routes2.map((route) => {\n        const routeUpdate = routeUpdateByRouteId.get(route.id);\n        if (routeUpdate) {\n          const {\n            routeModule,\n            hasAction,\n            hasComponent,\n            hasErrorBoundary,\n            hasLoader\n          } = routeUpdate;\n          const newRoute = createRouteFromServerManifest({\n            clientAction: routeModule.clientAction,\n            clientLoader: routeModule.clientLoader,\n            element: route.element,\n            errorElement: route.errorElement,\n            handle: route.handle,\n            hasAction,\n            hasComponent,\n            hasErrorBoundary,\n            hasLoader,\n            hydrateFallbackElement: route.hydrateFallbackElement,\n            id: route.id,\n            index: route.index,\n            links: routeModule.links,\n            meta: routeModule.meta,\n            parentId,\n            path: route.path,\n            shouldRevalidate: routeModule.shouldRevalidate\n          });\n          if (route.children) {\n            newRoute.children = walkRoutes(route.children, route.id);\n          }\n          return newRoute;\n        }\n        const updatedRoute = { ...route };\n        if (route.children) {\n          updatedRoute.children = walkRoutes(route.children, route.id);\n        }\n        return updatedRoute;\n      });\n    }\n    newRoutes.push(\n      ...walkRoutes(oldRoutes, void 0)\n    );\n    window.__reactRouterDataRouter._internalSetRoutes(newRoutes);\n  };\n  return {\n    router: globalVar.__reactRouterDataRouter,\n    routeModules: globalVar.__reactRouterRouteModules\n  };\n}\nvar renderedRoutesContext = createContext();\nfunction getRSCSingleFetchDataStrategy(getRouter, ssr, basename, createFromReadableStream, fetchImplementation) {\n  let dataStrategy = getSingleFetchDataStrategyImpl(\n    getRouter,\n    (match) => {\n      let M = match;\n      return {\n        hasLoader: M.route.hasLoader,\n        hasClientLoader: M.route.hasClientLoader,\n        hasComponent: M.route.hasComponent,\n        hasAction: M.route.hasAction,\n        hasClientAction: M.route.hasClientAction\n      };\n    },\n    // pass map into fetchAndDecode so it can add payloads\n    getFetchAndDecodeViaRSC(createFromReadableStream, fetchImplementation),\n    ssr,\n    basename,\n    // .rsc requests are always trailing slash aware\n    true,\n    // If the route has a component but we don't have an element, we need to hit\n    // the server loader flow regardless of whether the client loader calls\n    // `serverLoader` or not, otherwise we'll have nothing to render.\n    (match) => {\n      let M = match;\n      return M.route.hasComponent && !M.route.element;\n    }\n  );\n  return async (args) => args.runClientMiddleware(async () => {\n    let context = args.context;\n    context.set(renderedRoutesContext, []);\n    let results = await dataStrategy(args);\n    const renderedRoutesById = /* @__PURE__ */ new Map();\n    for (const route of context.get(renderedRoutesContext)) {\n      if (!renderedRoutesById.has(route.id)) {\n        renderedRoutesById.set(route.id, []);\n      }\n      renderedRoutesById.get(route.id).push(route);\n    }\n    React3.startTransition(() => {\n      for (const match of args.matches) {\n        const renderedRoutes = renderedRoutesById.get(match.route.id);\n        if (renderedRoutes) {\n          for (const rendered of renderedRoutes) {\n            window.__reactRouterDataRouter.patchRoutes(\n              rendered.parentId ?? null,\n              [createRouteFromServerManifest(rendered)],\n              true\n            );\n          }\n        }\n      }\n    });\n    return results;\n  });\n}\nfunction getFetchAndDecodeViaRSC(createFromReadableStream, fetchImplementation) {\n  return async (args, basename, trailingSlashAware, targetRoutes) => {\n    let { request, context } = args;\n    let url = singleFetchUrl(request.url, basename, trailingSlashAware, \"rsc\");\n    if (request.method === \"GET\") {\n      url = stripIndexParam(url);\n      if (targetRoutes) {\n        url.searchParams.set(\"_routes\", targetRoutes.join(\",\"));\n      }\n    }\n    let res = await fetchImplementation(\n      new Request(url, await createRequestInit(request))\n    );\n    if (res.status >= 400 && !res.headers.has(\"X-Remix-Response\")) {\n      throw new ErrorResponseImpl(res.status, res.statusText, await res.text());\n    }\n    invariant(res.body, \"No response body to decode\");\n    try {\n      const payload = await createFromReadableStream(res.body, {\n        temporaryReferences: void 0\n      });\n      if (payload.type === \"redirect\") {\n        return {\n          status: res.status,\n          data: {\n            redirect: {\n              redirect: payload.location,\n              reload: payload.reload,\n              replace: payload.replace,\n              revalidate: false,\n              status: payload.status\n            }\n          }\n        };\n      }\n      if (payload.type !== \"render\") {\n        throw new Error(\"Unexpected payload type\");\n      }\n      context.get(renderedRoutesContext).push(...payload.matches);\n      let results = { routes: {} };\n      const dataKey = isMutationMethod(request.method) ? \"actionData\" : \"loaderData\";\n      for (let [routeId, data] of Object.entries(payload[dataKey] || {})) {\n        results.routes[routeId] = { data };\n      }\n      if (payload.errors) {\n        for (let [routeId, error] of Object.entries(payload.errors)) {\n          results.routes[routeId] = { error };\n        }\n      }\n      return { status: res.status, data: results };\n    } catch (cause) {\n      throw new Error(\"Unable to decode RSC response\", { cause });\n    }\n  };\n}\nfunction RSCHydratedRouter({\n  createFromReadableStream,\n  fetch: fetchImplementation = fetch,\n  payload,\n  getContext\n}) {\n  if (payload.type !== \"render\") throw new Error(\"Invalid payload type\");\n  let { routeDiscovery } = payload;\n  let { router: router2, routeModules } = React3.useMemo(\n    () => createRouterFromPayload({\n      payload,\n      fetchImplementation,\n      getContext,\n      createFromReadableStream\n    }),\n    [createFromReadableStream, payload, fetchImplementation, getContext]\n  );\n  React3.useEffect(() => {\n    setIsHydrated();\n  }, []);\n  React3.useLayoutEffect(() => {\n    const globalVar = window;\n    if (!globalVar.__routerInitialized) {\n      globalVar.__routerInitialized = true;\n      globalVar.__reactRouterDataRouter.initialize();\n    }\n  }, []);\n  let [{ routes, state }, setState] = React3.useState(() => ({\n    routes: cloneRoutes(router2.routes),\n    state: router2.state\n  }));\n  React3.useLayoutEffect(\n    () => router2.subscribe((newState) => {\n      if (diffRoutes(router2.routes, routes))\n        React3.startTransition(() => {\n          setState({\n            routes: cloneRoutes(router2.routes),\n            state: newState\n          });\n        });\n    }),\n    [router2.subscribe, routes, router2]\n  );\n  const transitionEnabledRouter = React3.useMemo(\n    () => ({\n      ...router2,\n      state,\n      routes\n    }),\n    [router2, routes, state]\n  );\n  React3.useEffect(() => {\n    if (routeDiscovery.mode === \"initial\" || // @ts-expect-error - TS doesn't know about this yet\n    window.navigator?.connection?.saveData === true) {\n      return;\n    }\n    function registerElement(el) {\n      let path = el.tagName === \"FORM\" ? el.getAttribute(\"action\") : el.getAttribute(\"href\");\n      if (!path) {\n        return;\n      }\n      let pathname = el.tagName === \"A\" ? el.pathname : new URL(path, window.location.origin).pathname;\n      if (!discoveredPaths.has(pathname)) {\n        nextPaths.add(pathname);\n      }\n    }\n    async function fetchPatches() {\n      document.querySelectorAll(\"a[data-discover], form[data-discover]\").forEach(registerElement);\n      let paths = Array.from(nextPaths.keys()).filter((path) => {\n        if (discoveredPaths.has(path)) {\n          nextPaths.delete(path);\n          return false;\n        }\n        return true;\n      });\n      if (paths.length === 0) {\n        return;\n      }\n      try {\n        await fetchAndApplyManifestPatches(\n          paths,\n          createFromReadableStream,\n          fetchImplementation\n        );\n      } catch (e) {\n        console.error(\"Failed to fetch manifest patches\", e);\n      }\n    }\n    let debouncedFetchPatches = debounce(fetchPatches, 100);\n    fetchPatches();\n    let observer = new MutationObserver(() => debouncedFetchPatches());\n    observer.observe(document.documentElement, {\n      subtree: true,\n      childList: true,\n      attributes: true,\n      attributeFilter: [\"data-discover\", \"href\", \"action\"]\n    });\n  }, [routeDiscovery, createFromReadableStream, fetchImplementation]);\n  const frameworkContext = {\n    future: {\n      // These flags have no runtime impact so can always be false.  If we add\n      // flags that drive runtime behavior they'll need to be proxied through.\n      v8_middleware: false,\n      unstable_trailingSlashAwareDataRequests: true,\n      // always on for RSC\n      v8_passThroughRequests: true\n      // always on for RSC\n    },\n    isSpaMode: false,\n    ssr: true,\n    criticalCss: \"\",\n    manifest: {\n      routes: {},\n      version: \"1\",\n      url: \"\",\n      entry: {\n        module: \"\",\n        imports: []\n      }\n    },\n    routeDiscovery: payload.routeDiscovery.mode === \"initial\" ? { mode: \"initial\", manifestPath: defaultManifestPath } : {\n      mode: \"lazy\",\n      manifestPath: payload.routeDiscovery.manifestPath || defaultManifestPath\n    },\n    routeModules\n  };\n  return /* @__PURE__ */ React3.createElement(RSCRouterContext.Provider, { value: true }, /* @__PURE__ */ React3.createElement(RSCRouterGlobalErrorBoundary, { location: state.location }, /* @__PURE__ */ React3.createElement(FrameworkContext.Provider, { value: frameworkContext }, /* @__PURE__ */ React3.createElement(\n    RouterProvider,\n    {\n      router: transitionEnabledRouter,\n      flushSync: ReactDOM2.flushSync\n    }\n  ))));\n}\nfunction createRouteFromServerManifest(match, payload) {\n  let hasInitialData = payload && match.id in payload.loaderData;\n  let initialData = payload?.loaderData[match.id];\n  let hasInitialError = payload?.errors && match.id in payload.errors;\n  let initialError = payload?.errors?.[match.id];\n  let isHydrationRequest = match.clientLoader?.hydrate === true || !match.hasLoader || // If the route has a component but we don't have an element, we need to hit\n  // the server loader flow regardless of whether the client loader calls\n  // `serverLoader` or not, otherwise we'll have nothing to render.\n  match.hasComponent && !match.element;\n  invariant(window.__reactRouterRouteModules);\n  populateRSCRouteModules(window.__reactRouterRouteModules, match);\n  let dataRoute = {\n    id: match.id,\n    element: match.element,\n    errorElement: match.errorElement,\n    handle: match.handle,\n    hasErrorBoundary: match.hasErrorBoundary,\n    hydrateFallbackElement: match.hydrateFallbackElement,\n    index: match.index,\n    loader: match.clientLoader ? async (args, singleFetch) => {\n      let _isHydrationRequest = isHydrationRequest;\n      isHydrationRequest = false;\n      let result = await match.clientLoader({\n        ...args,\n        serverLoader: () => {\n          preventInvalidServerHandlerCall(\n            \"loader\",\n            match.id,\n            match.hasLoader\n          );\n          if (_isHydrationRequest) {\n            if (hasInitialData) {\n              return initialData;\n            }\n            if (hasInitialError) {\n              throw initialError;\n            }\n          }\n          return callSingleFetch(singleFetch);\n        }\n      });\n      return result;\n    } : (\n      // We always make the call in this RSC world since even if we don't\n      // have a `loader` we may need to get the `element` implementation\n      (_, singleFetch) => callSingleFetch(singleFetch)\n    ),\n    action: match.clientAction ? (args, singleFetch) => match.clientAction({\n      ...args,\n      serverAction: async () => {\n        preventInvalidServerHandlerCall(\n          \"action\",\n          match.id,\n          match.hasLoader\n        );\n        return await callSingleFetch(singleFetch);\n      }\n    }) : match.hasAction ? (_, singleFetch) => callSingleFetch(singleFetch) : () => {\n      throw noActionDefinedError(\"action\", match.id);\n    },\n    path: match.path,\n    shouldRevalidate: match.shouldRevalidate,\n    // We always have a \"loader\" in this RSC world since even if we don't\n    // have a `loader` we may need to get the `element` implementation\n    hasLoader: true,\n    hasClientLoader: match.clientLoader != null,\n    hasAction: match.hasAction,\n    hasClientAction: match.clientAction != null\n  };\n  if (typeof dataRoute.loader === \"function\") {\n    dataRoute.loader.hydrate = shouldHydrateRouteLoader(\n      match.id,\n      match.clientLoader,\n      match.hasLoader,\n      false\n    );\n  }\n  return dataRoute;\n}\nfunction callSingleFetch(singleFetch) {\n  invariant(typeof singleFetch === \"function\", \"Invalid singleFetch parameter\");\n  return singleFetch();\n}\nfunction preventInvalidServerHandlerCall(type, routeId, hasHandler) {\n  if (!hasHandler) {\n    let fn = type === \"action\" ? \"serverAction()\" : \"serverLoader()\";\n    let msg = `You are trying to call ${fn} on a route that does not have a server ${type} (routeId: \"${routeId}\")`;\n    console.error(msg);\n    throw new ErrorResponseImpl(400, \"Bad Request\", new Error(msg), true);\n  }\n}\nvar nextPaths = /* @__PURE__ */ new Set();\nvar discoveredPathsMaxSize = 1e3;\nvar discoveredPaths = /* @__PURE__ */ new Set();\nfunction getManifestUrl(paths) {\n  if (paths.length === 0) {\n    return null;\n  }\n  if (paths.length === 1) {\n    return new URL(`${paths[0]}.manifest`, window.location.origin);\n  }\n  const globalVar = window;\n  let basename = (globalVar.__reactRouterDataRouter.basename ?? \"\").replace(\n    /^\\/|\\/$/g,\n    \"\"\n  );\n  let url = new URL(`${basename}/.manifest`, window.location.origin);\n  url.searchParams.set(\"paths\", paths.sort().join(\",\"));\n  return url;\n}\nasync function fetchAndApplyManifestPatches(paths, createFromReadableStream, fetchImplementation, signal) {\n  let url = getManifestUrl(paths);\n  if (url == null) {\n    return;\n  }\n  if (url.toString().length > URL_LIMIT) {\n    nextPaths.clear();\n    return;\n  }\n  let response = await fetchImplementation(new Request(url, { signal }));\n  if (!response.body || response.status < 200 || response.status >= 300) {\n    throw new Error(\"Unable to fetch new route matches from the server\");\n  }\n  let payload = await createFromReadableStream(response.body, {\n    temporaryReferences: void 0\n  });\n  if (payload.type !== \"manifest\") {\n    throw new Error(\"Failed to patch routes\");\n  }\n  paths.forEach((p) => addToFifoQueue(p, discoveredPaths));\n  let patches = await payload.patches;\n  React3.startTransition(() => {\n    patches.forEach((p) => {\n      window.__reactRouterDataRouter.patchRoutes(\n        p.parentId ?? null,\n        [createRouteFromServerManifest(p)]\n      );\n    });\n  });\n}\nfunction addToFifoQueue(path, queue) {\n  if (queue.size >= discoveredPathsMaxSize) {\n    let first = queue.values().next().value;\n    if (typeof first === \"string\") queue.delete(first);\n  }\n  queue.add(path);\n}\nfunction debounce(callback, wait) {\n  let timeoutId;\n  return (...args) => {\n    window.clearTimeout(timeoutId);\n    timeoutId = window.setTimeout(() => callback(...args), wait);\n  };\n}\nfunction isExternalLocation(location2) {\n  const newLocation = new URL(location2, window.location.href);\n  return newLocation.origin !== window.location.origin;\n}\nfunction hasInvalidProtocol(location2) {\n  try {\n    return invalidProtocols.includes(new URL(location2).protocol);\n  } catch {\n    return false;\n  }\n}\nfunction cloneRoutes(routes) {\n  if (!routes) return void 0;\n  return routes.map((route) => ({\n    ...route,\n    children: cloneRoutes(route.children)\n  }));\n}\nfunction diffRoutes(a, b) {\n  if (a.length !== b.length) return true;\n  return a.some((route, index) => {\n    if (route.element !== b[index].element) return true;\n    if (route.errorElement !== b[index].errorElement)\n      return true;\n    if (route.hydrateFallbackElement !== b[index].hydrateFallbackElement)\n      return true;\n    if (route.hasErrorBoundary !== b[index].hasErrorBoundary)\n      return true;\n    if (route.hasLoader !== b[index].hasLoader) return true;\n    if (route.hasClientLoader !== b[index].hasClientLoader)\n      return true;\n    if (route.hasAction !== b[index].hasAction) return true;\n    if (route.hasClientAction !== b[index].hasClientAction)\n      return true;\n    return diffRoutes(route.children || [], b[index].children || []);\n  });\n}\n\n// lib/rsc/html-stream/browser.ts\nfunction getRSCStream() {\n  let encoder = new TextEncoder();\n  let streamController = null;\n  let rscStream = new ReadableStream({\n    start(controller) {\n      if (typeof window === \"undefined\") {\n        return;\n      }\n      let handleChunk = (chunk) => {\n        if (typeof chunk === \"string\") {\n          controller.enqueue(encoder.encode(chunk));\n        } else {\n          controller.enqueue(chunk);\n        }\n      };\n      window.__FLIGHT_DATA || (window.__FLIGHT_DATA = []);\n      window.__FLIGHT_DATA.forEach(handleChunk);\n      window.__FLIGHT_DATA.push = (chunk) => {\n        handleChunk(chunk);\n        return 0;\n      };\n      streamController = controller;\n    }\n  });\n  if (typeof document !== \"undefined\" && document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", () => {\n      streamController?.close();\n    });\n  } else {\n    streamController?.close();\n  }\n  return rscStream;\n}\nexport {\n  HydratedRouter,\n  RouterProvider2 as RouterProvider,\n  RSCHydratedRouter as unstable_RSCHydratedRouter,\n  createCallServer as unstable_createCallServer,\n  getRSCStream as unstable_getRSCStream\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a {@link Feature} or {@link FeatureCollection} and returns the mean center. Can be weighted.\n *\n * @name centerMean\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] Translate GeoJSON Properties to Point\n * @param {Object} [options.bbox={}] Translate GeoJSON BBox to Point\n * @param {Object} [options.id={}] Translate GeoJSON Id to Point\n * @param {string} [options.weight] the property name used to weight the center\n * @returns {Feature<Point>} a Point feature at the mean center point of all input features\n * @example\n * var features = turf.featureCollection([\n *   turf.point([-97.522259, 35.4691], {value: 10}),\n *   turf.point([-97.502754, 35.463455], {value: 3}),\n *   turf.point([-97.508269, 35.463245], {value: 5})\n * ]);\n *\n * var options = {weight: \"value\"}\n * var mean = turf.centerMean(features, options);\n *\n * //addToMap\n * var addToMap = [features, mean]\n * mean.properties['marker-size'] = 'large';\n * mean.properties['marker-color'] = '#000';\n */\nfunction centerMean(geojson, // To-Do include Typescript AllGeoJSON\noptions) {\n    if (options === void 0) { options = {}; }\n    var sumXs = 0;\n    var sumYs = 0;\n    var sumNs = 0;\n    meta_1.geomEach(geojson, function (geom, featureIndex, properties) {\n        var weight = options.weight ? properties === null || properties === void 0 ? void 0 : properties[options.weight] : undefined;\n        weight = weight === undefined || weight === null ? 1 : weight;\n        if (!helpers_1.isNumber(weight))\n            throw new Error(\"weight value must be a number for feature index \" + featureIndex);\n        weight = Number(weight);\n        if (weight > 0) {\n            meta_1.coordEach(geom, function (coord) {\n                sumXs += coord[0] * weight;\n                sumYs += coord[1] * weight;\n                sumNs += weight;\n            });\n        }\n    });\n    return helpers_1.point([sumXs / sumNs, sumYs / sumNs], options.properties, options);\n}\nexports.default = centerMean;\n","'use strict';\n\nvar earcut = require('earcut');\nvar helpers = require('@turf/helpers');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar earcut__default = /*#__PURE__*/_interopDefaultLegacy(earcut);\n\n/**\n * Tesselates a {@link Feature<Polygon>} into a {@link FeatureCollection<Polygon>} of triangles\n * using [earcut](https://github.com/mapbox/earcut).\n *\n * @name tesselate\n * @param {Feature<Polygon>} poly the polygon to tesselate\n * @returns {FeatureCollection<Polygon>} a geometrycollection feature\n * @example\n * var poly = turf.polygon([[[11, 0], [22, 4], [31, 0], [31, 11], [21, 15], [11, 11], [11, 0]]]);\n * var triangles = turf.tesselate(poly);\n *\n * //addToMap\n * var addToMap = [poly, triangles]\n */\nfunction tesselate(poly) {\n  if (\n    !poly.geometry ||\n    (poly.geometry.type !== \"Polygon\" && poly.geometry.type !== \"MultiPolygon\")\n  ) {\n    throw new Error(\"input must be a Polygon or MultiPolygon\");\n  }\n\n  var fc = { type: \"FeatureCollection\", features: [] };\n\n  if (poly.geometry.type === \"Polygon\") {\n    fc.features = processPolygon(poly.geometry.coordinates);\n  } else {\n    poly.geometry.coordinates.forEach(function (coordinates) {\n      fc.features = fc.features.concat(processPolygon(coordinates));\n    });\n  }\n\n  return fc;\n}\n\nfunction processPolygon(coordinates) {\n  var data = flattenCoords(coordinates);\n  var dim = 2;\n  var result = earcut__default['default'](data.vertices, data.holes, dim);\n\n  var features = [];\n  var vertices = [];\n\n  result.forEach(function (vert, i) {\n    var index = result[i];\n    vertices.push([data.vertices[index * dim], data.vertices[index * dim + 1]]);\n  });\n\n  for (var i = 0; i < vertices.length; i += 3) {\n    var coords = vertices.slice(i, i + 3);\n    coords.push(vertices[i]);\n    features.push(helpers.polygon([coords]));\n  }\n\n  return features;\n}\n\nfunction flattenCoords(data) {\n  var dim = data[0][0].length,\n    result = { vertices: [], holes: [], dimensions: dim },\n    holeIndex = 0;\n\n  for (var i = 0; i < data.length; i++) {\n    for (var j = 0; j < data[i].length; j++) {\n      for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n    }\n    if (i > 0) {\n      holeIndex += data[i - 1].length;\n      result.holes.push(holeIndex);\n    }\n  }\n\n  return result;\n}\n\nmodule.exports = tesselate;\nmodule.exports.default = tesselate;\n","/**\r\n * DBSCAN - Density based clustering\r\n *\r\n * @author Lukasz Krawczyk <contact@lukaszkrawczyk.eu>\r\n * @copyright MIT\r\n */\r\n\r\n/**\r\n * DBSCAN class construcotr\r\n * @constructor\r\n *\r\n * @param {Array} dataset\r\n * @param {number} epsilon\r\n * @param {number} minPts\r\n * @param {function} distanceFunction\r\n * @returns {DBSCAN}\r\n */\r\nfunction DBSCAN(dataset, epsilon, minPts, distanceFunction) {\r\n  /** @type {Array} */\r\n  this.dataset = [];\r\n  /** @type {number} */\r\n  this.epsilon = 1;\r\n  /** @type {number} */\r\n  this.minPts = 2;\r\n  /** @type {function} */\r\n  this.distance = this._euclideanDistance;\r\n  /** @type {Array} */\r\n  this.clusters = [];\r\n  /** @type {Array} */\r\n  this.noise = [];\r\n\r\n  // temporary variables used during computation\r\n\r\n  /** @type {Array} */\r\n  this._visited = [];\r\n  /** @type {Array} */\r\n  this._assigned = [];\r\n  /** @type {number} */\r\n  this._datasetLength = 0;\r\n\r\n  this._init(dataset, epsilon, minPts, distanceFunction);\r\n};\r\n\r\n/******************************************************************************/\r\n// public functions\r\n\r\n/**\r\n * Start clustering\r\n *\r\n * @param {Array} dataset\r\n * @param {number} epsilon\r\n * @param {number} minPts\r\n * @param {function} distanceFunction\r\n * @returns {undefined}\r\n * @access public\r\n */\r\nDBSCAN.prototype.run = function(dataset, epsilon, minPts, distanceFunction) {\r\n  this._init(dataset, epsilon, minPts, distanceFunction);\r\n\r\n  for (var pointId = 0; pointId < this._datasetLength; pointId++) {\r\n    // if point is not visited, check if it forms a cluster\r\n    if (this._visited[pointId] !== 1) {\r\n      this._visited[pointId] = 1;\r\n\r\n      // if closest neighborhood is too small to form a cluster, mark as noise\r\n      var neighbors = this._regionQuery(pointId);\r\n\r\n      if (neighbors.length < this.minPts) {\r\n        this.noise.push(pointId);\r\n      } else {\r\n        // create new cluster and add point\r\n        var clusterId = this.clusters.length;\r\n        this.clusters.push([]);\r\n        this._addToCluster(pointId, clusterId);\r\n\r\n        this._expandCluster(clusterId, neighbors);\r\n      }\r\n    }\r\n  }\r\n\r\n  return this.clusters;\r\n};\r\n\r\n/******************************************************************************/\r\n// protected functions\r\n\r\n/**\r\n * Set object properties\r\n *\r\n * @param {Array} dataset\r\n * @param {number} epsilon\r\n * @param {number} minPts\r\n * @param {function} distance\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nDBSCAN.prototype._init = function(dataset, epsilon, minPts, distance) {\r\n\r\n  if (dataset) {\r\n\r\n    if (!(dataset instanceof Array)) {\r\n      throw Error('Dataset must be of type array, ' +\r\n        typeof dataset + ' given');\r\n    }\r\n\r\n    this.dataset = dataset;\r\n    this.clusters = [];\r\n    this.noise = [];\r\n\r\n    this._datasetLength = dataset.length;\r\n    this._visited = new Array(this._datasetLength);\r\n    this._assigned = new Array(this._datasetLength);\r\n  }\r\n\r\n  if (epsilon) {\r\n    this.epsilon = epsilon;\r\n  }\r\n\r\n  if (minPts) {\r\n    this.minPts = minPts;\r\n  }\r\n\r\n  if (distance) {\r\n    this.distance = distance;\r\n  }\r\n};\r\n\r\n/**\r\n * Expand cluster to closest points of given neighborhood\r\n *\r\n * @param {number} clusterId\r\n * @param {Array} neighbors\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nDBSCAN.prototype._expandCluster = function(clusterId, neighbors) {\r\n\r\n  /**\r\n   * It's very important to calculate length of neighbors array each time,\r\n   * as the number of elements changes over time\r\n   */\r\n  for (var i = 0; i < neighbors.length; i++) {\r\n    var pointId2 = neighbors[i];\r\n\r\n    if (this._visited[pointId2] !== 1) {\r\n      this._visited[pointId2] = 1;\r\n      var neighbors2 = this._regionQuery(pointId2);\r\n\r\n      if (neighbors2.length >= this.minPts) {\r\n        neighbors = this._mergeArrays(neighbors, neighbors2);\r\n      }\r\n    }\r\n\r\n    // add to cluster\r\n    if (this._assigned[pointId2] !== 1) {\r\n      this._addToCluster(pointId2, clusterId);\r\n    }\r\n  }\r\n};\r\n\r\n/**\r\n * Add new point to cluster\r\n *\r\n * @param {number} pointId\r\n * @param {number} clusterId\r\n */\r\nDBSCAN.prototype._addToCluster = function(pointId, clusterId) {\r\n  this.clusters[clusterId].push(pointId);\r\n  this._assigned[pointId] = 1;\r\n};\r\n\r\n/**\r\n * Find all neighbors around given point\r\n *\r\n * @param {number} pointId,\r\n * @param {number} epsilon\r\n * @returns {Array}\r\n * @access protected\r\n */\r\nDBSCAN.prototype._regionQuery = function(pointId) {\r\n  var neighbors = [];\r\n\r\n  for (var id = 0; id < this._datasetLength; id++) {\r\n    var dist = this.distance(this.dataset[pointId], this.dataset[id]);\r\n    if (dist < this.epsilon) {\r\n      neighbors.push(id);\r\n    }\r\n  }\r\n\r\n  return neighbors;\r\n};\r\n\r\n/******************************************************************************/\r\n// helpers\r\n\r\n/**\r\n * @param {Array} a\r\n * @param {Array} b\r\n * @returns {Array}\r\n * @access protected\r\n */\r\nDBSCAN.prototype._mergeArrays = function(a, b) {\r\n  var len = b.length;\r\n\r\n  for (var i = 0; i < len; i++) {\r\n    var P = b[i];\r\n    if (a.indexOf(P) < 0) {\r\n      a.push(P);\r\n    }\r\n  }\r\n\r\n  return a;\r\n};\r\n\r\n/**\r\n * Calculate euclidean distance in multidimensional space\r\n *\r\n * @param {Array} p\r\n * @param {Array} q\r\n * @returns {number}\r\n * @access protected\r\n */\r\nDBSCAN.prototype._euclideanDistance = function(p, q) {\r\n  var sum = 0;\r\n  var i = Math.min(p.length, q.length);\r\n\r\n  while (i--) {\r\n    sum += (p[i] - q[i]) * (p[i] - q[i]);\r\n  }\r\n\r\n  return Math.sqrt(sum);\r\n};\r\n\r\nif (typeof module !== 'undefined' && module.exports) {\r\n  module.exports = DBSCAN;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar util_1 = require(\"./util\");\n/**\n * This class is inspired by GEOS's geos::operation::polygonize::PolygonizeDirectedEdge\n */\nvar Edge = /** @class */ (function () {\n    /**\n     * @param {Node} from - start node of the Edge\n     * @param {Node} to - end node of the edge\n     */\n    function Edge(from, to) {\n        this.from = from; //< start\n        this.to = to; //< End\n        this.next = undefined; //< The edge to be computed after\n        this.label = undefined; //< Used in order to detect Cut Edges (Bridges)\n        this.symetric = undefined; //< The symetric edge of this\n        this.ring = undefined; //< EdgeRing in which the Edge is\n        this.from.addOuterEdge(this);\n        this.to.addInnerEdge(this);\n    }\n    /**\n     * Creates or get the symetric Edge.\n     *\n     * @returns {Edge} - Symetric Edge.\n     */\n    Edge.prototype.getSymetric = function () {\n        if (!this.symetric) {\n            this.symetric = new Edge(this.to, this.from);\n            this.symetric.symetric = this;\n        }\n        return this.symetric;\n    };\n    /**\n     * Removes edge from from and to nodes.\n     */\n    Edge.prototype.deleteEdge = function () {\n        this.from.removeOuterEdge(this);\n        this.to.removeInnerEdge(this);\n    };\n    /**\n     * Compares Edge equallity.\n     *\n     * An edge is equal to another, if the from and to nodes are the same.\n     *\n     * @param {Edge} edge - Another Edge\n     * @returns {boolean} - True if Edges are equal, False otherwise\n     */\n    Edge.prototype.isEqual = function (edge) {\n        return this.from.id === edge.from.id && this.to.id === edge.to.id;\n    };\n    Edge.prototype.toString = function () {\n        return \"Edge { \" + this.from.id + \" -> \" + this.to.id + \" }\";\n    };\n    /**\n     * Returns a LineString representation of the Edge\n     *\n     * @returns {Feature<LineString>} - LineString representation of the Edge\n     */\n    Edge.prototype.toLineString = function () {\n        return helpers_1.lineString([this.from.coordinates, this.to.coordinates]);\n    };\n    /**\n     * Comparator of two edges.\n     *\n     * Implementation of geos::planargraph::DirectedEdge::compareTo.\n     *\n     * @param {Edge} edge - Another edge to compare with this one\n     * @returns {number} -1 if this Edge has a greater angle with the positive x-axis than b,\n     *          0 if the Edges are colinear,\n     *          1 otherwise\n     */\n    Edge.prototype.compareTo = function (edge) {\n        return util_1.orientationIndex(edge.from.coordinates, edge.to.coordinates, this.to.coordinates);\n    };\n    return Edge;\n}());\nexports.default = Edge;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */\nfunction clone(geojson) {\n    if (!geojson) {\n        throw new Error(\"geojson is required\");\n    }\n    switch (geojson.type) {\n        case \"Feature\":\n            return cloneFeature(geojson);\n        case \"FeatureCollection\":\n            return cloneFeatureCollection(geojson);\n        case \"Point\":\n        case \"LineString\":\n        case \"Polygon\":\n        case \"MultiPoint\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\":\n        case \"GeometryCollection\":\n            return cloneGeometry(geojson);\n        default:\n            throw new Error(\"unknown GeoJSON type\");\n    }\n}\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature<any>} geojson GeoJSON Feature\n * @returns {Feature<any>} cloned Feature\n */\nfunction cloneFeature(geojson) {\n    var cloned = { type: \"Feature\" };\n    // Preserve Foreign Members\n    Object.keys(geojson).forEach(function (key) {\n        switch (key) {\n            case \"type\":\n            case \"properties\":\n            case \"geometry\":\n                return;\n            default:\n                cloned[key] = geojson[key];\n        }\n    });\n    // Add properties & geometry last\n    cloned.properties = cloneProperties(geojson.properties);\n    cloned.geometry = cloneGeometry(geojson.geometry);\n    return cloned;\n}\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */\nfunction cloneProperties(properties) {\n    var cloned = {};\n    if (!properties) {\n        return cloned;\n    }\n    Object.keys(properties).forEach(function (key) {\n        var value = properties[key];\n        if (typeof value === \"object\") {\n            if (value === null) {\n                // handle null\n                cloned[key] = null;\n            }\n            else if (Array.isArray(value)) {\n                // handle Array\n                cloned[key] = value.map(function (item) {\n                    return item;\n                });\n            }\n            else {\n                // handle generic Object\n                cloned[key] = cloneProperties(value);\n            }\n        }\n        else {\n            cloned[key] = value;\n        }\n    });\n    return cloned;\n}\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection<any>} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection<any>} cloned Feature Collection\n */\nfunction cloneFeatureCollection(geojson) {\n    var cloned = { type: \"FeatureCollection\" };\n    // Preserve Foreign Members\n    Object.keys(geojson).forEach(function (key) {\n        switch (key) {\n            case \"type\":\n            case \"features\":\n                return;\n            default:\n                cloned[key] = geojson[key];\n        }\n    });\n    // Add features\n    cloned.features = geojson.features.map(function (feature) {\n        return cloneFeature(feature);\n    });\n    return cloned;\n}\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry<any>} geometry GeoJSON Geometry\n * @returns {Geometry<any>} cloned Geometry\n */\nfunction cloneGeometry(geometry) {\n    var geom = { type: geometry.type };\n    if (geometry.bbox) {\n        geom.bbox = geometry.bbox;\n    }\n    if (geometry.type === \"GeometryCollection\") {\n        geom.geometries = geometry.geometries.map(function (g) {\n            return cloneGeometry(g);\n        });\n        return geom;\n    }\n    geom.coordinates = deepSlice(geometry.coordinates);\n    return geom;\n}\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */\nfunction deepSlice(coords) {\n    var cloned = coords;\n    if (typeof cloned[0] !== \"object\") {\n        return cloned.slice();\n    }\n    return cloned.map(function (coord) {\n        return deepSlice(coord);\n    });\n}\nexports.default = clone;\n","/* global django */\nimport React, { forwardRef } from 'react'\nimport { classNames } from 'adhocracy4'\nimport { toLocaleDate } from '../contrib/helpers'\nimport ProjectTilePills from './ProjectTopics'\nimport getTimespan from './get-timespan'\nimport ImageWithPlaceholder from '../contrib/ImageWithPlaceholder'\n\nconst copyrightMissingStr = django.gettext('copyright missing')\nconst copyrightStr = django.gettext('copyright by')\nconst PLACEHOLDER_TILE_COPYRIGHT = 'Senatskanzlei Berlin'\nconst participationEndedStr = django.gettext('Participation ended')\nconst beginsOnStr = django.gettext('Begins on the')\nconst participationProjectsStr = django.gettext('Participation projects')\nconst participationProjectStr = django.gettext('Participation project')\nconst clockIconLabel = django.gettext('Clock')\n\nfunction truncateText (item) {\n  if (item.length > 170) {\n    return item.substring(0, 170) + '...'\n  } else {\n    return item\n  }\n}\n\n// FIXME: change to `ref` when using this component once we are on react v19\n//  see https://react.dev/reference/react/forwardRef\nconst ProjectTile = forwardRef(function ProjectTile ({ project, isHorizontal, topicChoices, isMapTile }, ref) {\n  const statusBarProgress = project.active_phase ? project.active_phase[0] + '%' : null\n  let state = 'past'\n\n  // Plans are always active since we dont change state for them, we only show\n  // projects belonging to them.\n  if (project.active_phase || project.type === 'plan') {\n    state = 'active'\n  } else if (project.future_phase) {\n    state = 'future'\n  }\n\n  return (\n    <a\n      href={project.url}\n      target={project.subtype === 'external' ? '_blank' : '_self'}\n      rel=\"noreferrer\"\n      ref={ref}\n      className={classNames('project-tile', isHorizontal ? 'project-tile--horizontal' : 'project-tile--vertical', isMapTile && 'project-tile--map')}\n      aria-label={project.title}\n    >\n      <div className=\"project-tile__content-wrapper\">\n        <div className={classNames('project-tile__image-wrapper image', isHorizontal ? 'project-tile__image-wrapper--horizontal' : '')}>\n          <ProjectTileIcon access={project.access} />\n          {project.subtype === 'external' && (\n            <div className=\"project-tile__external-indicator\" aria-hidden=\"true\">\n              <i className=\"fas fa-external-link-alt\" />\n            </div>\n          )}\n          <ImageWithPlaceholder\n            src={project.tile_image}\n            alt={project.tile_image_alt_text || project.title}\n            height={490}\n            width={653}\n            className=\"project-tile__image\"\n          />\n          <span className=\"image__copyright\">\n            {!project.tile_image\n              ? copyrightStr + ' ' + PLACEHOLDER_TILE_COPYRIGHT\n              : project.tile_image_copyright\n                ? copyrightStr + ' ' + project.tile_image_copyright\n                : copyrightMissingStr}\n          </span>\n        </div>\n\n        <div className=\"project-tile__body\">\n          {!isMapTile && <span className=\"project-tile__head\">{project.district}</span>}\n          {project.topics?.length > 0 &&\n            <div className=\"project-tile__topics\">\n              <ProjectTilePills project={project} topicChoices={topicChoices} />\n            </div>}\n          <p className=\"project-tile__title title-3\">{project.title}</p>\n          {project.description && !isMapTile && (\n            <p className=\"project-tile__description\">\n              {truncateText(project.description)}\n            </p>\n          )}\n        </div>\n      </div>\n\n      <div className=\"project-tile__status\">\n        {state === 'active' && project.type !== 'plan' && (\n          <>\n            <progress\n              value={project.active_phase[0]}\n              max=\"100\"\n              className=\"status-bar\"\n            >\n              {statusBarProgress}\n            </progress>\n            <span className=\"status-bar__timespan\">\n              <i className=\"far fa-clock\" role=\"img\" aria-label={clockIconLabel} />\n              {getTimespan(project)}\n            </span>\n          </>\n        )}\n        {state === 'active' && project.type === 'plan' && (\n          <p>\n            <i className=\"fas fa-table-cells\" aria-hidden=\"true\" />\n\n            <span className=\"project-tile__plan__count\">{project.published_projects_count}</span>\n            {project.published_projects_count === 1\n              ? participationProjectStr\n              : participationProjectsStr}\n          </p>\n        )}\n        {state === 'past' && <p>{participationEndedStr}</p>}\n        {state === 'future' && <p>{beginsOnStr} {toLocaleDate(project.future_phase, undefined, { month: 'numeric', year: 'numeric', day: 'numeric' })}</p>}\n      </div>\n    </a>\n  )\n})\n\nfunction ProjectTileIcon ({ access }) {\n  const projectType = {\n    1: 'public',\n    2: 'semiPublic',\n    3: 'private'\n  }[access]\n\n  switch (projectType) {\n    case 'semiPublic':\n      return (\n        <div className=\"project-tile__icon\" aria-hidden=\"true\">\n          <i className=\"fa fa-eye\" />\n        </div>\n      )\n\n    case 'private':\n      return (\n        <div className=\"project-tile__icon\" aria-hidden=\"true\">\n          <i className=\"fa fa-lock\" />\n        </div>\n      )\n\n    case 'public':\n    default:\n      return null\n  }\n}\n\nexport default ProjectTile\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar convex_1 = __importDefault(require(\"@turf/convex\"));\nvar centroid_1 = __importDefault(require(\"@turf/centroid\"));\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Takes any {@link Feature} or a {@link FeatureCollection} and returns its [center of mass](https://en.wikipedia.org/wiki/Center_of_mass) using this formula: [Centroid of Polygon](https://en.wikipedia.org/wiki/Centroid#Centroid_of_polygon).\n *\n * @name centerOfMass\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] Translate Properties to Feature\n * @returns {Feature<Point>} the center of mass\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var center = turf.centerOfMass(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, center]\n */\nfunction centerOfMass(geojson, options) {\n    if (options === void 0) { options = {}; }\n    switch (invariant_1.getType(geojson)) {\n        case \"Point\":\n            return helpers_1.point(invariant_1.getCoord(geojson), options.properties);\n        case \"Polygon\":\n            var coords = [];\n            meta_1.coordEach(geojson, function (coord) {\n                coords.push(coord);\n            });\n            // First, we neutralize the feature (set it around coordinates [0,0]) to prevent rounding errors\n            // We take any point to translate all the points around 0\n            var centre = centroid_1.default(geojson, { properties: options.properties });\n            var translation = centre.geometry.coordinates;\n            var sx = 0;\n            var sy = 0;\n            var sArea = 0;\n            var i, pi, pj, xi, xj, yi, yj, a;\n            var neutralizedPoints = coords.map(function (point) {\n                return [point[0] - translation[0], point[1] - translation[1]];\n            });\n            for (i = 0; i < coords.length - 1; i++) {\n                // pi is the current point\n                pi = neutralizedPoints[i];\n                xi = pi[0];\n                yi = pi[1];\n                // pj is the next point (pi+1)\n                pj = neutralizedPoints[i + 1];\n                xj = pj[0];\n                yj = pj[1];\n                // a is the common factor to compute the signed area and the final coordinates\n                a = xi * yj - xj * yi;\n                // sArea is the sum used to compute the signed area\n                sArea += a;\n                // sx and sy are the sums used to compute the final coordinates\n                sx += (xi + xj) * a;\n                sy += (yi + yj) * a;\n            }\n            // Shape has no area: fallback on turf.centroid\n            if (sArea === 0) {\n                return centre;\n            }\n            else {\n                // Compute the signed area, and factorize 1/6A\n                var area = sArea * 0.5;\n                var areaFactor = 1 / (6 * area);\n                // Compute the final coordinates, adding back the values that have been neutralized\n                return helpers_1.point([translation[0] + areaFactor * sx, translation[1] + areaFactor * sy], options.properties);\n            }\n        default:\n            // Not a polygon: Compute the convex hull and work with that\n            var hull = convex_1.default(geojson);\n            if (hull)\n                return centerOfMass(hull, { properties: options.properties });\n            // Hull is empty: fallback on the centroid\n            else\n                return centroid_1.default(geojson, { properties: options.properties });\n    }\n}\nexports.default = centerOfMass;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Takes a GeoJSON Feature or FeatureCollection and truncates the precision of the geometry.\n *\n * @name truncate\n * @param {GeoJSON} geojson any GeoJSON Feature, FeatureCollection, Geometry or GeometryCollection.\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.precision=6] coordinate decimal precision\n * @param {number} [options.coordinates=3] maximum number of coordinates (primarly used to remove z coordinates)\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} layer with truncated geometry\n * @example\n * var point = turf.point([\n *     70.46923055566859,\n *     58.11088890802906,\n *     1508\n * ]);\n * var options = {precision: 3, coordinates: 2};\n * var truncated = turf.truncate(point, options);\n * //=truncated.geometry.coordinates => [70.469, 58.111]\n *\n * //addToMap\n * var addToMap = [truncated];\n */\nfunction truncate(geojson, options) {\n    if (options === void 0) { options = {}; }\n    // Optional parameters\n    var precision = options.precision;\n    var coordinates = options.coordinates;\n    var mutate = options.mutate;\n    // default params\n    precision =\n        precision === undefined || precision === null || isNaN(precision)\n            ? 6\n            : precision;\n    coordinates =\n        coordinates === undefined || coordinates === null || isNaN(coordinates)\n            ? 3\n            : coordinates;\n    // validation\n    if (!geojson)\n        throw new Error(\"<geojson> is required\");\n    if (typeof precision !== \"number\")\n        throw new Error(\"<precision> must be a number\");\n    if (typeof coordinates !== \"number\")\n        throw new Error(\"<coordinates> must be a number\");\n    // prevent input mutation\n    if (mutate === false || mutate === undefined)\n        geojson = JSON.parse(JSON.stringify(geojson));\n    var factor = Math.pow(10, precision);\n    // Truncate Coordinates\n    meta_1.coordEach(geojson, function (coords) {\n        truncateCoords(coords, factor, coordinates);\n    });\n    return geojson;\n}\n/**\n * Truncate Coordinates - Mutates coordinates in place\n *\n * @private\n * @param {Array<any>} coords Geometry Coordinates\n * @param {number} factor rounding factor for coordinate decimal precision\n * @param {number} coordinates maximum number of coordinates (primarly used to remove z coordinates)\n * @returns {Array<any>} mutated coordinates\n */\nfunction truncateCoords(coords, factor, coordinates) {\n    // Remove extra coordinates (usually elevation coordinates and more)\n    if (coords.length > coordinates)\n        coords.splice(coordinates, coords.length);\n    // Truncate coordinate decimals\n    for (var i = 0; i < coords.length; i++) {\n        coords[i] = Math.round(coords[i] * factor) / factor;\n    }\n    return coords;\n}\nexports.default = truncate;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar Graph_1 = __importDefault(require(\"./lib/Graph\"));\nvar EdgeRing_1 = __importDefault(require(\"./lib/EdgeRing\"));\n/**\n * Polygonizes {@link LineString|(Multi)LineString(s)} into {@link Polygons}.\n *\n * Implementation of GEOSPolygonize function (`geos::operation::polygonize::Polygonizer`).\n *\n * Polygonizes a set of lines that represents edges in a planar graph. Edges must be correctly\n * noded, i.e., they must only meet at their endpoints.\n *\n * The implementation correctly handles:\n *\n * - Dangles: edges which have one or both ends which are not incident on another edge endpoint.\n * - Cut Edges (bridges): edges that are connected at both ends but which do not form part of a polygon.\n *\n * @name polygonize\n * @param {FeatureCollection|Geometry|Feature<LineString|MultiLineString>} geoJson Lines in order to polygonize\n * @returns {FeatureCollection<Polygon>} Polygons created\n * @throws {Error} if geoJson is invalid.\n */\nfunction polygonize(geoJson) {\n    var graph = Graph_1.default.fromGeoJson(geoJson);\n    // 1. Remove dangle node\n    graph.deleteDangles();\n    // 2. Remove cut-edges (bridge edges)\n    graph.deleteCutEdges();\n    // 3. Get all holes and shells\n    var holes = [], shells = [];\n    graph\n        .getEdgeRings()\n        .filter(function (edgeRing) { return edgeRing.isValid(); })\n        .forEach(function (edgeRing) {\n        if (edgeRing.isHole())\n            holes.push(edgeRing);\n        else\n            shells.push(edgeRing);\n    });\n    // 4. Assign Holes to Shells\n    holes.forEach(function (hole) {\n        if (EdgeRing_1.default.findEdgeRingContaining(hole, shells))\n            shells.push(hole);\n    });\n    // 5. EdgeRings to Polygons\n    return helpers_1.featureCollection(shells.map(function (shell) { return shell.toPolygon(); }));\n}\nexports.default = polygonize;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n  // Handles null Geometry -- Skips this GeoJSON\n  if (geojson === null) return;\n  var j,\n    k,\n    l,\n    geometry,\n    stopG,\n    coords,\n    geometryMaybeCollection,\n    wrapShrink = 0,\n    coordIndex = 0,\n    isGeometryCollection,\n    type = geojson.type,\n    isFeatureCollection = type === \"FeatureCollection\",\n    isFeature = type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[featureIndex].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n      var multiFeatureIndex = 0;\n      var geometryIndex = 0;\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[geomIndex]\n        : geometryMaybeCollection;\n\n      // Handles null Geometry -- Skips this geometry\n      if (geometry === null) continue;\n      coords = geometry.coordinates;\n      var geomType = geometry.type;\n\n      wrapShrink =\n        excludeWrapCoord &&\n        (geomType === \"Polygon\" || geomType === \"MultiPolygon\")\n          ? 1\n          : 0;\n\n      switch (geomType) {\n        case null:\n          break;\n        case \"Point\":\n          if (\n            callback(\n              coords,\n              coordIndex,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n          coordIndex++;\n          multiFeatureIndex++;\n          break;\n        case \"LineString\":\n        case \"MultiPoint\":\n          for (j = 0; j < coords.length; j++) {\n            if (\n              callback(\n                coords[j],\n                coordIndex,\n                featureIndex,\n                multiFeatureIndex,\n                geometryIndex\n              ) === false\n            )\n              return false;\n            coordIndex++;\n            if (geomType === \"MultiPoint\") multiFeatureIndex++;\n          }\n          if (geomType === \"LineString\") multiFeatureIndex++;\n          break;\n        case \"Polygon\":\n        case \"MultiLineString\":\n          for (j = 0; j < coords.length; j++) {\n            for (k = 0; k < coords[j].length - wrapShrink; k++) {\n              if (\n                callback(\n                  coords[j][k],\n                  coordIndex,\n                  featureIndex,\n                  multiFeatureIndex,\n                  geometryIndex\n                ) === false\n              )\n                return false;\n              coordIndex++;\n            }\n            if (geomType === \"MultiLineString\") multiFeatureIndex++;\n            if (geomType === \"Polygon\") geometryIndex++;\n          }\n          if (geomType === \"Polygon\") multiFeatureIndex++;\n          break;\n        case \"MultiPolygon\":\n          for (j = 0; j < coords.length; j++) {\n            geometryIndex = 0;\n            for (k = 0; k < coords[j].length; k++) {\n              for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n                if (\n                  callback(\n                    coords[j][k][l],\n                    coordIndex,\n                    featureIndex,\n                    multiFeatureIndex,\n                    geometryIndex\n                  ) === false\n                )\n                  return false;\n                coordIndex++;\n              }\n              geometryIndex++;\n            }\n            multiFeatureIndex++;\n          }\n          break;\n        case \"GeometryCollection\":\n          for (j = 0; j < geometry.geometries.length; j++)\n            if (\n              coordEach(geometry.geometries[j], callback, excludeWrapCoord) ===\n              false\n            )\n              return false;\n          break;\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n  }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentCoord\n *   //=coordIndex\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n  var previousValue = initialValue;\n  coordEach(\n    geojson,\n    function (\n      currentCoord,\n      coordIndex,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex\n    ) {\n      if (coordIndex === 0 && initialValue === undefined)\n        previousValue = currentCoord;\n      else\n        previousValue = callback(\n          previousValue,\n          currentCoord,\n          coordIndex,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    },\n    excludeWrapCoord\n  );\n  return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n *   //=currentProperties\n *   //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n  var i;\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      for (i = 0; i < geojson.features.length; i++) {\n        if (callback(geojson.features[i].properties, i) === false) break;\n      }\n      break;\n    case \"Feature\":\n      callback(geojson.properties, 0);\n      break;\n  }\n}\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n *   //=previousValue\n *   //=currentProperties\n *   //=featureIndex\n *   return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  propEach(geojson, function (currentProperties, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentProperties;\n    else\n      previousValue = callback(previousValue, currentProperties, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n  if (geojson.type === \"Feature\") {\n    callback(geojson, 0);\n  } else if (geojson.type === \"FeatureCollection\") {\n    for (var i = 0; i < geojson.features.length; i++) {\n      if (callback(geojson.features[i], i) === false) break;\n    }\n  }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {\"foo\": \"bar\"}),\n *   turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  featureEach(geojson, function (currentFeature, featureIndex) {\n    if (featureIndex === 0 && initialValue === undefined)\n      previousValue = currentFeature;\n    else previousValue = callback(previousValue, currentFeature, featureIndex);\n  });\n  return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n *   turf.point([26, 37], {foo: 'bar'}),\n *   turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n  var coords = [];\n  coordEach(geojson, function (coord) {\n    coords.push(coord);\n  });\n  return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n  var i,\n    j,\n    g,\n    geometry,\n    stopG,\n    geometryMaybeCollection,\n    isGeometryCollection,\n    featureProperties,\n    featureBBox,\n    featureId,\n    featureIndex = 0,\n    isFeatureCollection = geojson.type === \"FeatureCollection\",\n    isFeature = geojson.type === \"Feature\",\n    stop = isFeatureCollection ? geojson.features.length : 1;\n\n  // This logic may look a little weird. The reason why it is that way\n  // is because it's trying to be fast. GeoJSON supports multiple kinds\n  // of objects at its root: FeatureCollection, Features, Geometries.\n  // This function has the responsibility of handling all of them, and that\n  // means that some of the `for` loops you see below actually just don't apply\n  // to certain inputs. For instance, if you give this just a\n  // Point geometry, then both loops are short-circuited and all we do\n  // is gradually rename the input until it's called 'geometry'.\n  //\n  // This also aims to allocate as few resources as possible: just a\n  // few numbers and booleans, rather than any temporary arrays as would\n  // be required with the normalization approach.\n  for (i = 0; i < stop; i++) {\n    geometryMaybeCollection = isFeatureCollection\n      ? geojson.features[i].geometry\n      : isFeature\n      ? geojson.geometry\n      : geojson;\n    featureProperties = isFeatureCollection\n      ? geojson.features[i].properties\n      : isFeature\n      ? geojson.properties\n      : {};\n    featureBBox = isFeatureCollection\n      ? geojson.features[i].bbox\n      : isFeature\n      ? geojson.bbox\n      : undefined;\n    featureId = isFeatureCollection\n      ? geojson.features[i].id\n      : isFeature\n      ? geojson.id\n      : undefined;\n    isGeometryCollection = geometryMaybeCollection\n      ? geometryMaybeCollection.type === \"GeometryCollection\"\n      : false;\n    stopG = isGeometryCollection\n      ? geometryMaybeCollection.geometries.length\n      : 1;\n\n    for (g = 0; g < stopG; g++) {\n      geometry = isGeometryCollection\n        ? geometryMaybeCollection.geometries[g]\n        : geometryMaybeCollection;\n\n      // Handle null Geometry\n      if (geometry === null) {\n        if (\n          callback(\n            null,\n            featureIndex,\n            featureProperties,\n            featureBBox,\n            featureId\n          ) === false\n        )\n          return false;\n        continue;\n      }\n      switch (geometry.type) {\n        case \"Point\":\n        case \"LineString\":\n        case \"MultiPoint\":\n        case \"Polygon\":\n        case \"MultiLineString\":\n        case \"MultiPolygon\": {\n          if (\n            callback(\n              geometry,\n              featureIndex,\n              featureProperties,\n              featureBBox,\n              featureId\n            ) === false\n          )\n            return false;\n          break;\n        }\n        case \"GeometryCollection\": {\n          for (j = 0; j < geometry.geometries.length; j++) {\n            if (\n              callback(\n                geometry.geometries[j],\n                featureIndex,\n                featureProperties,\n                featureBBox,\n                featureId\n              ) === false\n            )\n              return false;\n          }\n          break;\n        }\n        default:\n          throw new Error(\"Unknown Geometry Type\");\n      }\n    }\n    // Only increase `featureIndex` per each feature\n    featureIndex++;\n  }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n *   //=previousValue\n *   //=currentGeometry\n *   //=featureIndex\n *   //=featureProperties\n *   //=featureBBox\n *   //=featureId\n *   return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  geomEach(\n    geojson,\n    function (\n      currentGeometry,\n      featureIndex,\n      featureProperties,\n      featureBBox,\n      featureId\n    ) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentGeometry;\n      else\n        previousValue = callback(\n          previousValue,\n          currentGeometry,\n          featureIndex,\n          featureProperties,\n          featureBBox,\n          featureId\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n  geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n    // Callback for single geometry\n    var type = geometry === null ? null : geometry.type;\n    switch (type) {\n      case null:\n      case \"Point\":\n      case \"LineString\":\n      case \"Polygon\":\n        if (\n          callback(\n            helpers.feature(geometry, properties, { bbox: bbox, id: id }),\n            featureIndex,\n            0\n          ) === false\n        )\n          return false;\n        return;\n    }\n\n    var geomType;\n\n    // Callback for multi-geometry\n    switch (type) {\n      case \"MultiPoint\":\n        geomType = \"Point\";\n        break;\n      case \"MultiLineString\":\n        geomType = \"LineString\";\n        break;\n      case \"MultiPolygon\":\n        geomType = \"Polygon\";\n        break;\n    }\n\n    for (\n      var multiFeatureIndex = 0;\n      multiFeatureIndex < geometry.coordinates.length;\n      multiFeatureIndex++\n    ) {\n      var coordinate = geometry.coordinates[multiFeatureIndex];\n      var geom = {\n        type: geomType,\n        coordinates: coordinate,\n      };\n      if (\n        callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) ===\n        false\n      )\n        return false;\n    }\n  });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n *     turf.point([26, 37], {foo: 'bar'}),\n *     turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n *   //=previousValue\n *   //=currentFeature\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  flattenEach(\n    geojson,\n    function (currentFeature, featureIndex, multiFeatureIndex) {\n      if (\n        featureIndex === 0 &&\n        multiFeatureIndex === 0 &&\n        initialValue === undefined\n      )\n        previousValue = currentFeature;\n      else\n        previousValue = callback(\n          previousValue,\n          currentFeature,\n          featureIndex,\n          multiFeatureIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //=currentSegment\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n *     total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    var segmentIndex = 0;\n\n    // Exclude null Geometries\n    if (!feature.geometry) return;\n    // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n    var type = feature.geometry.type;\n    if (type === \"Point\" || type === \"MultiPoint\") return;\n\n    // Generate 2-vertex line segments\n    var previousCoords;\n    var previousFeatureIndex = 0;\n    var previousMultiIndex = 0;\n    var prevGeomIndex = 0;\n    if (\n      coordEach(\n        feature,\n        function (\n          currentCoord,\n          coordIndex,\n          featureIndexCoord,\n          multiPartIndexCoord,\n          geometryIndex\n        ) {\n          // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n          if (\n            previousCoords === undefined ||\n            featureIndex > previousFeatureIndex ||\n            multiPartIndexCoord > previousMultiIndex ||\n            geometryIndex > prevGeomIndex\n          ) {\n            previousCoords = currentCoord;\n            previousFeatureIndex = featureIndex;\n            previousMultiIndex = multiPartIndexCoord;\n            prevGeomIndex = geometryIndex;\n            segmentIndex = 0;\n            return;\n          }\n          var currentSegment = helpers.lineString(\n            [previousCoords, currentCoord],\n            feature.properties\n          );\n          if (\n            callback(\n              currentSegment,\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex,\n              segmentIndex\n            ) === false\n          )\n            return false;\n          segmentIndex++;\n          previousCoords = currentCoord;\n        }\n      ) === false\n    )\n      return false;\n  });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n *   //= previousSegment\n *   //= currentSegment\n *   //= featureIndex\n *   //= multiFeatureIndex\n *   //= geometryIndex\n *   //= segmentIndex\n *   return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n *     previousValue++;\n *     return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  var started = false;\n  segmentEach(\n    geojson,\n    function (\n      currentSegment,\n      featureIndex,\n      multiFeatureIndex,\n      geometryIndex,\n      segmentIndex\n    ) {\n      if (started === false && initialValue === undefined)\n        previousValue = currentSegment;\n      else\n        previousValue = callback(\n          previousValue,\n          currentSegment,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex,\n          segmentIndex\n        );\n      started = true;\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n *   [[26, 37], [35, 45]],\n *   [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n  // validation\n  if (!geojson) throw new Error(\"geojson is required\");\n\n  flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n    if (feature.geometry === null) return;\n    var type = feature.geometry.type;\n    var coords = feature.geometry.coordinates;\n    switch (type) {\n      case \"LineString\":\n        if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false)\n          return false;\n        break;\n      case \"Polygon\":\n        for (\n          var geometryIndex = 0;\n          geometryIndex < coords.length;\n          geometryIndex++\n        ) {\n          if (\n            callback(\n              helpers.lineString(coords[geometryIndex], feature.properties),\n              featureIndex,\n              multiFeatureIndex,\n              geometryIndex\n            ) === false\n          )\n            return false;\n        }\n        break;\n    }\n  });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n *  - The previousValue argument is initialValue.\n *  - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n *  - The previousValue argument is the value of the first element present in the array.\n *  - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n *   turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n *   turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n *   //=previousValue\n *   //=currentLine\n *   //=featureIndex\n *   //=multiFeatureIndex\n *   //=geometryIndex\n *   return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n  var previousValue = initialValue;\n  lineEach(\n    geojson,\n    function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n      if (featureIndex === 0 && initialValue === undefined)\n        previousValue = currentLine;\n      else\n        previousValue = callback(\n          previousValue,\n          currentLine,\n          featureIndex,\n          multiFeatureIndex,\n          geometryIndex\n        );\n    }\n  );\n  return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var segmentIndex = options.segmentIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find SegmentIndex\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n      if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n      return helpers.lineString(\n        [coords[segmentIndex], coords[segmentIndex + 1]],\n        properties,\n        options\n      );\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[geometryIndex][segmentIndex],\n          coords[geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (segmentIndex < 0)\n        segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][segmentIndex],\n          coords[multiFeatureIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (segmentIndex < 0)\n        segmentIndex =\n          coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n      return helpers.lineString(\n        [\n          coords[multiFeatureIndex][geometryIndex][segmentIndex],\n          coords[multiFeatureIndex][geometryIndex][segmentIndex + 1],\n        ],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n *     [[10, 10], [50, 30], [30, 40]],\n *     [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n  // Optional Parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var featureIndex = options.featureIndex || 0;\n  var multiFeatureIndex = options.multiFeatureIndex || 0;\n  var geometryIndex = options.geometryIndex || 0;\n  var coordIndex = options.coordIndex || 0;\n\n  // Find FeatureIndex\n  var properties = options.properties;\n  var geometry;\n\n  switch (geojson.type) {\n    case \"FeatureCollection\":\n      if (featureIndex < 0)\n        featureIndex = geojson.features.length + featureIndex;\n      properties = properties || geojson.features[featureIndex].properties;\n      geometry = geojson.features[featureIndex].geometry;\n      break;\n    case \"Feature\":\n      properties = properties || geojson.properties;\n      geometry = geojson.geometry;\n      break;\n    case \"Point\":\n    case \"MultiPoint\":\n      return null;\n    case \"LineString\":\n    case \"Polygon\":\n    case \"MultiLineString\":\n    case \"MultiPolygon\":\n      geometry = geojson;\n      break;\n    default:\n      throw new Error(\"geojson is invalid\");\n  }\n\n  // Find Coord Index\n  if (geometry === null) return null;\n  var coords = geometry.coordinates;\n  switch (geometry.type) {\n    case \"Point\":\n      return helpers.point(coords, properties, options);\n    case \"MultiPoint\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      return helpers.point(coords[multiFeatureIndex], properties, options);\n    case \"LineString\":\n      if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n      return helpers.point(coords[coordIndex], properties, options);\n    case \"Polygon\":\n      if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[geometryIndex].length + coordIndex;\n      return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n    case \"MultiLineString\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (coordIndex < 0)\n        coordIndex = coords[multiFeatureIndex].length + coordIndex;\n      return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n    case \"MultiPolygon\":\n      if (multiFeatureIndex < 0)\n        multiFeatureIndex = coords.length + multiFeatureIndex;\n      if (geometryIndex < 0)\n        geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n      if (coordIndex < 0)\n        coordIndex =\n          coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n      return helpers.point(\n        coords[multiFeatureIndex][geometryIndex][coordIndex],\n        properties,\n        options\n      );\n  }\n  throw new Error(\"geojson is invalid\");\n}\n\nexports.coordAll = coordAll;\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.findPoint = findPoint;\nexports.findSegment = findSegment;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.polygonClipping = factory());\n})(this, (function () { 'use strict';\n\n    /**\n     * splaytree v3.1.2\n     * Fast Splay tree for Node and browser\n     *\n     * @author Alexander Milevski <info@w8r.name>\n     * @license MIT\n     * @preserve\n     */\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation. All rights reserved.\r\n    Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n    this file except in compliance with the License. You may obtain a copy of the\r\n    License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n    MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n    See the Apache Version 2.0 License for specific language governing permissions\r\n    and limitations under the License.\r\n    ***************************************************************************** */\n\n    function __generator(thisArg, body) {\n      var _ = {\n          label: 0,\n          sent: function () {\n            if (t[0] & 1) throw t[1];\n            return t[1];\n          },\n          trys: [],\n          ops: []\n        },\n        f,\n        y,\n        t,\n        g;\n      return g = {\n        next: verb(0),\n        \"throw\": verb(1),\n        \"return\": verb(2)\n      }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n        return this;\n      }), g;\n      function verb(n) {\n        return function (v) {\n          return step([n, v]);\n        };\n      }\n      function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n            case 0:\n            case 1:\n              t = op;\n              break;\n            case 4:\n              _.label++;\n              return {\n                value: op[1],\n                done: false\n              };\n            case 5:\n              _.label++;\n              y = op[1];\n              op = [0];\n              continue;\n            case 7:\n              op = _.ops.pop();\n              _.trys.pop();\n              continue;\n            default:\n              if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n                _ = 0;\n                continue;\n              }\n              if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n                _.label = op[1];\n                break;\n              }\n              if (op[0] === 6 && _.label < t[1]) {\n                _.label = t[1];\n                t = op;\n                break;\n              }\n              if (t && _.label < t[2]) {\n                _.label = t[2];\n                _.ops.push(op);\n                break;\n              }\n              if (t[2]) _.ops.pop();\n              _.trys.pop();\n              continue;\n          }\n          op = body.call(thisArg, _);\n        } catch (e) {\n          op = [6, e];\n          y = 0;\n        } finally {\n          f = t = 0;\n        }\n        if (op[0] & 5) throw op[1];\n        return {\n          value: op[0] ? op[1] : void 0,\n          done: true\n        };\n      }\n    }\n    var Node = /** @class */function () {\n      function Node(key, data) {\n        this.next = null;\n        this.key = key;\n        this.data = data;\n        this.left = null;\n        this.right = null;\n      }\n      return Node;\n    }();\n\n    /* follows \"An implementation of top-down splaying\"\r\n     * by D. Sleator <sleator@cs.cmu.edu> March 1992\r\n     */\n    function DEFAULT_COMPARE(a, b) {\n      return a > b ? 1 : a < b ? -1 : 0;\n    }\n    /**\r\n     * Simple top down splay, not requiring i to be in the tree t.\r\n     */\n    function splay(i, t, comparator) {\n      var N = new Node(null, null);\n      var l = N;\n      var r = N;\n      while (true) {\n        var cmp = comparator(i, t.key);\n        //if (i < t.key) {\n        if (cmp < 0) {\n          if (t.left === null) break;\n          //if (i < t.left.key) {\n          if (comparator(i, t.left.key) < 0) {\n            var y = t.left; /* rotate right */\n            t.left = y.right;\n            y.right = t;\n            t = y;\n            if (t.left === null) break;\n          }\n          r.left = t; /* link right */\n          r = t;\n          t = t.left;\n          //} else if (i > t.key) {\n        } else if (cmp > 0) {\n          if (t.right === null) break;\n          //if (i > t.right.key) {\n          if (comparator(i, t.right.key) > 0) {\n            var y = t.right; /* rotate left */\n            t.right = y.left;\n            y.left = t;\n            t = y;\n            if (t.right === null) break;\n          }\n          l.right = t; /* link left */\n          l = t;\n          t = t.right;\n        } else break;\n      }\n      /* assemble */\n      l.right = t.left;\n      r.left = t.right;\n      t.left = N.right;\n      t.right = N.left;\n      return t;\n    }\n    function insert(i, data, t, comparator) {\n      var node = new Node(i, data);\n      if (t === null) {\n        node.left = node.right = null;\n        return node;\n      }\n      t = splay(i, t, comparator);\n      var cmp = comparator(i, t.key);\n      if (cmp < 0) {\n        node.left = t.left;\n        node.right = t;\n        t.left = null;\n      } else if (cmp >= 0) {\n        node.right = t.right;\n        node.left = t;\n        t.right = null;\n      }\n      return node;\n    }\n    function split(key, v, comparator) {\n      var left = null;\n      var right = null;\n      if (v) {\n        v = splay(key, v, comparator);\n        var cmp = comparator(v.key, key);\n        if (cmp === 0) {\n          left = v.left;\n          right = v.right;\n        } else if (cmp < 0) {\n          right = v.right;\n          v.right = null;\n          left = v;\n        } else {\n          left = v.left;\n          v.left = null;\n          right = v;\n        }\n      }\n      return {\n        left: left,\n        right: right\n      };\n    }\n    function merge(left, right, comparator) {\n      if (right === null) return left;\n      if (left === null) return right;\n      right = splay(left.key, right, comparator);\n      right.left = left;\n      return right;\n    }\n    /**\r\n     * Prints level of the tree\r\n     */\n    function printRow(root, prefix, isTail, out, printNode) {\n      if (root) {\n        out(\"\" + prefix + (isTail ? '└── ' : '├── ') + printNode(root) + \"\\n\");\n        var indent = prefix + (isTail ? '    ' : '│   ');\n        if (root.left) printRow(root.left, indent, false, out, printNode);\n        if (root.right) printRow(root.right, indent, true, out, printNode);\n      }\n    }\n    var Tree = /** @class */function () {\n      function Tree(comparator) {\n        if (comparator === void 0) {\n          comparator = DEFAULT_COMPARE;\n        }\n        this._root = null;\n        this._size = 0;\n        this._comparator = comparator;\n      }\n      /**\r\n       * Inserts a key, allows duplicates\r\n       */\n      Tree.prototype.insert = function (key, data) {\n        this._size++;\n        return this._root = insert(key, data, this._root, this._comparator);\n      };\n      /**\r\n       * Adds a key, if it is not present in the tree\r\n       */\n      Tree.prototype.add = function (key, data) {\n        var node = new Node(key, data);\n        if (this._root === null) {\n          node.left = node.right = null;\n          this._size++;\n          this._root = node;\n        }\n        var comparator = this._comparator;\n        var t = splay(key, this._root, comparator);\n        var cmp = comparator(key, t.key);\n        if (cmp === 0) this._root = t;else {\n          if (cmp < 0) {\n            node.left = t.left;\n            node.right = t;\n            t.left = null;\n          } else if (cmp > 0) {\n            node.right = t.right;\n            node.left = t;\n            t.right = null;\n          }\n          this._size++;\n          this._root = node;\n        }\n        return this._root;\n      };\n      /**\r\n       * @param  {Key} key\r\n       * @return {Node|null}\r\n       */\n      Tree.prototype.remove = function (key) {\n        this._root = this._remove(key, this._root, this._comparator);\n      };\n      /**\r\n       * Deletes i from the tree if it's there\r\n       */\n      Tree.prototype._remove = function (i, t, comparator) {\n        var x;\n        if (t === null) return null;\n        t = splay(i, t, comparator);\n        var cmp = comparator(i, t.key);\n        if (cmp === 0) {\n          /* found it */\n          if (t.left === null) {\n            x = t.right;\n          } else {\n            x = splay(i, t.left, comparator);\n            x.right = t.right;\n          }\n          this._size--;\n          return x;\n        }\n        return t; /* It wasn't there */\n      };\n      /**\r\n       * Removes and returns the node with smallest key\r\n       */\n      Tree.prototype.pop = function () {\n        var node = this._root;\n        if (node) {\n          while (node.left) node = node.left;\n          this._root = splay(node.key, this._root, this._comparator);\n          this._root = this._remove(node.key, this._root, this._comparator);\n          return {\n            key: node.key,\n            data: node.data\n          };\n        }\n        return null;\n      };\n      /**\r\n       * Find without splaying\r\n       */\n      Tree.prototype.findStatic = function (key) {\n        var current = this._root;\n        var compare = this._comparator;\n        while (current) {\n          var cmp = compare(key, current.key);\n          if (cmp === 0) return current;else if (cmp < 0) current = current.left;else current = current.right;\n        }\n        return null;\n      };\n      Tree.prototype.find = function (key) {\n        if (this._root) {\n          this._root = splay(key, this._root, this._comparator);\n          if (this._comparator(key, this._root.key) !== 0) return null;\n        }\n        return this._root;\n      };\n      Tree.prototype.contains = function (key) {\n        var current = this._root;\n        var compare = this._comparator;\n        while (current) {\n          var cmp = compare(key, current.key);\n          if (cmp === 0) return true;else if (cmp < 0) current = current.left;else current = current.right;\n        }\n        return false;\n      };\n      Tree.prototype.forEach = function (visitor, ctx) {\n        var current = this._root;\n        var Q = []; /* Initialize stack s */\n        var done = false;\n        while (!done) {\n          if (current !== null) {\n            Q.push(current);\n            current = current.left;\n          } else {\n            if (Q.length !== 0) {\n              current = Q.pop();\n              visitor.call(ctx, current);\n              current = current.right;\n            } else done = true;\n          }\n        }\n        return this;\n      };\n      /**\r\n       * Walk key range from `low` to `high`. Stops if `fn` returns a value.\r\n       */\n      Tree.prototype.range = function (low, high, fn, ctx) {\n        var Q = [];\n        var compare = this._comparator;\n        var node = this._root;\n        var cmp;\n        while (Q.length !== 0 || node) {\n          if (node) {\n            Q.push(node);\n            node = node.left;\n          } else {\n            node = Q.pop();\n            cmp = compare(node.key, high);\n            if (cmp > 0) {\n              break;\n            } else if (compare(node.key, low) >= 0) {\n              if (fn.call(ctx, node)) return this; // stop if smth is returned\n            }\n            node = node.right;\n          }\n        }\n        return this;\n      };\n      /**\r\n       * Returns array of keys\r\n       */\n      Tree.prototype.keys = function () {\n        var keys = [];\n        this.forEach(function (_a) {\n          var key = _a.key;\n          return keys.push(key);\n        });\n        return keys;\n      };\n      /**\r\n       * Returns array of all the data in the nodes\r\n       */\n      Tree.prototype.values = function () {\n        var values = [];\n        this.forEach(function (_a) {\n          var data = _a.data;\n          return values.push(data);\n        });\n        return values;\n      };\n      Tree.prototype.min = function () {\n        if (this._root) return this.minNode(this._root).key;\n        return null;\n      };\n      Tree.prototype.max = function () {\n        if (this._root) return this.maxNode(this._root).key;\n        return null;\n      };\n      Tree.prototype.minNode = function (t) {\n        if (t === void 0) {\n          t = this._root;\n        }\n        if (t) while (t.left) t = t.left;\n        return t;\n      };\n      Tree.prototype.maxNode = function (t) {\n        if (t === void 0) {\n          t = this._root;\n        }\n        if (t) while (t.right) t = t.right;\n        return t;\n      };\n      /**\r\n       * Returns node at given index\r\n       */\n      Tree.prototype.at = function (index) {\n        var current = this._root;\n        var done = false;\n        var i = 0;\n        var Q = [];\n        while (!done) {\n          if (current) {\n            Q.push(current);\n            current = current.left;\n          } else {\n            if (Q.length > 0) {\n              current = Q.pop();\n              if (i === index) return current;\n              i++;\n              current = current.right;\n            } else done = true;\n          }\n        }\n        return null;\n      };\n      Tree.prototype.next = function (d) {\n        var root = this._root;\n        var successor = null;\n        if (d.right) {\n          successor = d.right;\n          while (successor.left) successor = successor.left;\n          return successor;\n        }\n        var comparator = this._comparator;\n        while (root) {\n          var cmp = comparator(d.key, root.key);\n          if (cmp === 0) break;else if (cmp < 0) {\n            successor = root;\n            root = root.left;\n          } else root = root.right;\n        }\n        return successor;\n      };\n      Tree.prototype.prev = function (d) {\n        var root = this._root;\n        var predecessor = null;\n        if (d.left !== null) {\n          predecessor = d.left;\n          while (predecessor.right) predecessor = predecessor.right;\n          return predecessor;\n        }\n        var comparator = this._comparator;\n        while (root) {\n          var cmp = comparator(d.key, root.key);\n          if (cmp === 0) break;else if (cmp < 0) root = root.left;else {\n            predecessor = root;\n            root = root.right;\n          }\n        }\n        return predecessor;\n      };\n      Tree.prototype.clear = function () {\n        this._root = null;\n        this._size = 0;\n        return this;\n      };\n      Tree.prototype.toList = function () {\n        return toList(this._root);\n      };\n      /**\r\n       * Bulk-load items. Both array have to be same size\r\n       */\n      Tree.prototype.load = function (keys, values, presort) {\n        if (values === void 0) {\n          values = [];\n        }\n        if (presort === void 0) {\n          presort = false;\n        }\n        var size = keys.length;\n        var comparator = this._comparator;\n        // sort if needed\n        if (presort) sort(keys, values, 0, size - 1, comparator);\n        if (this._root === null) {\n          // empty tree\n          this._root = loadRecursive(keys, values, 0, size);\n          this._size = size;\n        } else {\n          // that re-builds the whole tree from two in-order traversals\n          var mergedList = mergeLists(this.toList(), createList(keys, values), comparator);\n          size = this._size + size;\n          this._root = sortedListToBST({\n            head: mergedList\n          }, 0, size);\n        }\n        return this;\n      };\n      Tree.prototype.isEmpty = function () {\n        return this._root === null;\n      };\n      Object.defineProperty(Tree.prototype, \"size\", {\n        get: function () {\n          return this._size;\n        },\n        enumerable: true,\n        configurable: true\n      });\n      Object.defineProperty(Tree.prototype, \"root\", {\n        get: function () {\n          return this._root;\n        },\n        enumerable: true,\n        configurable: true\n      });\n      Tree.prototype.toString = function (printNode) {\n        if (printNode === void 0) {\n          printNode = function (n) {\n            return String(n.key);\n          };\n        }\n        var out = [];\n        printRow(this._root, '', true, function (v) {\n          return out.push(v);\n        }, printNode);\n        return out.join('');\n      };\n      Tree.prototype.update = function (key, newKey, newData) {\n        var comparator = this._comparator;\n        var _a = split(key, this._root, comparator),\n          left = _a.left,\n          right = _a.right;\n        if (comparator(key, newKey) < 0) {\n          right = insert(newKey, newData, right, comparator);\n        } else {\n          left = insert(newKey, newData, left, comparator);\n        }\n        this._root = merge(left, right, comparator);\n      };\n      Tree.prototype.split = function (key) {\n        return split(key, this._root, this._comparator);\n      };\n      Tree.prototype[Symbol.iterator] = function () {\n        var current, Q, done;\n        return __generator(this, function (_a) {\n          switch (_a.label) {\n            case 0:\n              current = this._root;\n              Q = [];\n              done = false;\n              _a.label = 1;\n            case 1:\n              if (!!done) return [3 /*break*/, 6];\n              if (!(current !== null)) return [3 /*break*/, 2];\n              Q.push(current);\n              current = current.left;\n              return [3 /*break*/, 5];\n            case 2:\n              if (!(Q.length !== 0)) return [3 /*break*/, 4];\n              current = Q.pop();\n              return [4 /*yield*/, current];\n            case 3:\n              _a.sent();\n              current = current.right;\n              return [3 /*break*/, 5];\n            case 4:\n              done = true;\n              _a.label = 5;\n            case 5:\n              return [3 /*break*/, 1];\n            case 6:\n              return [2 /*return*/];\n          }\n        });\n      };\n      return Tree;\n    }();\n    function loadRecursive(keys, values, start, end) {\n      var size = end - start;\n      if (size > 0) {\n        var middle = start + Math.floor(size / 2);\n        var key = keys[middle];\n        var data = values[middle];\n        var node = new Node(key, data);\n        node.left = loadRecursive(keys, values, start, middle);\n        node.right = loadRecursive(keys, values, middle + 1, end);\n        return node;\n      }\n      return null;\n    }\n    function createList(keys, values) {\n      var head = new Node(null, null);\n      var p = head;\n      for (var i = 0; i < keys.length; i++) {\n        p = p.next = new Node(keys[i], values[i]);\n      }\n      p.next = null;\n      return head.next;\n    }\n    function toList(root) {\n      var current = root;\n      var Q = [];\n      var done = false;\n      var head = new Node(null, null);\n      var p = head;\n      while (!done) {\n        if (current) {\n          Q.push(current);\n          current = current.left;\n        } else {\n          if (Q.length > 0) {\n            current = p = p.next = Q.pop();\n            current = current.right;\n          } else done = true;\n        }\n      }\n      p.next = null; // that'll work even if the tree was empty\n      return head.next;\n    }\n    function sortedListToBST(list, start, end) {\n      var size = end - start;\n      if (size > 0) {\n        var middle = start + Math.floor(size / 2);\n        var left = sortedListToBST(list, start, middle);\n        var root = list.head;\n        root.left = left;\n        list.head = list.head.next;\n        root.right = sortedListToBST(list, middle + 1, end);\n        return root;\n      }\n      return null;\n    }\n    function mergeLists(l1, l2, compare) {\n      var head = new Node(null, null); // dummy\n      var p = head;\n      var p1 = l1;\n      var p2 = l2;\n      while (p1 !== null && p2 !== null) {\n        if (compare(p1.key, p2.key) < 0) {\n          p.next = p1;\n          p1 = p1.next;\n        } else {\n          p.next = p2;\n          p2 = p2.next;\n        }\n        p = p.next;\n      }\n      if (p1 !== null) {\n        p.next = p1;\n      } else if (p2 !== null) {\n        p.next = p2;\n      }\n      return head.next;\n    }\n    function sort(keys, values, left, right, compare) {\n      if (left >= right) return;\n      var pivot = keys[left + right >> 1];\n      var i = left - 1;\n      var j = right + 1;\n      while (true) {\n        do i++; while (compare(keys[i], pivot) < 0);\n        do j--; while (compare(keys[j], pivot) > 0);\n        if (i >= j) break;\n        var tmp = keys[i];\n        keys[i] = keys[j];\n        keys[j] = tmp;\n        tmp = values[i];\n        values[i] = values[j];\n        values[j] = tmp;\n      }\n      sort(keys, values, left, j, compare);\n      sort(keys, values, j + 1, right, compare);\n    }\n\n    /**\n     * A bounding box has the format:\n     *\n     *  { ll: { x: xmin, y: ymin }, ur: { x: xmax, y: ymax } }\n     *\n     */\n\n    const isInBbox = (bbox, point) => {\n      return bbox.ll.x <= point.x && point.x <= bbox.ur.x && bbox.ll.y <= point.y && point.y <= bbox.ur.y;\n    };\n\n    /* Returns either null, or a bbox (aka an ordered pair of points)\n     * If there is only one point of overlap, a bbox with identical points\n     * will be returned */\n    const getBboxOverlap = (b1, b2) => {\n      // check if the bboxes overlap at all\n      if (b2.ur.x < b1.ll.x || b1.ur.x < b2.ll.x || b2.ur.y < b1.ll.y || b1.ur.y < b2.ll.y) return null;\n\n      // find the middle two X values\n      const lowerX = b1.ll.x < b2.ll.x ? b2.ll.x : b1.ll.x;\n      const upperX = b1.ur.x < b2.ur.x ? b1.ur.x : b2.ur.x;\n\n      // find the middle two Y values\n      const lowerY = b1.ll.y < b2.ll.y ? b2.ll.y : b1.ll.y;\n      const upperY = b1.ur.y < b2.ur.y ? b1.ur.y : b2.ur.y;\n\n      // put those middle values together to get the overlap\n      return {\n        ll: {\n          x: lowerX,\n          y: lowerY\n        },\n        ur: {\n          x: upperX,\n          y: upperY\n        }\n      };\n    };\n\n    /* Javascript doesn't do integer math. Everything is\n     * floating point with percision Number.EPSILON.\n     *\n     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON\n     */\n\n    let epsilon$1 = Number.EPSILON;\n\n    // IE Polyfill\n    if (epsilon$1 === undefined) epsilon$1 = Math.pow(2, -52);\n    const EPSILON_SQ = epsilon$1 * epsilon$1;\n\n    /* FLP comparator */\n    const cmp = (a, b) => {\n      // check if they're both 0\n      if (-epsilon$1 < a && a < epsilon$1) {\n        if (-epsilon$1 < b && b < epsilon$1) {\n          return 0;\n        }\n      }\n\n      // check if they're flp equal\n      const ab = a - b;\n      if (ab * ab < EPSILON_SQ * a * b) {\n        return 0;\n      }\n\n      // normal comparison\n      return a < b ? -1 : 1;\n    };\n\n    /**\n     * This class rounds incoming values sufficiently so that\n     * floating points problems are, for the most part, avoided.\n     *\n     * Incoming points are have their x & y values tested against\n     * all previously seen x & y values. If either is 'too close'\n     * to a previously seen value, it's value is 'snapped' to the\n     * previously seen value.\n     *\n     * All points should be rounded by this class before being\n     * stored in any data structures in the rest of this algorithm.\n     */\n\n    class PtRounder {\n      constructor() {\n        this.reset();\n      }\n      reset() {\n        this.xRounder = new CoordRounder();\n        this.yRounder = new CoordRounder();\n      }\n      round(x, y) {\n        return {\n          x: this.xRounder.round(x),\n          y: this.yRounder.round(y)\n        };\n      }\n    }\n    class CoordRounder {\n      constructor() {\n        this.tree = new Tree();\n        // preseed with 0 so we don't end up with values < Number.EPSILON\n        this.round(0);\n      }\n\n      // Note: this can rounds input values backwards or forwards.\n      //       You might ask, why not restrict this to just rounding\n      //       forwards? Wouldn't that allow left endpoints to always\n      //       remain left endpoints during splitting (never change to\n      //       right). No - it wouldn't, because we snap intersections\n      //       to endpoints (to establish independence from the segment\n      //       angle for t-intersections).\n      round(coord) {\n        const node = this.tree.add(coord);\n        const prevNode = this.tree.prev(node);\n        if (prevNode !== null && cmp(node.key, prevNode.key) === 0) {\n          this.tree.remove(coord);\n          return prevNode.key;\n        }\n        const nextNode = this.tree.next(node);\n        if (nextNode !== null && cmp(node.key, nextNode.key) === 0) {\n          this.tree.remove(coord);\n          return nextNode.key;\n        }\n        return coord;\n      }\n    }\n\n    // singleton available by import\n    const rounder = new PtRounder();\n\n    const epsilon = 1.1102230246251565e-16;\n    const splitter = 134217729;\n    const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n    // fast_expansion_sum_zeroelim routine from oritinal code\n    function sum(elen, e, flen, f, h) {\n      let Q, Qnew, hh, bvirt;\n      let enow = e[0];\n      let fnow = f[0];\n      let eindex = 0;\n      let findex = 0;\n      if (fnow > enow === fnow > -enow) {\n        Q = enow;\n        enow = e[++eindex];\n      } else {\n        Q = fnow;\n        fnow = f[++findex];\n      }\n      let hindex = 0;\n      if (eindex < elen && findex < flen) {\n        if (fnow > enow === fnow > -enow) {\n          Qnew = enow + Q;\n          hh = Q - (Qnew - enow);\n          enow = e[++eindex];\n        } else {\n          Qnew = fnow + Q;\n          hh = Q - (Qnew - fnow);\n          fnow = f[++findex];\n        }\n        Q = Qnew;\n        if (hh !== 0) {\n          h[hindex++] = hh;\n        }\n        while (eindex < elen && findex < flen) {\n          if (fnow > enow === fnow > -enow) {\n            Qnew = Q + enow;\n            bvirt = Qnew - Q;\n            hh = Q - (Qnew - bvirt) + (enow - bvirt);\n            enow = e[++eindex];\n          } else {\n            Qnew = Q + fnow;\n            bvirt = Qnew - Q;\n            hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n            fnow = f[++findex];\n          }\n          Q = Qnew;\n          if (hh !== 0) {\n            h[hindex++] = hh;\n          }\n        }\n      }\n      while (eindex < elen) {\n        Qnew = Q + enow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (enow - bvirt);\n        enow = e[++eindex];\n        Q = Qnew;\n        if (hh !== 0) {\n          h[hindex++] = hh;\n        }\n      }\n      while (findex < flen) {\n        Qnew = Q + fnow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n        fnow = f[++findex];\n        Q = Qnew;\n        if (hh !== 0) {\n          h[hindex++] = hh;\n        }\n      }\n      if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n      }\n      return hindex;\n    }\n    function estimate(elen, e) {\n      let Q = e[0];\n      for (let i = 1; i < elen; i++) Q += e[i];\n      return Q;\n    }\n    function vec(n) {\n      return new Float64Array(n);\n    }\n\n    const ccwerrboundA = (3 + 16 * epsilon) * epsilon;\n    const ccwerrboundB = (2 + 12 * epsilon) * epsilon;\n    const ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n    const B = vec(4);\n    const C1 = vec(8);\n    const C2 = vec(12);\n    const D = vec(16);\n    const u = vec(4);\n    function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n      let acxtail, acytail, bcxtail, bcytail;\n      let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n      const acx = ax - cx;\n      const bcx = bx - cx;\n      const acy = ay - cy;\n      const bcy = by - cy;\n      s1 = acx * bcy;\n      c = splitter * acx;\n      ahi = c - (c - acx);\n      alo = acx - ahi;\n      c = splitter * bcy;\n      bhi = c - (c - bcy);\n      blo = bcy - bhi;\n      s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n      t1 = acy * bcx;\n      c = splitter * acy;\n      ahi = c - (c - acy);\n      alo = acy - ahi;\n      c = splitter * bcx;\n      bhi = c - (c - bcx);\n      blo = bcx - bhi;\n      t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n      _i = s0 - t0;\n      bvirt = s0 - _i;\n      B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n      _j = s1 + _i;\n      bvirt = _j - s1;\n      _0 = s1 - (_j - bvirt) + (_i - bvirt);\n      _i = _0 - t1;\n      bvirt = _0 - _i;\n      B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n      u3 = _j + _i;\n      bvirt = u3 - _j;\n      B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n      B[3] = u3;\n      let det = estimate(4, B);\n      let errbound = ccwerrboundB * detsum;\n      if (det >= errbound || -det >= errbound) {\n        return det;\n      }\n      bvirt = ax - acx;\n      acxtail = ax - (acx + bvirt) + (bvirt - cx);\n      bvirt = bx - bcx;\n      bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n      bvirt = ay - acy;\n      acytail = ay - (acy + bvirt) + (bvirt - cy);\n      bvirt = by - bcy;\n      bcytail = by - (bcy + bvirt) + (bvirt - cy);\n      if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {\n        return det;\n      }\n      errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n      det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail);\n      if (det >= errbound || -det >= errbound) return det;\n      s1 = acxtail * bcy;\n      c = splitter * acxtail;\n      ahi = c - (c - acxtail);\n      alo = acxtail - ahi;\n      c = splitter * bcy;\n      bhi = c - (c - bcy);\n      blo = bcy - bhi;\n      s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n      t1 = acytail * bcx;\n      c = splitter * acytail;\n      ahi = c - (c - acytail);\n      alo = acytail - ahi;\n      c = splitter * bcx;\n      bhi = c - (c - bcx);\n      blo = bcx - bhi;\n      t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n      _i = s0 - t0;\n      bvirt = s0 - _i;\n      u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n      _j = s1 + _i;\n      bvirt = _j - s1;\n      _0 = s1 - (_j - bvirt) + (_i - bvirt);\n      _i = _0 - t1;\n      bvirt = _0 - _i;\n      u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n      u3 = _j + _i;\n      bvirt = u3 - _j;\n      u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n      u[3] = u3;\n      const C1len = sum(4, B, 4, u, C1);\n      s1 = acx * bcytail;\n      c = splitter * acx;\n      ahi = c - (c - acx);\n      alo = acx - ahi;\n      c = splitter * bcytail;\n      bhi = c - (c - bcytail);\n      blo = bcytail - bhi;\n      s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n      t1 = acy * bcxtail;\n      c = splitter * acy;\n      ahi = c - (c - acy);\n      alo = acy - ahi;\n      c = splitter * bcxtail;\n      bhi = c - (c - bcxtail);\n      blo = bcxtail - bhi;\n      t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n      _i = s0 - t0;\n      bvirt = s0 - _i;\n      u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n      _j = s1 + _i;\n      bvirt = _j - s1;\n      _0 = s1 - (_j - bvirt) + (_i - bvirt);\n      _i = _0 - t1;\n      bvirt = _0 - _i;\n      u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n      u3 = _j + _i;\n      bvirt = u3 - _j;\n      u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n      u[3] = u3;\n      const C2len = sum(C1len, C1, 4, u, C2);\n      s1 = acxtail * bcytail;\n      c = splitter * acxtail;\n      ahi = c - (c - acxtail);\n      alo = acxtail - ahi;\n      c = splitter * bcytail;\n      bhi = c - (c - bcytail);\n      blo = bcytail - bhi;\n      s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n      t1 = acytail * bcxtail;\n      c = splitter * acytail;\n      ahi = c - (c - acytail);\n      alo = acytail - ahi;\n      c = splitter * bcxtail;\n      bhi = c - (c - bcxtail);\n      blo = bcxtail - bhi;\n      t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n      _i = s0 - t0;\n      bvirt = s0 - _i;\n      u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n      _j = s1 + _i;\n      bvirt = _j - s1;\n      _0 = s1 - (_j - bvirt) + (_i - bvirt);\n      _i = _0 - t1;\n      bvirt = _0 - _i;\n      u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n      u3 = _j + _i;\n      bvirt = u3 - _j;\n      u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n      u[3] = u3;\n      const Dlen = sum(C2len, C2, 4, u, D);\n      return D[Dlen - 1];\n    }\n    function orient2d(ax, ay, bx, by, cx, cy) {\n      const detleft = (ay - cy) * (bx - cx);\n      const detright = (ax - cx) * (by - cy);\n      const det = detleft - detright;\n      const detsum = Math.abs(detleft + detright);\n      if (Math.abs(det) >= ccwerrboundA * detsum) return det;\n      return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n    }\n\n    /* Cross Product of two vectors with first point at origin */\n    const crossProduct = (a, b) => a.x * b.y - a.y * b.x;\n\n    /* Dot Product of two vectors with first point at origin */\n    const dotProduct = (a, b) => a.x * b.x + a.y * b.y;\n\n    /* Comparator for two vectors with same starting point */\n    const compareVectorAngles = (basePt, endPt1, endPt2) => {\n      const res = orient2d(basePt.x, basePt.y, endPt1.x, endPt1.y, endPt2.x, endPt2.y);\n      if (res > 0) return -1;\n      if (res < 0) return 1;\n      return 0;\n    };\n    const length = v => Math.sqrt(dotProduct(v, v));\n\n    /* Get the sine of the angle from pShared -> pAngle to pShaed -> pBase */\n    const sineOfAngle = (pShared, pBase, pAngle) => {\n      const vBase = {\n        x: pBase.x - pShared.x,\n        y: pBase.y - pShared.y\n      };\n      const vAngle = {\n        x: pAngle.x - pShared.x,\n        y: pAngle.y - pShared.y\n      };\n      return crossProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n    };\n\n    /* Get the cosine of the angle from pShared -> pAngle to pShaed -> pBase */\n    const cosineOfAngle = (pShared, pBase, pAngle) => {\n      const vBase = {\n        x: pBase.x - pShared.x,\n        y: pBase.y - pShared.y\n      };\n      const vAngle = {\n        x: pAngle.x - pShared.x,\n        y: pAngle.y - pShared.y\n      };\n      return dotProduct(vAngle, vBase) / length(vAngle) / length(vBase);\n    };\n\n    /* Get the x coordinate where the given line (defined by a point and vector)\n     * crosses the horizontal line with the given y coordiante.\n     * In the case of parrallel lines (including overlapping ones) returns null. */\n    const horizontalIntersection = (pt, v, y) => {\n      if (v.y === 0) return null;\n      return {\n        x: pt.x + v.x / v.y * (y - pt.y),\n        y: y\n      };\n    };\n\n    /* Get the y coordinate where the given line (defined by a point and vector)\n     * crosses the vertical line with the given x coordiante.\n     * In the case of parrallel lines (including overlapping ones) returns null. */\n    const verticalIntersection = (pt, v, x) => {\n      if (v.x === 0) return null;\n      return {\n        x: x,\n        y: pt.y + v.y / v.x * (x - pt.x)\n      };\n    };\n\n    /* Get the intersection of two lines, each defined by a base point and a vector.\n     * In the case of parrallel lines (including overlapping ones) returns null. */\n    const intersection$1 = (pt1, v1, pt2, v2) => {\n      // take some shortcuts for vertical and horizontal lines\n      // this also ensures we don't calculate an intersection and then discover\n      // it's actually outside the bounding box of the line\n      if (v1.x === 0) return verticalIntersection(pt2, v2, pt1.x);\n      if (v2.x === 0) return verticalIntersection(pt1, v1, pt2.x);\n      if (v1.y === 0) return horizontalIntersection(pt2, v2, pt1.y);\n      if (v2.y === 0) return horizontalIntersection(pt1, v1, pt2.y);\n\n      // General case for non-overlapping segments.\n      // This algorithm is based on Schneider and Eberly.\n      // http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf - pg 244\n\n      const kross = crossProduct(v1, v2);\n      if (kross == 0) return null;\n      const ve = {\n        x: pt2.x - pt1.x,\n        y: pt2.y - pt1.y\n      };\n      const d1 = crossProduct(ve, v1) / kross;\n      const d2 = crossProduct(ve, v2) / kross;\n\n      // take the average of the two calculations to minimize rounding error\n      const x1 = pt1.x + d2 * v1.x,\n        x2 = pt2.x + d1 * v2.x;\n      const y1 = pt1.y + d2 * v1.y,\n        y2 = pt2.y + d1 * v2.y;\n      const x = (x1 + x2) / 2;\n      const y = (y1 + y2) / 2;\n      return {\n        x: x,\n        y: y\n      };\n    };\n\n    class SweepEvent {\n      // for ordering sweep events in the sweep event queue\n      static compare(a, b) {\n        // favor event with a point that the sweep line hits first\n        const ptCmp = SweepEvent.comparePoints(a.point, b.point);\n        if (ptCmp !== 0) return ptCmp;\n\n        // the points are the same, so link them if needed\n        if (a.point !== b.point) a.link(b);\n\n        // favor right events over left\n        if (a.isLeft !== b.isLeft) return a.isLeft ? 1 : -1;\n\n        // we have two matching left or right endpoints\n        // ordering of this case is the same as for their segments\n        return Segment.compare(a.segment, b.segment);\n      }\n\n      // for ordering points in sweep line order\n      static comparePoints(aPt, bPt) {\n        if (aPt.x < bPt.x) return -1;\n        if (aPt.x > bPt.x) return 1;\n        if (aPt.y < bPt.y) return -1;\n        if (aPt.y > bPt.y) return 1;\n        return 0;\n      }\n\n      // Warning: 'point' input will be modified and re-used (for performance)\n      constructor(point, isLeft) {\n        if (point.events === undefined) point.events = [this];else point.events.push(this);\n        this.point = point;\n        this.isLeft = isLeft;\n        // this.segment, this.otherSE set by factory\n      }\n      link(other) {\n        if (other.point === this.point) {\n          throw new Error(\"Tried to link already linked events\");\n        }\n        const otherEvents = other.point.events;\n        for (let i = 0, iMax = otherEvents.length; i < iMax; i++) {\n          const evt = otherEvents[i];\n          this.point.events.push(evt);\n          evt.point = this.point;\n        }\n        this.checkForConsuming();\n      }\n\n      /* Do a pass over our linked events and check to see if any pair\n       * of segments match, and should be consumed. */\n      checkForConsuming() {\n        // FIXME: The loops in this method run O(n^2) => no good.\n        //        Maintain little ordered sweep event trees?\n        //        Can we maintaining an ordering that avoids the need\n        //        for the re-sorting with getLeftmostComparator in geom-out?\n\n        // Compare each pair of events to see if other events also match\n        const numEvents = this.point.events.length;\n        for (let i = 0; i < numEvents; i++) {\n          const evt1 = this.point.events[i];\n          if (evt1.segment.consumedBy !== undefined) continue;\n          for (let j = i + 1; j < numEvents; j++) {\n            const evt2 = this.point.events[j];\n            if (evt2.consumedBy !== undefined) continue;\n            if (evt1.otherSE.point.events !== evt2.otherSE.point.events) continue;\n            evt1.segment.consume(evt2.segment);\n          }\n        }\n      }\n      getAvailableLinkedEvents() {\n        // point.events is always of length 2 or greater\n        const events = [];\n        for (let i = 0, iMax = this.point.events.length; i < iMax; i++) {\n          const evt = this.point.events[i];\n          if (evt !== this && !evt.segment.ringOut && evt.segment.isInResult()) {\n            events.push(evt);\n          }\n        }\n        return events;\n      }\n\n      /**\n       * Returns a comparator function for sorting linked events that will\n       * favor the event that will give us the smallest left-side angle.\n       * All ring construction starts as low as possible heading to the right,\n       * so by always turning left as sharp as possible we'll get polygons\n       * without uncessary loops & holes.\n       *\n       * The comparator function has a compute cache such that it avoids\n       * re-computing already-computed values.\n       */\n      getLeftmostComparator(baseEvent) {\n        const cache = new Map();\n        const fillCache = linkedEvent => {\n          const nextEvent = linkedEvent.otherSE;\n          cache.set(linkedEvent, {\n            sine: sineOfAngle(this.point, baseEvent.point, nextEvent.point),\n            cosine: cosineOfAngle(this.point, baseEvent.point, nextEvent.point)\n          });\n        };\n        return (a, b) => {\n          if (!cache.has(a)) fillCache(a);\n          if (!cache.has(b)) fillCache(b);\n          const {\n            sine: asine,\n            cosine: acosine\n          } = cache.get(a);\n          const {\n            sine: bsine,\n            cosine: bcosine\n          } = cache.get(b);\n\n          // both on or above x-axis\n          if (asine >= 0 && bsine >= 0) {\n            if (acosine < bcosine) return 1;\n            if (acosine > bcosine) return -1;\n            return 0;\n          }\n\n          // both below x-axis\n          if (asine < 0 && bsine < 0) {\n            if (acosine < bcosine) return -1;\n            if (acosine > bcosine) return 1;\n            return 0;\n          }\n\n          // one above x-axis, one below\n          if (bsine < asine) return -1;\n          if (bsine > asine) return 1;\n          return 0;\n        };\n      }\n    }\n\n    // Give segments unique ID's to get consistent sorting of\n    // segments and sweep events when all else is identical\n    let segmentId = 0;\n    class Segment {\n      /* This compare() function is for ordering segments in the sweep\n       * line tree, and does so according to the following criteria:\n       *\n       * Consider the vertical line that lies an infinestimal step to the\n       * right of the right-more of the two left endpoints of the input\n       * segments. Imagine slowly moving a point up from negative infinity\n       * in the increasing y direction. Which of the two segments will that\n       * point intersect first? That segment comes 'before' the other one.\n       *\n       * If neither segment would be intersected by such a line, (if one\n       * or more of the segments are vertical) then the line to be considered\n       * is directly on the right-more of the two left inputs.\n       */\n      static compare(a, b) {\n        const alx = a.leftSE.point.x;\n        const blx = b.leftSE.point.x;\n        const arx = a.rightSE.point.x;\n        const brx = b.rightSE.point.x;\n\n        // check if they're even in the same vertical plane\n        if (brx < alx) return 1;\n        if (arx < blx) return -1;\n        const aly = a.leftSE.point.y;\n        const bly = b.leftSE.point.y;\n        const ary = a.rightSE.point.y;\n        const bry = b.rightSE.point.y;\n\n        // is left endpoint of segment B the right-more?\n        if (alx < blx) {\n          // are the two segments in the same horizontal plane?\n          if (bly < aly && bly < ary) return 1;\n          if (bly > aly && bly > ary) return -1;\n\n          // is the B left endpoint colinear to segment A?\n          const aCmpBLeft = a.comparePoint(b.leftSE.point);\n          if (aCmpBLeft < 0) return 1;\n          if (aCmpBLeft > 0) return -1;\n\n          // is the A right endpoint colinear to segment B ?\n          const bCmpARight = b.comparePoint(a.rightSE.point);\n          if (bCmpARight !== 0) return bCmpARight;\n\n          // colinear segments, consider the one with left-more\n          // left endpoint to be first (arbitrary?)\n          return -1;\n        }\n\n        // is left endpoint of segment A the right-more?\n        if (alx > blx) {\n          if (aly < bly && aly < bry) return -1;\n          if (aly > bly && aly > bry) return 1;\n\n          // is the A left endpoint colinear to segment B?\n          const bCmpALeft = b.comparePoint(a.leftSE.point);\n          if (bCmpALeft !== 0) return bCmpALeft;\n\n          // is the B right endpoint colinear to segment A?\n          const aCmpBRight = a.comparePoint(b.rightSE.point);\n          if (aCmpBRight < 0) return 1;\n          if (aCmpBRight > 0) return -1;\n\n          // colinear segments, consider the one with left-more\n          // left endpoint to be first (arbitrary?)\n          return 1;\n        }\n\n        // if we get here, the two left endpoints are in the same\n        // vertical plane, ie alx === blx\n\n        // consider the lower left-endpoint to come first\n        if (aly < bly) return -1;\n        if (aly > bly) return 1;\n\n        // left endpoints are identical\n        // check for colinearity by using the left-more right endpoint\n\n        // is the A right endpoint more left-more?\n        if (arx < brx) {\n          const bCmpARight = b.comparePoint(a.rightSE.point);\n          if (bCmpARight !== 0) return bCmpARight;\n        }\n\n        // is the B right endpoint more left-more?\n        if (arx > brx) {\n          const aCmpBRight = a.comparePoint(b.rightSE.point);\n          if (aCmpBRight < 0) return 1;\n          if (aCmpBRight > 0) return -1;\n        }\n        if (arx !== brx) {\n          // are these two [almost] vertical segments with opposite orientation?\n          // if so, the one with the lower right endpoint comes first\n          const ay = ary - aly;\n          const ax = arx - alx;\n          const by = bry - bly;\n          const bx = brx - blx;\n          if (ay > ax && by < bx) return 1;\n          if (ay < ax && by > bx) return -1;\n        }\n\n        // we have colinear segments with matching orientation\n        // consider the one with more left-more right endpoint to be first\n        if (arx > brx) return 1;\n        if (arx < brx) return -1;\n\n        // if we get here, two two right endpoints are in the same\n        // vertical plane, ie arx === brx\n\n        // consider the lower right-endpoint to come first\n        if (ary < bry) return -1;\n        if (ary > bry) return 1;\n\n        // right endpoints identical as well, so the segments are idential\n        // fall back on creation order as consistent tie-breaker\n        if (a.id < b.id) return -1;\n        if (a.id > b.id) return 1;\n\n        // identical segment, ie a === b\n        return 0;\n      }\n\n      /* Warning: a reference to ringWindings input will be stored,\n       *  and possibly will be later modified */\n      constructor(leftSE, rightSE, rings, windings) {\n        this.id = ++segmentId;\n        this.leftSE = leftSE;\n        leftSE.segment = this;\n        leftSE.otherSE = rightSE;\n        this.rightSE = rightSE;\n        rightSE.segment = this;\n        rightSE.otherSE = leftSE;\n        this.rings = rings;\n        this.windings = windings;\n        // left unset for performance, set later in algorithm\n        // this.ringOut, this.consumedBy, this.prev\n      }\n      static fromRing(pt1, pt2, ring) {\n        let leftPt, rightPt, winding;\n\n        // ordering the two points according to sweep line ordering\n        const cmpPts = SweepEvent.comparePoints(pt1, pt2);\n        if (cmpPts < 0) {\n          leftPt = pt1;\n          rightPt = pt2;\n          winding = 1;\n        } else if (cmpPts > 0) {\n          leftPt = pt2;\n          rightPt = pt1;\n          winding = -1;\n        } else throw new Error(`Tried to create degenerate segment at [${pt1.x}, ${pt1.y}]`);\n        const leftSE = new SweepEvent(leftPt, true);\n        const rightSE = new SweepEvent(rightPt, false);\n        return new Segment(leftSE, rightSE, [ring], [winding]);\n      }\n\n      /* When a segment is split, the rightSE is replaced with a new sweep event */\n      replaceRightSE(newRightSE) {\n        this.rightSE = newRightSE;\n        this.rightSE.segment = this;\n        this.rightSE.otherSE = this.leftSE;\n        this.leftSE.otherSE = this.rightSE;\n      }\n      bbox() {\n        const y1 = this.leftSE.point.y;\n        const y2 = this.rightSE.point.y;\n        return {\n          ll: {\n            x: this.leftSE.point.x,\n            y: y1 < y2 ? y1 : y2\n          },\n          ur: {\n            x: this.rightSE.point.x,\n            y: y1 > y2 ? y1 : y2\n          }\n        };\n      }\n\n      /* A vector from the left point to the right */\n      vector() {\n        return {\n          x: this.rightSE.point.x - this.leftSE.point.x,\n          y: this.rightSE.point.y - this.leftSE.point.y\n        };\n      }\n      isAnEndpoint(pt) {\n        return pt.x === this.leftSE.point.x && pt.y === this.leftSE.point.y || pt.x === this.rightSE.point.x && pt.y === this.rightSE.point.y;\n      }\n\n      /* Compare this segment with a point.\n       *\n       * A point P is considered to be colinear to a segment if there\n       * exists a distance D such that if we travel along the segment\n       * from one * endpoint towards the other a distance D, we find\n       * ourselves at point P.\n       *\n       * Return value indicates:\n       *\n       *   1: point lies above the segment (to the left of vertical)\n       *   0: point is colinear to segment\n       *  -1: point lies below the segment (to the right of vertical)\n       */\n      comparePoint(point) {\n        if (this.isAnEndpoint(point)) return 0;\n        const lPt = this.leftSE.point;\n        const rPt = this.rightSE.point;\n        const v = this.vector();\n\n        // Exactly vertical segments.\n        if (lPt.x === rPt.x) {\n          if (point.x === lPt.x) return 0;\n          return point.x < lPt.x ? 1 : -1;\n        }\n\n        // Nearly vertical segments with an intersection.\n        // Check to see where a point on the line with matching Y coordinate is.\n        const yDist = (point.y - lPt.y) / v.y;\n        const xFromYDist = lPt.x + yDist * v.x;\n        if (point.x === xFromYDist) return 0;\n\n        // General case.\n        // Check to see where a point on the line with matching X coordinate is.\n        const xDist = (point.x - lPt.x) / v.x;\n        const yFromXDist = lPt.y + xDist * v.y;\n        if (point.y === yFromXDist) return 0;\n        return point.y < yFromXDist ? -1 : 1;\n      }\n\n      /**\n       * Given another segment, returns the first non-trivial intersection\n       * between the two segments (in terms of sweep line ordering), if it exists.\n       *\n       * A 'non-trivial' intersection is one that will cause one or both of the\n       * segments to be split(). As such, 'trivial' vs. 'non-trivial' intersection:\n       *\n       *   * endpoint of segA with endpoint of segB --> trivial\n       *   * endpoint of segA with point along segB --> non-trivial\n       *   * endpoint of segB with point along segA --> non-trivial\n       *   * point along segA with point along segB --> non-trivial\n       *\n       * If no non-trivial intersection exists, return null\n       * Else, return null.\n       */\n      getIntersection(other) {\n        // If bboxes don't overlap, there can't be any intersections\n        const tBbox = this.bbox();\n        const oBbox = other.bbox();\n        const bboxOverlap = getBboxOverlap(tBbox, oBbox);\n        if (bboxOverlap === null) return null;\n\n        // We first check to see if the endpoints can be considered intersections.\n        // This will 'snap' intersections to endpoints if possible, and will\n        // handle cases of colinearity.\n\n        const tlp = this.leftSE.point;\n        const trp = this.rightSE.point;\n        const olp = other.leftSE.point;\n        const orp = other.rightSE.point;\n\n        // does each endpoint touch the other segment?\n        // note that we restrict the 'touching' definition to only allow segments\n        // to touch endpoints that lie forward from where we are in the sweep line pass\n        const touchesOtherLSE = isInBbox(tBbox, olp) && this.comparePoint(olp) === 0;\n        const touchesThisLSE = isInBbox(oBbox, tlp) && other.comparePoint(tlp) === 0;\n        const touchesOtherRSE = isInBbox(tBbox, orp) && this.comparePoint(orp) === 0;\n        const touchesThisRSE = isInBbox(oBbox, trp) && other.comparePoint(trp) === 0;\n\n        // do left endpoints match?\n        if (touchesThisLSE && touchesOtherLSE) {\n          // these two cases are for colinear segments with matching left\n          // endpoints, and one segment being longer than the other\n          if (touchesThisRSE && !touchesOtherRSE) return trp;\n          if (!touchesThisRSE && touchesOtherRSE) return orp;\n          // either the two segments match exactly (two trival intersections)\n          // or just on their left endpoint (one trivial intersection\n          return null;\n        }\n\n        // does this left endpoint matches (other doesn't)\n        if (touchesThisLSE) {\n          // check for segments that just intersect on opposing endpoints\n          if (touchesOtherRSE) {\n            if (tlp.x === orp.x && tlp.y === orp.y) return null;\n          }\n          // t-intersection on left endpoint\n          return tlp;\n        }\n\n        // does other left endpoint matches (this doesn't)\n        if (touchesOtherLSE) {\n          // check for segments that just intersect on opposing endpoints\n          if (touchesThisRSE) {\n            if (trp.x === olp.x && trp.y === olp.y) return null;\n          }\n          // t-intersection on left endpoint\n          return olp;\n        }\n\n        // trivial intersection on right endpoints\n        if (touchesThisRSE && touchesOtherRSE) return null;\n\n        // t-intersections on just one right endpoint\n        if (touchesThisRSE) return trp;\n        if (touchesOtherRSE) return orp;\n\n        // None of our endpoints intersect. Look for a general intersection between\n        // infinite lines laid over the segments\n        const pt = intersection$1(tlp, this.vector(), olp, other.vector());\n\n        // are the segments parrallel? Note that if they were colinear with overlap,\n        // they would have an endpoint intersection and that case was already handled above\n        if (pt === null) return null;\n\n        // is the intersection found between the lines not on the segments?\n        if (!isInBbox(bboxOverlap, pt)) return null;\n\n        // round the the computed point if needed\n        return rounder.round(pt.x, pt.y);\n      }\n\n      /**\n       * Split the given segment into multiple segments on the given points.\n       *  * Each existing segment will retain its leftSE and a new rightSE will be\n       *    generated for it.\n       *  * A new segment will be generated which will adopt the original segment's\n       *    rightSE, and a new leftSE will be generated for it.\n       *  * If there are more than two points given to split on, new segments\n       *    in the middle will be generated with new leftSE and rightSE's.\n       *  * An array of the newly generated SweepEvents will be returned.\n       *\n       * Warning: input array of points is modified\n       */\n      split(point) {\n        const newEvents = [];\n        const alreadyLinked = point.events !== undefined;\n        const newLeftSE = new SweepEvent(point, true);\n        const newRightSE = new SweepEvent(point, false);\n        const oldRightSE = this.rightSE;\n        this.replaceRightSE(newRightSE);\n        newEvents.push(newRightSE);\n        newEvents.push(newLeftSE);\n        const newSeg = new Segment(newLeftSE, oldRightSE, this.rings.slice(), this.windings.slice());\n\n        // when splitting a nearly vertical downward-facing segment,\n        // sometimes one of the resulting new segments is vertical, in which\n        // case its left and right events may need to be swapped\n        if (SweepEvent.comparePoints(newSeg.leftSE.point, newSeg.rightSE.point) > 0) {\n          newSeg.swapEvents();\n        }\n        if (SweepEvent.comparePoints(this.leftSE.point, this.rightSE.point) > 0) {\n          this.swapEvents();\n        }\n\n        // in the point we just used to create new sweep events with was already\n        // linked to other events, we need to check if either of the affected\n        // segments should be consumed\n        if (alreadyLinked) {\n          newLeftSE.checkForConsuming();\n          newRightSE.checkForConsuming();\n        }\n        return newEvents;\n      }\n\n      /* Swap which event is left and right */\n      swapEvents() {\n        const tmpEvt = this.rightSE;\n        this.rightSE = this.leftSE;\n        this.leftSE = tmpEvt;\n        this.leftSE.isLeft = true;\n        this.rightSE.isLeft = false;\n        for (let i = 0, iMax = this.windings.length; i < iMax; i++) {\n          this.windings[i] *= -1;\n        }\n      }\n\n      /* Consume another segment. We take their rings under our wing\n       * and mark them as consumed. Use for perfectly overlapping segments */\n      consume(other) {\n        let consumer = this;\n        let consumee = other;\n        while (consumer.consumedBy) consumer = consumer.consumedBy;\n        while (consumee.consumedBy) consumee = consumee.consumedBy;\n        const cmp = Segment.compare(consumer, consumee);\n        if (cmp === 0) return; // already consumed\n        // the winner of the consumption is the earlier segment\n        // according to sweep line ordering\n        if (cmp > 0) {\n          const tmp = consumer;\n          consumer = consumee;\n          consumee = tmp;\n        }\n\n        // make sure a segment doesn't consume it's prev\n        if (consumer.prev === consumee) {\n          const tmp = consumer;\n          consumer = consumee;\n          consumee = tmp;\n        }\n        for (let i = 0, iMax = consumee.rings.length; i < iMax; i++) {\n          const ring = consumee.rings[i];\n          const winding = consumee.windings[i];\n          const index = consumer.rings.indexOf(ring);\n          if (index === -1) {\n            consumer.rings.push(ring);\n            consumer.windings.push(winding);\n          } else consumer.windings[index] += winding;\n        }\n        consumee.rings = null;\n        consumee.windings = null;\n        consumee.consumedBy = consumer;\n\n        // mark sweep events consumed as to maintain ordering in sweep event queue\n        consumee.leftSE.consumedBy = consumer.leftSE;\n        consumee.rightSE.consumedBy = consumer.rightSE;\n      }\n\n      /* The first segment previous segment chain that is in the result */\n      prevInResult() {\n        if (this._prevInResult !== undefined) return this._prevInResult;\n        if (!this.prev) this._prevInResult = null;else if (this.prev.isInResult()) this._prevInResult = this.prev;else this._prevInResult = this.prev.prevInResult();\n        return this._prevInResult;\n      }\n      beforeState() {\n        if (this._beforeState !== undefined) return this._beforeState;\n        if (!this.prev) this._beforeState = {\n          rings: [],\n          windings: [],\n          multiPolys: []\n        };else {\n          const seg = this.prev.consumedBy || this.prev;\n          this._beforeState = seg.afterState();\n        }\n        return this._beforeState;\n      }\n      afterState() {\n        if (this._afterState !== undefined) return this._afterState;\n        const beforeState = this.beforeState();\n        this._afterState = {\n          rings: beforeState.rings.slice(0),\n          windings: beforeState.windings.slice(0),\n          multiPolys: []\n        };\n        const ringsAfter = this._afterState.rings;\n        const windingsAfter = this._afterState.windings;\n        const mpsAfter = this._afterState.multiPolys;\n\n        // calculate ringsAfter, windingsAfter\n        for (let i = 0, iMax = this.rings.length; i < iMax; i++) {\n          const ring = this.rings[i];\n          const winding = this.windings[i];\n          const index = ringsAfter.indexOf(ring);\n          if (index === -1) {\n            ringsAfter.push(ring);\n            windingsAfter.push(winding);\n          } else windingsAfter[index] += winding;\n        }\n\n        // calcualte polysAfter\n        const polysAfter = [];\n        const polysExclude = [];\n        for (let i = 0, iMax = ringsAfter.length; i < iMax; i++) {\n          if (windingsAfter[i] === 0) continue; // non-zero rule\n          const ring = ringsAfter[i];\n          const poly = ring.poly;\n          if (polysExclude.indexOf(poly) !== -1) continue;\n          if (ring.isExterior) polysAfter.push(poly);else {\n            if (polysExclude.indexOf(poly) === -1) polysExclude.push(poly);\n            const index = polysAfter.indexOf(ring.poly);\n            if (index !== -1) polysAfter.splice(index, 1);\n          }\n        }\n\n        // calculate multiPolysAfter\n        for (let i = 0, iMax = polysAfter.length; i < iMax; i++) {\n          const mp = polysAfter[i].multiPoly;\n          if (mpsAfter.indexOf(mp) === -1) mpsAfter.push(mp);\n        }\n        return this._afterState;\n      }\n\n      /* Is this segment part of the final result? */\n      isInResult() {\n        // if we've been consumed, we're not in the result\n        if (this.consumedBy) return false;\n        if (this._isInResult !== undefined) return this._isInResult;\n        const mpsBefore = this.beforeState().multiPolys;\n        const mpsAfter = this.afterState().multiPolys;\n        switch (operation.type) {\n          case \"union\":\n            {\n              // UNION - included iff:\n              //  * On one side of us there is 0 poly interiors AND\n              //  * On the other side there is 1 or more.\n              const noBefores = mpsBefore.length === 0;\n              const noAfters = mpsAfter.length === 0;\n              this._isInResult = noBefores !== noAfters;\n              break;\n            }\n          case \"intersection\":\n            {\n              // INTERSECTION - included iff:\n              //  * on one side of us all multipolys are rep. with poly interiors AND\n              //  * on the other side of us, not all multipolys are repsented\n              //    with poly interiors\n              let least;\n              let most;\n              if (mpsBefore.length < mpsAfter.length) {\n                least = mpsBefore.length;\n                most = mpsAfter.length;\n              } else {\n                least = mpsAfter.length;\n                most = mpsBefore.length;\n              }\n              this._isInResult = most === operation.numMultiPolys && least < most;\n              break;\n            }\n          case \"xor\":\n            {\n              // XOR - included iff:\n              //  * the difference between the number of multipolys represented\n              //    with poly interiors on our two sides is an odd number\n              const diff = Math.abs(mpsBefore.length - mpsAfter.length);\n              this._isInResult = diff % 2 === 1;\n              break;\n            }\n          case \"difference\":\n            {\n              // DIFFERENCE included iff:\n              //  * on exactly one side, we have just the subject\n              const isJustSubject = mps => mps.length === 1 && mps[0].isSubject;\n              this._isInResult = isJustSubject(mpsBefore) !== isJustSubject(mpsAfter);\n              break;\n            }\n          default:\n            throw new Error(`Unrecognized operation type found ${operation.type}`);\n        }\n        return this._isInResult;\n      }\n    }\n\n    class RingIn {\n      constructor(geomRing, poly, isExterior) {\n        if (!Array.isArray(geomRing) || geomRing.length === 0) {\n          throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n        }\n        this.poly = poly;\n        this.isExterior = isExterior;\n        this.segments = [];\n        if (typeof geomRing[0][0] !== \"number\" || typeof geomRing[0][1] !== \"number\") {\n          throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n        }\n        const firstPoint = rounder.round(geomRing[0][0], geomRing[0][1]);\n        this.bbox = {\n          ll: {\n            x: firstPoint.x,\n            y: firstPoint.y\n          },\n          ur: {\n            x: firstPoint.x,\n            y: firstPoint.y\n          }\n        };\n        let prevPoint = firstPoint;\n        for (let i = 1, iMax = geomRing.length; i < iMax; i++) {\n          if (typeof geomRing[i][0] !== \"number\" || typeof geomRing[i][1] !== \"number\") {\n            throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n          }\n          let point = rounder.round(geomRing[i][0], geomRing[i][1]);\n          // skip repeated points\n          if (point.x === prevPoint.x && point.y === prevPoint.y) continue;\n          this.segments.push(Segment.fromRing(prevPoint, point, this));\n          if (point.x < this.bbox.ll.x) this.bbox.ll.x = point.x;\n          if (point.y < this.bbox.ll.y) this.bbox.ll.y = point.y;\n          if (point.x > this.bbox.ur.x) this.bbox.ur.x = point.x;\n          if (point.y > this.bbox.ur.y) this.bbox.ur.y = point.y;\n          prevPoint = point;\n        }\n        // add segment from last to first if last is not the same as first\n        if (firstPoint.x !== prevPoint.x || firstPoint.y !== prevPoint.y) {\n          this.segments.push(Segment.fromRing(prevPoint, firstPoint, this));\n        }\n      }\n      getSweepEvents() {\n        const sweepEvents = [];\n        for (let i = 0, iMax = this.segments.length; i < iMax; i++) {\n          const segment = this.segments[i];\n          sweepEvents.push(segment.leftSE);\n          sweepEvents.push(segment.rightSE);\n        }\n        return sweepEvents;\n      }\n    }\n    class PolyIn {\n      constructor(geomPoly, multiPoly) {\n        if (!Array.isArray(geomPoly)) {\n          throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n        }\n        this.exteriorRing = new RingIn(geomPoly[0], this, true);\n        // copy by value\n        this.bbox = {\n          ll: {\n            x: this.exteriorRing.bbox.ll.x,\n            y: this.exteriorRing.bbox.ll.y\n          },\n          ur: {\n            x: this.exteriorRing.bbox.ur.x,\n            y: this.exteriorRing.bbox.ur.y\n          }\n        };\n        this.interiorRings = [];\n        for (let i = 1, iMax = geomPoly.length; i < iMax; i++) {\n          const ring = new RingIn(geomPoly[i], this, false);\n          if (ring.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = ring.bbox.ll.x;\n          if (ring.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = ring.bbox.ll.y;\n          if (ring.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = ring.bbox.ur.x;\n          if (ring.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = ring.bbox.ur.y;\n          this.interiorRings.push(ring);\n        }\n        this.multiPoly = multiPoly;\n      }\n      getSweepEvents() {\n        const sweepEvents = this.exteriorRing.getSweepEvents();\n        for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n          const ringSweepEvents = this.interiorRings[i].getSweepEvents();\n          for (let j = 0, jMax = ringSweepEvents.length; j < jMax; j++) {\n            sweepEvents.push(ringSweepEvents[j]);\n          }\n        }\n        return sweepEvents;\n      }\n    }\n    class MultiPolyIn {\n      constructor(geom, isSubject) {\n        if (!Array.isArray(geom)) {\n          throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n        }\n        try {\n          // if the input looks like a polygon, convert it to a multipolygon\n          if (typeof geom[0][0][0] === \"number\") geom = [geom];\n        } catch (ex) {\n          // The input is either malformed or has empty arrays.\n          // In either case, it will be handled later on.\n        }\n        this.polys = [];\n        this.bbox = {\n          ll: {\n            x: Number.POSITIVE_INFINITY,\n            y: Number.POSITIVE_INFINITY\n          },\n          ur: {\n            x: Number.NEGATIVE_INFINITY,\n            y: Number.NEGATIVE_INFINITY\n          }\n        };\n        for (let i = 0, iMax = geom.length; i < iMax; i++) {\n          const poly = new PolyIn(geom[i], this);\n          if (poly.bbox.ll.x < this.bbox.ll.x) this.bbox.ll.x = poly.bbox.ll.x;\n          if (poly.bbox.ll.y < this.bbox.ll.y) this.bbox.ll.y = poly.bbox.ll.y;\n          if (poly.bbox.ur.x > this.bbox.ur.x) this.bbox.ur.x = poly.bbox.ur.x;\n          if (poly.bbox.ur.y > this.bbox.ur.y) this.bbox.ur.y = poly.bbox.ur.y;\n          this.polys.push(poly);\n        }\n        this.isSubject = isSubject;\n      }\n      getSweepEvents() {\n        const sweepEvents = [];\n        for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n          const polySweepEvents = this.polys[i].getSweepEvents();\n          for (let j = 0, jMax = polySweepEvents.length; j < jMax; j++) {\n            sweepEvents.push(polySweepEvents[j]);\n          }\n        }\n        return sweepEvents;\n      }\n    }\n\n    class RingOut {\n      /* Given the segments from the sweep line pass, compute & return a series\n       * of closed rings from all the segments marked to be part of the result */\n      static factory(allSegments) {\n        const ringsOut = [];\n        for (let i = 0, iMax = allSegments.length; i < iMax; i++) {\n          const segment = allSegments[i];\n          if (!segment.isInResult() || segment.ringOut) continue;\n          let prevEvent = null;\n          let event = segment.leftSE;\n          let nextEvent = segment.rightSE;\n          const events = [event];\n          const startingPoint = event.point;\n          const intersectionLEs = [];\n\n          /* Walk the chain of linked events to form a closed ring */\n          while (true) {\n            prevEvent = event;\n            event = nextEvent;\n            events.push(event);\n\n            /* Is the ring complete? */\n            if (event.point === startingPoint) break;\n            while (true) {\n              const availableLEs = event.getAvailableLinkedEvents();\n\n              /* Did we hit a dead end? This shouldn't happen.\n               * Indicates some earlier part of the algorithm malfunctioned. */\n              if (availableLEs.length === 0) {\n                const firstPt = events[0].point;\n                const lastPt = events[events.length - 1].point;\n                throw new Error(`Unable to complete output ring starting at [${firstPt.x},` + ` ${firstPt.y}]. Last matching segment found ends at` + ` [${lastPt.x}, ${lastPt.y}].`);\n              }\n\n              /* Only one way to go, so cotinue on the path */\n              if (availableLEs.length === 1) {\n                nextEvent = availableLEs[0].otherSE;\n                break;\n              }\n\n              /* We must have an intersection. Check for a completed loop */\n              let indexLE = null;\n              for (let j = 0, jMax = intersectionLEs.length; j < jMax; j++) {\n                if (intersectionLEs[j].point === event.point) {\n                  indexLE = j;\n                  break;\n                }\n              }\n              /* Found a completed loop. Cut that off and make a ring */\n              if (indexLE !== null) {\n                const intersectionLE = intersectionLEs.splice(indexLE)[0];\n                const ringEvents = events.splice(intersectionLE.index);\n                ringEvents.unshift(ringEvents[0].otherSE);\n                ringsOut.push(new RingOut(ringEvents.reverse()));\n                continue;\n              }\n              /* register the intersection */\n              intersectionLEs.push({\n                index: events.length,\n                point: event.point\n              });\n              /* Choose the left-most option to continue the walk */\n              const comparator = event.getLeftmostComparator(prevEvent);\n              nextEvent = availableLEs.sort(comparator)[0].otherSE;\n              break;\n            }\n          }\n          ringsOut.push(new RingOut(events));\n        }\n        return ringsOut;\n      }\n      constructor(events) {\n        this.events = events;\n        for (let i = 0, iMax = events.length; i < iMax; i++) {\n          events[i].segment.ringOut = this;\n        }\n        this.poly = null;\n      }\n      getGeom() {\n        // Remove superfluous points (ie extra points along a straight line),\n        let prevPt = this.events[0].point;\n        const points = [prevPt];\n        for (let i = 1, iMax = this.events.length - 1; i < iMax; i++) {\n          const pt = this.events[i].point;\n          const nextPt = this.events[i + 1].point;\n          if (compareVectorAngles(pt, prevPt, nextPt) === 0) continue;\n          points.push(pt);\n          prevPt = pt;\n        }\n\n        // ring was all (within rounding error of angle calc) colinear points\n        if (points.length === 1) return null;\n\n        // check if the starting point is necessary\n        const pt = points[0];\n        const nextPt = points[1];\n        if (compareVectorAngles(pt, prevPt, nextPt) === 0) points.shift();\n        points.push(points[0]);\n        const step = this.isExteriorRing() ? 1 : -1;\n        const iStart = this.isExteriorRing() ? 0 : points.length - 1;\n        const iEnd = this.isExteriorRing() ? points.length : -1;\n        const orderedPoints = [];\n        for (let i = iStart; i != iEnd; i += step) orderedPoints.push([points[i].x, points[i].y]);\n        return orderedPoints;\n      }\n      isExteriorRing() {\n        if (this._isExteriorRing === undefined) {\n          const enclosing = this.enclosingRing();\n          this._isExteriorRing = enclosing ? !enclosing.isExteriorRing() : true;\n        }\n        return this._isExteriorRing;\n      }\n      enclosingRing() {\n        if (this._enclosingRing === undefined) {\n          this._enclosingRing = this._calcEnclosingRing();\n        }\n        return this._enclosingRing;\n      }\n\n      /* Returns the ring that encloses this one, if any */\n      _calcEnclosingRing() {\n        // start with the ealier sweep line event so that the prevSeg\n        // chain doesn't lead us inside of a loop of ours\n        let leftMostEvt = this.events[0];\n        for (let i = 1, iMax = this.events.length; i < iMax; i++) {\n          const evt = this.events[i];\n          if (SweepEvent.compare(leftMostEvt, evt) > 0) leftMostEvt = evt;\n        }\n        let prevSeg = leftMostEvt.segment.prevInResult();\n        let prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n        while (true) {\n          // no segment found, thus no ring can enclose us\n          if (!prevSeg) return null;\n\n          // no segments below prev segment found, thus the ring of the prev\n          // segment must loop back around and enclose us\n          if (!prevPrevSeg) return prevSeg.ringOut;\n\n          // if the two segments are of different rings, the ring of the prev\n          // segment must either loop around us or the ring of the prev prev\n          // seg, which would make us and the ring of the prev peers\n          if (prevPrevSeg.ringOut !== prevSeg.ringOut) {\n            if (prevPrevSeg.ringOut.enclosingRing() !== prevSeg.ringOut) {\n              return prevSeg.ringOut;\n            } else return prevSeg.ringOut.enclosingRing();\n          }\n\n          // two segments are from the same ring, so this was a penisula\n          // of that ring. iterate downward, keep searching\n          prevSeg = prevPrevSeg.prevInResult();\n          prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n        }\n      }\n    }\n    class PolyOut {\n      constructor(exteriorRing) {\n        this.exteriorRing = exteriorRing;\n        exteriorRing.poly = this;\n        this.interiorRings = [];\n      }\n      addInterior(ring) {\n        this.interiorRings.push(ring);\n        ring.poly = this;\n      }\n      getGeom() {\n        const geom = [this.exteriorRing.getGeom()];\n        // exterior ring was all (within rounding error of angle calc) colinear points\n        if (geom[0] === null) return null;\n        for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n          const ringGeom = this.interiorRings[i].getGeom();\n          // interior ring was all (within rounding error of angle calc) colinear points\n          if (ringGeom === null) continue;\n          geom.push(ringGeom);\n        }\n        return geom;\n      }\n    }\n    class MultiPolyOut {\n      constructor(rings) {\n        this.rings = rings;\n        this.polys = this._composePolys(rings);\n      }\n      getGeom() {\n        const geom = [];\n        for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n          const polyGeom = this.polys[i].getGeom();\n          // exterior ring was all (within rounding error of angle calc) colinear points\n          if (polyGeom === null) continue;\n          geom.push(polyGeom);\n        }\n        return geom;\n      }\n      _composePolys(rings) {\n        const polys = [];\n        for (let i = 0, iMax = rings.length; i < iMax; i++) {\n          const ring = rings[i];\n          if (ring.poly) continue;\n          if (ring.isExteriorRing()) polys.push(new PolyOut(ring));else {\n            const enclosingRing = ring.enclosingRing();\n            if (!enclosingRing.poly) polys.push(new PolyOut(enclosingRing));\n            enclosingRing.poly.addInterior(ring);\n          }\n        }\n        return polys;\n      }\n    }\n\n    /**\n     * NOTE:  We must be careful not to change any segments while\n     *        they are in the SplayTree. AFAIK, there's no way to tell\n     *        the tree to rebalance itself - thus before splitting\n     *        a segment that's in the tree, we remove it from the tree,\n     *        do the split, then re-insert it. (Even though splitting a\n     *        segment *shouldn't* change its correct position in the\n     *        sweep line tree, the reality is because of rounding errors,\n     *        it sometimes does.)\n     */\n\n    class SweepLine {\n      constructor(queue) {\n        let comparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Segment.compare;\n        this.queue = queue;\n        this.tree = new Tree(comparator);\n        this.segments = [];\n      }\n      process(event) {\n        const segment = event.segment;\n        const newEvents = [];\n\n        // if we've already been consumed by another segment,\n        // clean up our body parts and get out\n        if (event.consumedBy) {\n          if (event.isLeft) this.queue.remove(event.otherSE);else this.tree.remove(segment);\n          return newEvents;\n        }\n        const node = event.isLeft ? this.tree.add(segment) : this.tree.find(segment);\n        if (!node) throw new Error(`Unable to find segment #${segment.id} ` + `[${segment.leftSE.point.x}, ${segment.leftSE.point.y}] -> ` + `[${segment.rightSE.point.x}, ${segment.rightSE.point.y}] ` + \"in SweepLine tree.\");\n        let prevNode = node;\n        let nextNode = node;\n        let prevSeg = undefined;\n        let nextSeg = undefined;\n\n        // skip consumed segments still in tree\n        while (prevSeg === undefined) {\n          prevNode = this.tree.prev(prevNode);\n          if (prevNode === null) prevSeg = null;else if (prevNode.key.consumedBy === undefined) prevSeg = prevNode.key;\n        }\n\n        // skip consumed segments still in tree\n        while (nextSeg === undefined) {\n          nextNode = this.tree.next(nextNode);\n          if (nextNode === null) nextSeg = null;else if (nextNode.key.consumedBy === undefined) nextSeg = nextNode.key;\n        }\n        if (event.isLeft) {\n          // Check for intersections against the previous segment in the sweep line\n          let prevMySplitter = null;\n          if (prevSeg) {\n            const prevInter = prevSeg.getIntersection(segment);\n            if (prevInter !== null) {\n              if (!segment.isAnEndpoint(prevInter)) prevMySplitter = prevInter;\n              if (!prevSeg.isAnEndpoint(prevInter)) {\n                const newEventsFromSplit = this._splitSafely(prevSeg, prevInter);\n                for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n                  newEvents.push(newEventsFromSplit[i]);\n                }\n              }\n            }\n          }\n\n          // Check for intersections against the next segment in the sweep line\n          let nextMySplitter = null;\n          if (nextSeg) {\n            const nextInter = nextSeg.getIntersection(segment);\n            if (nextInter !== null) {\n              if (!segment.isAnEndpoint(nextInter)) nextMySplitter = nextInter;\n              if (!nextSeg.isAnEndpoint(nextInter)) {\n                const newEventsFromSplit = this._splitSafely(nextSeg, nextInter);\n                for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n                  newEvents.push(newEventsFromSplit[i]);\n                }\n              }\n            }\n          }\n\n          // For simplicity, even if we find more than one intersection we only\n          // spilt on the 'earliest' (sweep-line style) of the intersections.\n          // The other intersection will be handled in a future process().\n          if (prevMySplitter !== null || nextMySplitter !== null) {\n            let mySplitter = null;\n            if (prevMySplitter === null) mySplitter = nextMySplitter;else if (nextMySplitter === null) mySplitter = prevMySplitter;else {\n              const cmpSplitters = SweepEvent.comparePoints(prevMySplitter, nextMySplitter);\n              mySplitter = cmpSplitters <= 0 ? prevMySplitter : nextMySplitter;\n            }\n\n            // Rounding errors can cause changes in ordering,\n            // so remove afected segments and right sweep events before splitting\n            this.queue.remove(segment.rightSE);\n            newEvents.push(segment.rightSE);\n            const newEventsFromSplit = segment.split(mySplitter);\n            for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n              newEvents.push(newEventsFromSplit[i]);\n            }\n          }\n          if (newEvents.length > 0) {\n            // We found some intersections, so re-do the current event to\n            // make sure sweep line ordering is totally consistent for later\n            // use with the segment 'prev' pointers\n            this.tree.remove(segment);\n            newEvents.push(event);\n          } else {\n            // done with left event\n            this.segments.push(segment);\n            segment.prev = prevSeg;\n          }\n        } else {\n          // event.isRight\n\n          // since we're about to be removed from the sweep line, check for\n          // intersections between our previous and next segments\n          if (prevSeg && nextSeg) {\n            const inter = prevSeg.getIntersection(nextSeg);\n            if (inter !== null) {\n              if (!prevSeg.isAnEndpoint(inter)) {\n                const newEventsFromSplit = this._splitSafely(prevSeg, inter);\n                for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n                  newEvents.push(newEventsFromSplit[i]);\n                }\n              }\n              if (!nextSeg.isAnEndpoint(inter)) {\n                const newEventsFromSplit = this._splitSafely(nextSeg, inter);\n                for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n                  newEvents.push(newEventsFromSplit[i]);\n                }\n              }\n            }\n          }\n          this.tree.remove(segment);\n        }\n        return newEvents;\n      }\n\n      /* Safely split a segment that is currently in the datastructures\n       * IE - a segment other than the one that is currently being processed. */\n      _splitSafely(seg, pt) {\n        // Rounding errors can cause changes in ordering,\n        // so remove afected segments and right sweep events before splitting\n        // removeNode() doesn't work, so have re-find the seg\n        // https://github.com/w8r/splay-tree/pull/5\n        this.tree.remove(seg);\n        const rightSE = seg.rightSE;\n        this.queue.remove(rightSE);\n        const newEvents = seg.split(pt);\n        newEvents.push(rightSE);\n        // splitting can trigger consumption\n        if (seg.consumedBy === undefined) this.tree.add(seg);\n        return newEvents;\n      }\n    }\n\n    // Limits on iterative processes to prevent infinite loops - usually caused by floating-point math round-off errors.\n    const POLYGON_CLIPPING_MAX_QUEUE_SIZE = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE || 1000000;\n    const POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS = typeof process !== \"undefined\" && process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS || 1000000;\n    class Operation {\n      run(type, geom, moreGeoms) {\n        operation.type = type;\n        rounder.reset();\n\n        /* Convert inputs to MultiPoly objects */\n        const multipolys = [new MultiPolyIn(geom, true)];\n        for (let i = 0, iMax = moreGeoms.length; i < iMax; i++) {\n          multipolys.push(new MultiPolyIn(moreGeoms[i], false));\n        }\n        operation.numMultiPolys = multipolys.length;\n\n        /* BBox optimization for difference operation\n         * If the bbox of a multipolygon that's part of the clipping doesn't\n         * intersect the bbox of the subject at all, we can just drop that\n         * multiploygon. */\n        if (operation.type === \"difference\") {\n          // in place removal\n          const subject = multipolys[0];\n          let i = 1;\n          while (i < multipolys.length) {\n            if (getBboxOverlap(multipolys[i].bbox, subject.bbox) !== null) i++;else multipolys.splice(i, 1);\n          }\n        }\n\n        /* BBox optimization for intersection operation\n         * If we can find any pair of multipolygons whose bbox does not overlap,\n         * then the result will be empty. */\n        if (operation.type === \"intersection\") {\n          // TODO: this is O(n^2) in number of polygons. By sorting the bboxes,\n          //       it could be optimized to O(n * ln(n))\n          for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n            const mpA = multipolys[i];\n            for (let j = i + 1, jMax = multipolys.length; j < jMax; j++) {\n              if (getBboxOverlap(mpA.bbox, multipolys[j].bbox) === null) return [];\n            }\n          }\n        }\n\n        /* Put segment endpoints in a priority queue */\n        const queue = new Tree(SweepEvent.compare);\n        for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n          const sweepEvents = multipolys[i].getSweepEvents();\n          for (let j = 0, jMax = sweepEvents.length; j < jMax; j++) {\n            queue.insert(sweepEvents[j]);\n            if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n              // prevents an infinite loop, an otherwise common manifestation of bugs\n              throw new Error(\"Infinite loop when putting segment endpoints in a priority queue \" + \"(queue size too big).\");\n            }\n          }\n        }\n\n        /* Pass the sweep line over those endpoints */\n        const sweepLine = new SweepLine(queue);\n        let prevQueueSize = queue.size;\n        let node = queue.pop();\n        while (node) {\n          const evt = node.key;\n          if (queue.size === prevQueueSize) {\n            // prevents an infinite loop, an otherwise common manifestation of bugs\n            const seg = evt.segment;\n            throw new Error(`Unable to pop() ${evt.isLeft ? \"left\" : \"right\"} SweepEvent ` + `[${evt.point.x}, ${evt.point.y}] from segment #${seg.id} ` + `[${seg.leftSE.point.x}, ${seg.leftSE.point.y}] -> ` + `[${seg.rightSE.point.x}, ${seg.rightSE.point.y}] from queue.`);\n          }\n          if (queue.size > POLYGON_CLIPPING_MAX_QUEUE_SIZE) {\n            // prevents an infinite loop, an otherwise common manifestation of bugs\n            throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(queue size too big).\");\n          }\n          if (sweepLine.segments.length > POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS) {\n            // prevents an infinite loop, an otherwise common manifestation of bugs\n            throw new Error(\"Infinite loop when passing sweep line over endpoints \" + \"(too many sweep line segments).\");\n          }\n          const newEvents = sweepLine.process(evt);\n          for (let i = 0, iMax = newEvents.length; i < iMax; i++) {\n            const evt = newEvents[i];\n            if (evt.consumedBy === undefined) queue.insert(evt);\n          }\n          prevQueueSize = queue.size;\n          node = queue.pop();\n        }\n\n        // free some memory we don't need anymore\n        rounder.reset();\n\n        /* Collect and compile segments we're keeping into a multipolygon */\n        const ringsOut = RingOut.factory(sweepLine.segments);\n        const result = new MultiPolyOut(ringsOut);\n        return result.getGeom();\n      }\n    }\n\n    // singleton available by import\n    const operation = new Operation();\n\n    const union = function (geom) {\n      for (var _len = arguments.length, moreGeoms = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        moreGeoms[_key - 1] = arguments[_key];\n      }\n      return operation.run(\"union\", geom, moreGeoms);\n    };\n    const intersection = function (geom) {\n      for (var _len2 = arguments.length, moreGeoms = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        moreGeoms[_key2 - 1] = arguments[_key2];\n      }\n      return operation.run(\"intersection\", geom, moreGeoms);\n    };\n    const xor = function (geom) {\n      for (var _len3 = arguments.length, moreGeoms = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n        moreGeoms[_key3 - 1] = arguments[_key3];\n      }\n      return operation.run(\"xor\", geom, moreGeoms);\n    };\n    const difference = function (subjectGeom) {\n      for (var _len4 = arguments.length, clippingGeoms = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n        clippingGeoms[_key4 - 1] = arguments[_key4];\n      }\n      return operation.run(\"difference\", subjectGeom, clippingGeoms);\n    };\n    var index = {\n      union: union,\n      intersection: intersection,\n      xor: xor,\n      difference: difference\n    };\n\n    return index;\n\n}));\n","import React, { useEffect, useRef, useState } from 'react'\nimport django from 'django'\n\nconst closeText = django.gettext('Close')\n\nexport default function Modal ({ title, message, buttonText, onConfirm, onClose, children }) {\n  const dialogRef = useRef(null)\n  const [isOpen, setIsOpen] = useState(false)\n\n  const closeModal = () => {\n    if (dialogRef.current) {\n      dialogRef.current.close()\n      setIsOpen(false)\n      onClose()\n    }\n  }\n\n  useEffect(() => {\n    if (dialogRef.current) {\n      dialogRef.current.showModal()\n      setIsOpen(true)\n    }\n  }, [])\n\n  // Focus trap\n  useEffect(() => {\n    const dialog = dialogRef.current\n    if (!dialog || !isOpen) return\n\n    const handleKeyDown = (e) => {\n      if (e.key === 'Escape') {\n        closeModal()\n      }\n      if (e.key === 'Tab') {\n        const focusableElements = dialog.querySelectorAll(\n          'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n        )\n        const firstElement = focusableElements[0]\n        const lastElement = focusableElements[focusableElements.length - 1]\n\n        if (e.shiftKey && document.activeElement === firstElement) {\n          e.preventDefault()\n          lastElement.focus()\n        } else if (!e.shiftKey && document.activeElement === lastElement) {\n          e.preventDefault()\n          firstElement.focus()\n        }\n      }\n    }\n\n    dialog.addEventListener('keydown', handleKeyDown)\n\n    // Focus first button when modal opens\n    const firstButton = dialog.querySelector('button')\n    if (firstButton) {\n      setTimeout(() => firstButton.focus(), 100)\n    }\n\n    return () => {\n      dialog.removeEventListener('keydown', handleKeyDown)\n    }\n  }, [isOpen])\n\n  return (\n    <dialog\n      className=\"modal\"\n      ref={dialogRef}\n      aria-modal=\"true\"\n      aria-labelledby=\"modal__title\"\n      aria-describedby=\"modal__description\"\n    >\n      <button\n        type=\"button\"\n        className=\"modal__close\"\n        aria-label={closeText}\n        onClick={closeModal}\n      >\n        <span className=\"fa fa-times\" aria-hidden=\"true\" />\n      </button>\n      <h2 id=\"modal__title\" className=\"modal__title title-3\">{title}</h2>\n      <p id=\"modal__description\" className=\"modal__text\">{message}</p>\n      {children && <div className=\"modal__content\">{children}</div>}\n      <div className=\"modal__buttons\">\n        <button className=\"link\" onClick={closeModal}>\n          {closeText}\n        </button>\n        <button className=\"button modal__confirm-button\" onClick={onConfirm}>\n          {buttonText}\n        </button>\n      </div>\n    </dialog>\n  )\n}\n","import django from 'django'\nimport React from 'react'\n\nconst planStr = django.gettext('Plan')\n\nconst ProjectTilePills = ({ project, topicChoices }) => {\n  const topicList = project.topics.map((val) => {\n    return topicChoices.find(choice => choice.code === val)?.name\n  })\n\n  if (project.type === 'plan' && topicList.length > 1) {\n    const additionalPills = topicList.length - 1\n    topicList.splice(1, additionalPills, '+1')\n  }\n\n  if (project.topics && project.topics.length > 0) {\n    return (\n      <ul className=\"pill__list pill__list--inline\">\n        {project.type === 'plan' && <li className=\"pill pill--label\">{planStr}</li>}\n        {topicList.map((topic, index) =>\n          <li key={topic + index} className=\"pill pill--topic\">{topic}</li>\n        )}\n      </ul>\n    )\n  }\n}\n\nexport default ProjectTilePills\n","// ray-casting algorithm based on\n// https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n\nmodule.exports = function pointInPolygonNested (point, vs, start, end) {\n    var x = point[0], y = point[1];\n    var inside = false;\n    if (start === undefined) start = 0;\n    if (end === undefined) end = vs.length;\n    var len = end - start;\n    for (var i = 0, j = len - 1; i < len; j = i++) {\n        var xi = vs[i+start][0], yi = vs[i+start][1];\n        var xj = vs[j+start][0], yj = vs[j+start][1];\n        var intersect = ((yi > y) !== (yj > y))\n            && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n        if (intersect) inside = !inside;\n    }\n    return inside;\n};\n","import React from 'react'\nimport { classNames } from 'adhocracy4'\nimport useCombobox from 'adhocracy4/adhocracy4/static/forms/useCombobox'\n\nexport const GroupMultiSelect = ({\n  label,\n  className,\n  liClassName,\n  comboboxClassName,\n  groups,\n  onChange,\n  placeholder,\n  values,\n  defaultValue = [],\n  ...rest\n}) => {\n  const { opened, labelId, activeItems, listboxAttrs, comboboxAttrs, getChoicesAttr } = useCombobox({\n    choices: groups.map(({ choices }) => choices.map((choice) => choice)).flat(),\n    values,\n    defaultValue,\n    onChange,\n    isMultiple: true\n  })\n  const classes = classNames(\n    'form-control input__element a4-combo-box__container',\n    opened && 'a4-combo-box__container--opened',\n    className\n  )\n  const comboboxClasses = classNames(\n    'form-control a4-combo-box__combobox',\n    comboboxClassName\n  )\n\n  return (\n    <div className=\"form-group a4-combo-box\">\n      <p id={labelId} className=\"label\">\n        {label}\n      </p>\n      <div className={comboboxClasses} {...comboboxAttrs}>\n        {activeItems.length ? activeItems.map(item => item.name).join(', ') : placeholder}\n      </div>\n      <ul className={classes} role=\"listbox\" {...listboxAttrs} {...rest}>\n        {groups.map(({ title, info, choices }, groupIndex) => {\n          let optionIndex = 0\n          for (let i = 0; i < groupIndex; i++) {\n            optionIndex += groups[i].choices.length\n          }\n\n          return (\n            <li key={title} role=\"group\" className=\"a4-combo-box__group-item\" aria-labelledby={'group-' + title}>\n              <span id={'group-' + title} className=\"a4-combo-box__title\">\n                {title}\n              </span>\n              {info && <span className=\"a4-combo-box__info\">{info}</span>}\n              {choices.length > 0 && (\n                <ul className=\"a4-combo-box__group-dropdown\">\n                  {choices.map((choice, idx) => {\n                    const currentIndex = optionIndex + idx\n                    const choiceAttrs = getChoicesAttr(choice, currentIndex)\n                    const liClasses = classNames(\n                      liClassName,\n                      'a4-combo-box__option',\n                      choiceAttrs.active && 'a4-combo-box__option--active',\n                      choiceAttrs.focused && 'a4-combo-box__option--focus'\n                    )\n\n                    return (\n                      <li key={choice.value} className={liClasses} {...choiceAttrs}>\n                        <span>{choice.name}</span>\n                        {choiceAttrs.active && (\n                          <i className=\"bicon bicon-check\" aria-hidden=\"true\" />\n                        )}\n                      </li>\n                    )\n                  })}\n                </ul>\n              )}\n            </li>\n          )\n        })}\n      </ul>\n    </div>\n  )\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar boolean_point_in_polygon_1 = __importDefault(require(\"@turf/boolean-point-in-polygon\"));\nvar line_intersect_1 = __importDefault(require(\"@turf/line-intersect\"));\nvar meta_1 = require(\"@turf/meta\");\nvar polygon_to_line_1 = __importDefault(require(\"@turf/polygon-to-line\"));\n/**\n * Boolean-disjoint returns (TRUE) if the intersection of the two geometries is an empty set.\n *\n * @name booleanDisjoint\n * @param {Geometry|Feature<any>} feature1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<any>} feature2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false\n * @example\n * var point = turf.point([2, 2]);\n * var line = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);\n *\n * turf.booleanDisjoint(line, point);\n * //=true\n */\nfunction booleanDisjoint(feature1, feature2) {\n    var bool = true;\n    meta_1.flattenEach(feature1, function (flatten1) {\n        meta_1.flattenEach(feature2, function (flatten2) {\n            if (bool === false) {\n                return false;\n            }\n            bool = disjoint(flatten1.geometry, flatten2.geometry);\n        });\n    });\n    return bool;\n}\n/**\n * Disjoint operation for simple Geometries (Point/LineString/Polygon)\n *\n * @private\n * @param {Geometry<any>} geom1 GeoJSON Geometry\n * @param {Geometry<any>} geom2 GeoJSON Geometry\n * @returns {boolean} true/false\n */\nfunction disjoint(geom1, geom2) {\n    switch (geom1.type) {\n        case \"Point\":\n            switch (geom2.type) {\n                case \"Point\":\n                    return !compareCoords(geom1.coordinates, geom2.coordinates);\n                case \"LineString\":\n                    return !isPointOnLine(geom2, geom1);\n                case \"Polygon\":\n                    return !boolean_point_in_polygon_1.default(geom1, geom2);\n            }\n            /* istanbul ignore next */\n            break;\n        case \"LineString\":\n            switch (geom2.type) {\n                case \"Point\":\n                    return !isPointOnLine(geom1, geom2);\n                case \"LineString\":\n                    return !isLineOnLine(geom1, geom2);\n                case \"Polygon\":\n                    return !isLineInPoly(geom2, geom1);\n            }\n            /* istanbul ignore next */\n            break;\n        case \"Polygon\":\n            switch (geom2.type) {\n                case \"Point\":\n                    return !boolean_point_in_polygon_1.default(geom2, geom1);\n                case \"LineString\":\n                    return !isLineInPoly(geom1, geom2);\n                case \"Polygon\":\n                    return !isPolyInPoly(geom2, geom1);\n            }\n    }\n    return false;\n}\n// http://stackoverflow.com/a/11908158/1979085\nfunction isPointOnLine(lineString, pt) {\n    for (var i = 0; i < lineString.coordinates.length - 1; i++) {\n        if (isPointOnLineSegment(lineString.coordinates[i], lineString.coordinates[i + 1], pt.coordinates)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction isLineOnLine(lineString1, lineString2) {\n    var doLinesIntersect = line_intersect_1.default(lineString1, lineString2);\n    if (doLinesIntersect.features.length > 0) {\n        return true;\n    }\n    return false;\n}\nfunction isLineInPoly(polygon, lineString) {\n    for (var _i = 0, _a = lineString.coordinates; _i < _a.length; _i++) {\n        var coord = _a[_i];\n        if (boolean_point_in_polygon_1.default(coord, polygon)) {\n            return true;\n        }\n    }\n    var doLinesIntersect = line_intersect_1.default(lineString, polygon_to_line_1.default(polygon));\n    if (doLinesIntersect.features.length > 0) {\n        return true;\n    }\n    return false;\n}\n/**\n * Is Polygon (geom1) in Polygon (geom2)\n * Only takes into account outer rings\n * See http://stackoverflow.com/a/4833823/1979085\n *\n * @private\n * @param {Geometry|Feature<Polygon>} feature1 Polygon1\n * @param {Geometry|Feature<Polygon>} feature2 Polygon2\n * @returns {boolean} true/false\n */\nfunction isPolyInPoly(feature1, feature2) {\n    for (var _i = 0, _a = feature1.coordinates[0]; _i < _a.length; _i++) {\n        var coord1 = _a[_i];\n        if (boolean_point_in_polygon_1.default(coord1, feature2)) {\n            return true;\n        }\n    }\n    for (var _b = 0, _c = feature2.coordinates[0]; _b < _c.length; _b++) {\n        var coord2 = _c[_b];\n        if (boolean_point_in_polygon_1.default(coord2, feature1)) {\n            return true;\n        }\n    }\n    var doLinesIntersect = line_intersect_1.default(polygon_to_line_1.default(feature1), polygon_to_line_1.default(feature2));\n    if (doLinesIntersect.features.length > 0) {\n        return true;\n    }\n    return false;\n}\nfunction isPointOnLineSegment(lineSegmentStart, lineSegmentEnd, pt) {\n    var dxc = pt[0] - lineSegmentStart[0];\n    var dyc = pt[1] - lineSegmentStart[1];\n    var dxl = lineSegmentEnd[0] - lineSegmentStart[0];\n    var dyl = lineSegmentEnd[1] - lineSegmentStart[1];\n    var cross = dxc * dyl - dyc * dxl;\n    if (cross !== 0) {\n        return false;\n    }\n    if (Math.abs(dxl) >= Math.abs(dyl)) {\n        if (dxl > 0) {\n            return lineSegmentStart[0] <= pt[0] && pt[0] <= lineSegmentEnd[0];\n        }\n        else {\n            return lineSegmentEnd[0] <= pt[0] && pt[0] <= lineSegmentStart[0];\n        }\n    }\n    else if (dyl > 0) {\n        return lineSegmentStart[1] <= pt[1] && pt[1] <= lineSegmentEnd[1];\n    }\n    else {\n        return lineSegmentEnd[1] <= pt[1] && pt[1] <= lineSegmentStart[1];\n    }\n}\n/**\n * compareCoords\n *\n * @private\n * @param {Position} pair1 point [x,y]\n * @param {Position} pair2 point [x,y]\n * @returns {boolean} true/false if coord pairs match\n */\nfunction compareCoords(pair1, pair2) {\n    return pair1[0] === pair2[0] && pair1[1] === pair2[1];\n}\nexports.default = booleanDisjoint;\n","\"use strict\";\n\n/*jshint esversion: 6 */\n\nvar Distance = require(\"./distance.js\"),\n    ClusterInit = require(\"./kinit.js\"),\n    eudist = Distance.eudist,\n    mandist = Distance.mandist,\n    dist = Distance.dist,\n    kmrand = ClusterInit.kmrand,\n    kmpp = ClusterInit.kmpp;\n\nvar MAX = 10000;\n\n/**\n * Inits an array with values\n */\nfunction init(len, val, v) {\n\tv = v || [];\n\tfor (var i = 0; i < len; i++) {\n\t\tv[i] = val;\n\t}return v;\n}\n\nfunction skmeans(data, k, initial, maxit) {\n\tvar ks = [],\n\t    old = [],\n\t    idxs = [],\n\t    dist = [];\n\tvar conv = false,\n\t    it = maxit || MAX;\n\tvar len = data.length,\n\t    vlen = data[0].length,\n\t    multi = vlen > 0;\n\tvar count = [];\n\n\tif (!initial) {\n\t\tvar _idxs = {};\n\t\twhile (ks.length < k) {\n\t\t\tvar idx = Math.floor(Math.random() * len);\n\t\t\tif (!_idxs[idx]) {\n\t\t\t\t_idxs[idx] = true;\n\t\t\t\tks.push(data[idx]);\n\t\t\t}\n\t\t}\n\t} else if (initial == \"kmrand\") {\n\t\tks = kmrand(data, k);\n\t} else if (initial == \"kmpp\") {\n\t\tks = kmpp(data, k);\n\t} else {\n\t\tks = initial;\n\t}\n\n\tdo {\n\t\t// Reset k count\n\t\tinit(k, 0, count);\n\n\t\t// For each value in data, find the nearest centroid\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar min = Infinity,\n\t\t\t    _idx = 0;\n\t\t\tfor (var j = 0; j < k; j++) {\n\t\t\t\t// Multidimensional or unidimensional\n\t\t\t\tvar dist = multi ? eudist(data[i], ks[j]) : Math.abs(data[i] - ks[j]);\n\t\t\t\tif (dist <= min) {\n\t\t\t\t\tmin = dist;\n\t\t\t\t\t_idx = j;\n\t\t\t\t}\n\t\t\t}\n\t\t\tidxs[i] = _idx; // Index of the selected centroid for that value\n\t\t\tcount[_idx]++; // Number of values for this centroid\n\t\t}\n\n\t\t// Recalculate centroids\n\t\tvar sum = [],\n\t\t    old = [],\n\t\t    dif = 0;\n\t\tfor (var _j = 0; _j < k; _j++) {\n\t\t\t// Multidimensional or unidimensional\n\t\t\tsum[_j] = multi ? init(vlen, 0, sum[_j]) : 0;\n\t\t\told[_j] = ks[_j];\n\t\t}\n\n\t\t// If multidimensional\n\t\tif (multi) {\n\t\t\tfor (var _j2 = 0; _j2 < k; _j2++) {\n\t\t\t\tks[_j2] = [];\n\t\t\t} // Sum values and count for each centroid\n\t\t\tfor (var _i = 0; _i < len; _i++) {\n\t\t\t\tvar _idx2 = idxs[_i],\n\t\t\t\t    // Centroid for that item\n\t\t\t\tvsum = sum[_idx2],\n\t\t\t\t    // Sum values for this centroid\n\t\t\t\tvect = data[_i]; // Current vector\n\n\t\t\t\t// Accumulate value on the centroid for current vector\n\t\t\t\tfor (var h = 0; h < vlen; h++) {\n\t\t\t\t\tvsum[h] += vect[h];\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Calculate the average for each centroid\n\t\t\tconv = true;\n\t\t\tfor (var _j3 = 0; _j3 < k; _j3++) {\n\t\t\t\tvar ksj = ks[_j3],\n\t\t\t\t    // Current centroid\n\t\t\t\tsumj = sum[_j3],\n\t\t\t\t    // Accumulated centroid values\n\t\t\t\toldj = old[_j3],\n\t\t\t\t    // Old centroid value\n\t\t\t\tcj = count[_j3]; // Number of elements for this centroid\n\n\t\t\t\t// New average\n\t\t\t\tfor (var _h = 0; _h < vlen; _h++) {\n\t\t\t\t\tksj[_h] = sumj[_h] / cj || 0; // New centroid\n\t\t\t\t}\n\n\t\t\t\t// Find if centroids have moved\n\t\t\t\tif (conv) {\n\t\t\t\t\tfor (var _h2 = 0; _h2 < vlen; _h2++) {\n\t\t\t\t\t\tif (oldj[_h2] != ksj[_h2]) {\n\t\t\t\t\t\t\tconv = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// If unidimensional\n\t\telse {\n\t\t\t\t// Sum values and count for each centroid\n\t\t\t\tfor (var _i2 = 0; _i2 < len; _i2++) {\n\t\t\t\t\tvar _idx3 = idxs[_i2];\n\t\t\t\t\tsum[_idx3] += data[_i2];\n\t\t\t\t}\n\t\t\t\t// Calculate the average for each centroid\n\t\t\t\tfor (var _j4 = 0; _j4 < k; _j4++) {\n\t\t\t\t\tks[_j4] = sum[_j4] / count[_j4] || 0; // New centroid\n\t\t\t\t}\n\t\t\t\t// Find if centroids have moved\n\t\t\t\tconv = true;\n\t\t\t\tfor (var _j5 = 0; _j5 < k; _j5++) {\n\t\t\t\t\tif (old[_j5] != ks[_j5]) {\n\t\t\t\t\t\tconv = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\tconv = conv || --it <= 0;\n\t} while (!conv);\n\n\treturn {\n\t\tit: MAX - it,\n\t\tk: k,\n\t\tidxs: idxs,\n\t\tcentroids: ks\n\t};\n}\n\nmodule.exports = skmeans;\n//# sourceMappingURL=main.js.map\n","'use strict';\n\nvar callBound = require('call-bound');\n\nvar getDay = callBound('Date.prototype.getDay');\n/** @type {import('.')} */\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\n/** @type {(value: unknown) => string} */\nvar toStr = callBound('Object.prototype.toString');\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr(value) === dateClass;\n};\n","'use strict';\n\nvar distance = require('@turf/distance');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar distance__default = /*#__PURE__*/_interopDefaultLegacy(distance);\n\n/**\n * Takes a bounding box and calculates the minimum square bounding box that\n * would contain the input.\n *\n * @name square\n * @param {BBox} bbox extent in [west, south, east, north] order\n * @returns {BBox} a square surrounding `bbox`\n * @example\n * var bbox = [-20, -20, -15, 0];\n * var squared = turf.square(bbox);\n *\n * //addToMap\n * var addToMap = [turf.bboxPolygon(bbox), turf.bboxPolygon(squared)]\n */\nfunction square(bbox) {\n  var west = bbox[0];\n  var south = bbox[1];\n  var east = bbox[2];\n  var north = bbox[3];\n\n  var horizontalDistance = distance__default['default'](bbox.slice(0, 2), [east, south]);\n  var verticalDistance = distance__default['default'](bbox.slice(0, 2), [west, north]);\n  if (horizontalDistance >= verticalDistance) {\n    var verticalMidpoint = (south + north) / 2;\n    return [\n      west,\n      verticalMidpoint - (east - west) / 2,\n      east,\n      verticalMidpoint + (east - west) / 2,\n    ];\n  } else {\n    var horizontalMidpoint = (west + east) / 2;\n    return [\n      horizontalMidpoint - (north - south) / 2,\n      south,\n      horizontalMidpoint + (north - south) / 2,\n      north,\n    ];\n  }\n}\n\nmodule.exports = square;\nmodule.exports.default = square;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","import React from 'react'\n\nexport const Pill = (props) => {\n  const {\n    pillClass,\n    children\n  } = props\n\n  return (\n    <li className={pillClass}>\n      {children}\n    </li>\n  )\n}\n","const defaultState = {\n  search: '',\n  districts: [],\n  // organisation is a single select but its simpler to just work with an\n  // array because of the typeahead component\n  organisation: [],\n  participations: [],\n  topics: [],\n  plansOnly: false,\n  kiezradars: []\n}\n\nexport const getDefaultState = (searchParams, {\n  districts,\n  organisations,\n  participationChoices,\n  topicChoices,\n  kiezradars\n}) => {\n  let mergeData = {}\n\n  if (searchParams) {\n    mergeData = {\n      search: searchParams.get('search') ?? '',\n      districts: districts\n        .filter((district) => searchParams.getAll('districts').includes(district.name))\n        .map((district) => district.name),\n      organisation: organisations\n        .filter((organisation) => searchParams.getAll('organisation').includes(organisation.name))\n        .map((organisation) => organisation.name),\n      participations: participationChoices\n        .filter((participation) => searchParams.getAll('participations').includes(participation.value.toString()))\n        .map((participation) => participation.value),\n      topics: topicChoices\n        .filter((topic) => searchParams.getAll('topics').includes(topic.code))\n        .map((topic) => topic.code),\n      plansOnly: searchParams.get('plansOnly') === 'true',\n      kiezradars: kiezradars\n        .filter(kiezradar => searchParams.getAll('kiezradars').includes(kiezradar.name))\n        .map((kiezradar) => kiezradar.name)\n    }\n  }\n\n  return {\n    ...defaultState,\n    ...mergeData\n  }\n}\n\nconst defaultProjectState = ['active', 'future']\nexport const validProjectStates = [...defaultProjectState, 'past']\n\nexport const getDefaultProjectState = (searchParams) => {\n  const projectState = searchParams.getAll('projectState')\n  const filteredStates = projectState.filter(state => validProjectStates.includes(state))\n\n  return filteredStates.length ? filteredStates : defaultProjectState\n}\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n    dim = dim || 2;\n\n    var hasHoles = holeIndices && holeIndices.length,\n        outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n        outerNode = linkedList(data, 0, outerLen, dim, true),\n        triangles = [];\n\n    if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n    var minX, minY, maxX, maxY, x, y, invSize;\n\n    if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n    // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n    if (data.length > 80 * dim) {\n        minX = maxX = data[0];\n        minY = maxY = data[1];\n\n        for (var i = dim; i < outerLen; i += dim) {\n            x = data[i];\n            y = data[i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n        }\n\n        // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n        invSize = Math.max(maxX - minX, maxY - minY);\n        invSize = invSize !== 0 ? 32767 / invSize : 0;\n    }\n\n    earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n    return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n    var i, last;\n\n    if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n        for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n    } else {\n        for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n    }\n\n    if (last && equals(last, last.next)) {\n        removeNode(last);\n        last = last.next;\n    }\n\n    return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n    if (!start) return start;\n    if (!end) end = start;\n\n    var p = start,\n        again;\n    do {\n        again = false;\n\n        if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n            removeNode(p);\n            p = end = p.prev;\n            if (p === p.next) break;\n            again = true;\n\n        } else {\n            p = p.next;\n        }\n    } while (again || p !== end);\n\n    return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n    if (!ear) return;\n\n    // interlink polygon nodes in z-order\n    if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n    var stop = ear,\n        prev, next;\n\n    // iterate through ears, slicing them one by one\n    while (ear.prev !== ear.next) {\n        prev = ear.prev;\n        next = ear.next;\n\n        if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n            // cut off the triangle\n            triangles.push(prev.i / dim | 0);\n            triangles.push(ear.i / dim | 0);\n            triangles.push(next.i / dim | 0);\n\n            removeNode(ear);\n\n            // skipping the next vertex leads to less sliver triangles\n            ear = next.next;\n            stop = next.next;\n\n            continue;\n        }\n\n        ear = next;\n\n        // if we looped through the whole remaining polygon and can't find any more ears\n        if (ear === stop) {\n            // try filtering points and slicing again\n            if (!pass) {\n                earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n            // if this didn't work, try curing all small self-intersections locally\n            } else if (pass === 1) {\n                ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n                earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n            // as a last resort, try splitting the remaining polygon into two\n            } else if (pass === 2) {\n                splitEarcut(ear, triangles, dim, minX, minY, invSize);\n            }\n\n            break;\n        }\n    }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    // now make sure we don't have other points inside the potential ear\n    var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n    // triangle bbox; min & max are calculated like this for speed\n    var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n        y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n        x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n        y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n    var p = c.next;\n    while (p !== a) {\n        if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.next;\n    }\n\n    return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n    // triangle bbox; min & max are calculated like this for speed\n    var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n        y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n        x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n        y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n    // z-order range for the current triangle bbox;\n    var minZ = zOrder(x0, y0, minX, minY, invSize),\n        maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n    var p = ear.prevZ,\n        n = ear.nextZ;\n\n    // look for points inside the triangle in both directions\n    while (p && p.z >= minZ && n && n.z <= maxZ) {\n        if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n\n        if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    // look for remaining points in decreasing z-order\n    while (p && p.z >= minZ) {\n        if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n    }\n\n    // look for remaining points in increasing z-order\n    while (n && n.z <= maxZ) {\n        if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n            pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n    var p = start;\n    do {\n        var a = p.prev,\n            b = p.next.next;\n\n        if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n            triangles.push(a.i / dim | 0);\n            triangles.push(p.i / dim | 0);\n            triangles.push(b.i / dim | 0);\n\n            // remove two nodes involved\n            removeNode(p);\n            removeNode(p.next);\n\n            p = start = b;\n        }\n        p = p.next;\n    } while (p !== start);\n\n    return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n    // look for a valid diagonal that divides the polygon into two\n    var a = start;\n    do {\n        var b = a.next.next;\n        while (b !== a.prev) {\n            if (a.i !== b.i && isValidDiagonal(a, b)) {\n                // split the polygon in two by the diagonal\n                var c = splitPolygon(a, b);\n\n                // filter colinear points around the cuts\n                a = filterPoints(a, a.next);\n                c = filterPoints(c, c.next);\n\n                // run earcut on each half\n                earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n                earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n                return;\n            }\n            b = b.next;\n        }\n        a = a.next;\n    } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n    var queue = [],\n        i, len, start, end, list;\n\n    for (i = 0, len = holeIndices.length; i < len; i++) {\n        start = holeIndices[i] * dim;\n        end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n        list = linkedList(data, start, end, dim, false);\n        if (list === list.next) list.steiner = true;\n        queue.push(getLeftmost(list));\n    }\n\n    queue.sort(compareX);\n\n    // process holes from left to right\n    for (i = 0; i < queue.length; i++) {\n        outerNode = eliminateHole(queue[i], outerNode);\n    }\n\n    return outerNode;\n}\n\nfunction compareX(a, b) {\n    return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n    var bridge = findHoleBridge(hole, outerNode);\n    if (!bridge) {\n        return outerNode;\n    }\n\n    var bridgeReverse = splitPolygon(bridge, hole);\n\n    // filter collinear points around the cuts\n    filterPoints(bridgeReverse, bridgeReverse.next);\n    return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n    var p = outerNode,\n        hx = hole.x,\n        hy = hole.y,\n        qx = -Infinity,\n        m;\n\n    // find a segment intersected by a ray from the hole's leftmost point to the left;\n    // segment's endpoint with lesser x will be potential connection point\n    do {\n        if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n            var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n            if (x <= hx && x > qx) {\n                qx = x;\n                m = p.x < p.next.x ? p : p.next;\n                if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n            }\n        }\n        p = p.next;\n    } while (p !== outerNode);\n\n    if (!m) return null;\n\n    // look for points inside the triangle of hole point, segment intersection and endpoint;\n    // if there are no points found, we have a valid connection;\n    // otherwise choose the point of the minimum angle with the ray as connection point\n\n    var stop = m,\n        mx = m.x,\n        my = m.y,\n        tanMin = Infinity,\n        tan;\n\n    p = m;\n\n    do {\n        if (hx >= p.x && p.x >= mx && hx !== p.x &&\n                pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n            tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n            if (locallyInside(p, hole) &&\n                (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n                m = p;\n                tanMin = tan;\n            }\n        }\n\n        p = p.next;\n    } while (p !== stop);\n\n    return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n    return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n    var p = start;\n    do {\n        if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n        p.prevZ = p.prev;\n        p.nextZ = p.next;\n        p = p.next;\n    } while (p !== start);\n\n    p.prevZ.nextZ = null;\n    p.prevZ = null;\n\n    sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n    var i, p, q, e, tail, numMerges, pSize, qSize,\n        inSize = 1;\n\n    do {\n        p = list;\n        list = null;\n        tail = null;\n        numMerges = 0;\n\n        while (p) {\n            numMerges++;\n            q = p;\n            pSize = 0;\n            for (i = 0; i < inSize; i++) {\n                pSize++;\n                q = q.nextZ;\n                if (!q) break;\n            }\n            qSize = inSize;\n\n            while (pSize > 0 || (qSize > 0 && q)) {\n\n                if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n                    e = p;\n                    p = p.nextZ;\n                    pSize--;\n                } else {\n                    e = q;\n                    q = q.nextZ;\n                    qSize--;\n                }\n\n                if (tail) tail.nextZ = e;\n                else list = e;\n\n                e.prevZ = tail;\n                tail = e;\n            }\n\n            p = q;\n        }\n\n        tail.nextZ = null;\n        inSize *= 2;\n\n    } while (numMerges > 1);\n\n    return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n    // coords are transformed into non-negative 15-bit integer range\n    x = (x - minX) * invSize | 0;\n    y = (y - minY) * invSize | 0;\n\n    x = (x | (x << 8)) & 0x00FF00FF;\n    x = (x | (x << 4)) & 0x0F0F0F0F;\n    x = (x | (x << 2)) & 0x33333333;\n    x = (x | (x << 1)) & 0x55555555;\n\n    y = (y | (y << 8)) & 0x00FF00FF;\n    y = (y | (y << 4)) & 0x0F0F0F0F;\n    y = (y | (y << 2)) & 0x33333333;\n    y = (y | (y << 1)) & 0x55555555;\n\n    return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n    var p = start,\n        leftmost = start;\n    do {\n        if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n        p = p.next;\n    } while (p !== start);\n\n    return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n    return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n           (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n           (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n    return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n           (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n            (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n            equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n    return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n    return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n    var o1 = sign(area(p1, q1, p2));\n    var o2 = sign(area(p1, q1, q2));\n    var o3 = sign(area(p2, q2, p1));\n    var o4 = sign(area(p2, q2, q1));\n\n    if (o1 !== o2 && o3 !== o4) return true; // general case\n\n    if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n    if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n    if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n    if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n    return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n    return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n    return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n    var p = a;\n    do {\n        if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n                intersects(p, p.next, a, b)) return true;\n        p = p.next;\n    } while (p !== a);\n\n    return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n    return area(a.prev, a, a.next) < 0 ?\n        area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n        area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n    var p = a,\n        inside = false,\n        px = (a.x + b.x) / 2,\n        py = (a.y + b.y) / 2;\n    do {\n        if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n                (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n            inside = !inside;\n        p = p.next;\n    } while (p !== a);\n\n    return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n    var a2 = new Node(a.i, a.x, a.y),\n        b2 = new Node(b.i, b.x, b.y),\n        an = a.next,\n        bp = b.prev;\n\n    a.next = b;\n    b.prev = a;\n\n    a2.next = an;\n    an.prev = a2;\n\n    b2.next = a2;\n    a2.prev = b2;\n\n    bp.next = b2;\n    b2.prev = bp;\n\n    return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n    var p = new Node(i, x, y);\n\n    if (!last) {\n        p.prev = p;\n        p.next = p;\n\n    } else {\n        p.next = last.next;\n        p.prev = last;\n        last.next.prev = p;\n        last.next = p;\n    }\n    return p;\n}\n\nfunction removeNode(p) {\n    p.next.prev = p.prev;\n    p.prev.next = p.next;\n\n    if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n    if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n    // vertex index in coordinates array\n    this.i = i;\n\n    // vertex coordinates\n    this.x = x;\n    this.y = y;\n\n    // previous and next vertex nodes in a polygon ring\n    this.prev = null;\n    this.next = null;\n\n    // z-order curve value\n    this.z = 0;\n\n    // previous and next nodes in z-order\n    this.prevZ = null;\n    this.nextZ = null;\n\n    // indicates whether this is a steiner point\n    this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n    var hasHoles = holeIndices && holeIndices.length;\n    var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n    var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n    if (hasHoles) {\n        for (var i = 0, len = holeIndices.length; i < len; i++) {\n            var start = holeIndices[i] * dim;\n            var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n            polygonArea -= Math.abs(signedArea(data, start, end, dim));\n        }\n    }\n\n    var trianglesArea = 0;\n    for (i = 0; i < triangles.length; i += 3) {\n        var a = triangles[i] * dim;\n        var b = triangles[i + 1] * dim;\n        var c = triangles[i + 2] * dim;\n        trianglesArea += Math.abs(\n            (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n            (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n    }\n\n    return polygonArea === 0 && trianglesArea === 0 ? 0 :\n        Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n    var sum = 0;\n    for (var i = start, j = end - dim; i < end; i += dim) {\n        sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n        j = i;\n    }\n    return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n    var dim = data[0][0].length,\n        result = {vertices: [], holes: [], dimensions: dim},\n        holeIndex = 0;\n\n    for (var i = 0; i < data.length; i++) {\n        for (var j = 0; j < data[i].length; j++) {\n            for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n        }\n        if (i > 0) {\n            holeIndex += data[i - 1].length;\n            result.holes.push(holeIndex);\n        }\n    }\n    return result;\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bbox_1 = __importDefault(require(\"@turf/bbox\"));\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a {@link Feature} or {@link FeatureCollection} and returns the absolute center point of all features.\n *\n * @name center\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] Translate GeoJSON Properties to Point\n * @param {Object} [options.bbox={}] Translate GeoJSON BBox to Point\n * @param {Object} [options.id={}] Translate GeoJSON Id to Point\n * @returns {Feature<Point>} a Point feature at the absolute center point of all input features\n * @example\n * var features = turf.points([\n *   [-97.522259, 35.4691],\n *   [-97.502754, 35.463455],\n *   [-97.508269, 35.463245]\n * ]);\n *\n * var center = turf.center(features);\n *\n * //addToMap\n * var addToMap = [features, center]\n * center.properties['marker-size'] = 'large';\n * center.properties['marker-color'] = '#000';\n */\nfunction center(geojson, options) {\n    if (options === void 0) { options = {}; }\n    var ext = bbox_1.default(geojson);\n    var x = (ext[0] + ext[2]) / 2;\n    var y = (ext[1] + ext[3]) / 2;\n    return helpers_1.point([x, y], options.properties, options);\n}\nexports.default = center;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar invariant = require('@turf/invariant');\nvar helpers = require('@turf/helpers');\nvar nearestPointOnLine = require('@turf/nearest-point-on-line');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar nearestPointOnLine__default = /*#__PURE__*/_interopDefaultLegacy(nearestPointOnLine);\n\n/**\n * Takes a {@link LineString|line}, a start {@link Point}, and a stop point\n * and returns a subsection of the line in-between those points.\n * The start & stop points don't need to fall exactly on the line.\n *\n * This can be useful for extracting only the part of a route between waypoints.\n *\n * @name lineSlice\n * @param {Coord} startPt starting point\n * @param {Coord} stopPt stopping point\n * @param {Feature<LineString>|LineString} line line to slice\n * @returns {Feature<LineString>} sliced line\n * @example\n * var line = turf.lineString([\n *     [-77.031669, 38.878605],\n *     [-77.029609, 38.881946],\n *     [-77.020339, 38.884084],\n *     [-77.025661, 38.885821],\n *     [-77.021884, 38.889563],\n *     [-77.019824, 38.892368]\n * ]);\n * var start = turf.point([-77.029609, 38.881946]);\n * var stop = turf.point([-77.021884, 38.889563]);\n *\n * var sliced = turf.lineSlice(start, stop, line);\n *\n * //addToMap\n * var addToMap = [start, stop, line]\n */\nfunction lineSlice(startPt, stopPt, line) {\n  // Validation\n  var coords = invariant.getCoords(line);\n  if (invariant.getType(line) !== \"LineString\")\n    throw new Error(\"line must be a LineString\");\n\n  var startVertex = nearestPointOnLine__default['default'](line, startPt);\n  var stopVertex = nearestPointOnLine__default['default'](line, stopPt);\n  var ends;\n  if (startVertex.properties.index <= stopVertex.properties.index) {\n    ends = [startVertex, stopVertex];\n  } else {\n    ends = [stopVertex, startVertex];\n  }\n  var clipCoords = [ends[0].geometry.coordinates];\n  for (\n    var i = ends[0].properties.index + 1;\n    i < ends[1].properties.index + 1;\n    i++\n  ) {\n    clipCoords.push(coords[i]);\n  }\n  clipCoords.push(ends[1].geometry.coordinates);\n  return helpers.lineString(clipCoords, line.properties);\n}\n\nmodule.exports = lineSlice;\nmodule.exports.default = lineSlice;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar clone_1 = __importDefault(require(\"@turf/clone\"));\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar meta_1 = require(\"@turf/meta\");\nvar helpers_1 = require(\"@turf/helpers\");\nvar density_clustering_1 = __importDefault(require(\"density-clustering\"));\n/**\n * Takes a set of {@link Point|points} and partition them into clusters according to {@link DBSCAN's|https://en.wikipedia.org/wiki/DBSCAN} data clustering algorithm.\n *\n * @name clustersDbscan\n * @param {FeatureCollection<Point>} points to be clustered\n * @param {number} maxDistance Maximum Distance between any point of the cluster to generate the clusters (kilometers only)\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=\"kilometers\"] in which `maxDistance` is expressed, can be degrees, radians, miles, or kilometers\n * @param {boolean} [options.mutate=false] Allows GeoJSON input to be mutated\n * @param {number} [options.minPoints=3] Minimum number of points to generate a single cluster,\n * points which do not meet this requirement will be classified as an 'edge' or 'noise'.\n * @returns {FeatureCollection<Point>} Clustered Points with an additional two properties associated to each Feature:\n * - {number} cluster - the associated clusterId\n * - {string} dbscan - type of point it has been classified as ('core'|'edge'|'noise')\n * @example\n * // create random points with random z-values in their properties\n * var points = turf.randomPoint(100, {bbox: [0, 30, 20, 50]});\n * var maxDistance = 100;\n * var clustered = turf.clustersDbscan(points, maxDistance);\n *\n * //addToMap\n * var addToMap = [clustered];\n */\nfunction clustersDbscan(points, maxDistance, options) {\n    // Input validation being handled by Typescript\n    // collectionOf(points, 'Point', 'points must consist of a FeatureCollection of only Points');\n    // if (maxDistance === null || maxDistance === undefined) throw new Error('maxDistance is required');\n    // if (!(Math.sign(maxDistance) > 0)) throw new Error('maxDistance is invalid');\n    // if (!(minPoints === undefined || minPoints === null || Math.sign(minPoints) > 0)) throw new Error('options.minPoints is invalid');\n    if (options === void 0) { options = {}; }\n    // Clone points to prevent any mutations\n    if (options.mutate !== true)\n        points = clone_1.default(points);\n    // Defaults\n    options.minPoints = options.minPoints || 3;\n    // create clustered ids\n    var dbscan = new density_clustering_1.default.DBSCAN();\n    var clusteredIds = dbscan.run(meta_1.coordAll(points), helpers_1.convertLength(maxDistance, options.units), options.minPoints, distance_1.default);\n    // Tag points to Clusters ID\n    var clusterId = -1;\n    clusteredIds.forEach(function (clusterIds) {\n        clusterId++;\n        // assign cluster ids to input points\n        clusterIds.forEach(function (idx) {\n            var clusterPoint = points.features[idx];\n            if (!clusterPoint.properties)\n                clusterPoint.properties = {};\n            clusterPoint.properties.cluster = clusterId;\n            clusterPoint.properties.dbscan = \"core\";\n        });\n    });\n    // handle noise points, if any\n    // edges points are tagged by DBSCAN as both 'noise' and 'cluster' as they can \"reach\" less than 'minPoints' number of points\n    dbscan.noise.forEach(function (noiseId) {\n        var noisePoint = points.features[noiseId];\n        if (!noisePoint.properties)\n            noisePoint.properties = {};\n        if (noisePoint.properties.cluster)\n            noisePoint.properties.dbscan = \"edge\";\n        else\n            noisePoint.properties.dbscan = \"noise\";\n    });\n    return points;\n}\nexports.default = clustersDbscan;\n","import React from 'react'\nimport django from 'django'\nimport BaseMap from 'adhocracy4/adhocracy4/maps_react/static/a4maps_react/Map'\nimport MarkerClusterLayer\n  from 'adhocracy4/adhocracy4/maps_react/static/a4maps_react/MarkerClusterLayer'\nimport GeoJsonMarker\n  from 'adhocracy4/adhocracy4/maps_react/static/a4maps_react/GeoJsonMarker'\nimport { ItemPopup } from './ItemPopup'\n\nconst translations = {\n  beginningMap: django.gettext('A map representation follows.'),\n  endMap: django.gettext('End of map.'),\n  skipMap: django.gettext('Skip map')\n}\n\n/**\n * Creates a Map component.\n *\n * @param {object} props - The properties for the Map component.\n * @param {string} props.id - The unique identifier for the Map component.\n * @param {string} props.title - The title for the Map component.\n * @returns {React.Element} - The rendered Map component.\n * @throws {Error} - If id is not defined.\n */\nexport const Map = React.forwardRef(function Map ({ id, title, ...props }, ref) {\n  if (!id) {\n    throw new Error('id must be defined when using Map')\n  }\n\n  return (\n    <div className=\"modul-geomap\" id={id}>\n      {title && <h2 className=\"title\">{title}</h2>}\n      <div className=\"geomap-main\">\n        <p className=\"skipmap\">\n          <span className=\"aural\">{translations.beginningMap}</span>\n          <a href={'#' + id + '_skipmap'}>{translations.skipMap}</a>\n        </p>\n        <div className=\"geomap-container\">\n          <BaseMap {...props} ref={ref} />\n        </div>\n      </div>\n\n      <div id={id + '_skipmap'}>\n        <p className=\"aural\">{translations.endMap}</p>\n      </div>\n    </div>\n  )\n})\n\n/**\n * Represents a map component with markers.\n *\n * @param {object} props - The properties to pass to the Map component.\n * @param {Array<object>} points - The array of points to create markers from.\n * @param {boolean} withoutPopup - Indicates whether to exclude the popup for each marker.\n * @param {ReactNode} children - Any additional controls etc. to be added to the map\n * @returns {JSX.Element} - The rendered map component with markers.\n */\nexport const MapWithMarkers = ({ points, withoutPopup, children, ...props }) => {\n  const markers = points.map((feature, index) => (\n    <GeoJsonMarker key={index} feature={feature}>\n      {!withoutPopup && <ItemPopup feature={feature} />}\n    </GeoJsonMarker>\n  ))\n  return (\n    <Map\n      {...props}\n    >\n      {points.length > 1 ? <MarkerClusterLayer>{markers}</MarkerClusterLayer> : markers}\n      {children}\n    </Map>\n  )\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar boolean_disjoint_1 = __importDefault(require(\"@turf/boolean-disjoint\"));\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Boolean-intersects returns (TRUE) two geometries intersect.\n *\n * @name booleanIntersects\n * @param {Geometry|Feature<any>} feature1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<any>} feature2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false\n * @example\n * var point = turf.point([2, 2]);\n * var line = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);\n *\n * turf.booleanIntersects(line, point);\n * //=true\n */\nfunction booleanIntersects(feature1, feature2) {\n    var bool = false;\n    meta_1.flattenEach(feature1, function (flatten1) {\n        meta_1.flattenEach(feature2, function (flatten2) {\n            if (bool === true) {\n                return true;\n            }\n            bool = !boolean_disjoint_1.default(flatten1.geometry, flatten2.geometry);\n        });\n    });\n    return bool;\n}\nexports.default = booleanIntersects;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","import { useState } from 'react'\nimport django from 'django'\nimport { updateItem } from '../contrib/helpers'\n\nconst errorCreatingSearchProfile = django.gettext(\n  'Error creating search profile'\n)\n\nconst STATUS_MAPPING = ['active', 'future', 'past']\n\nexport function useCreateSearchProfile ({\n  searchProfilesApiUrl,\n  appliedFilters,\n  districts,\n  organisations,\n  topicChoices,\n  participationChoices,\n  projectStatus,\n  kiezradars,\n  searchProfilesCount,\n  onSearchProfileCreate\n}) {\n  const [loading, setLoading] = useState(false)\n  const [error, setError] = useState(null)\n  const [limitExceeded, setLimitExceeded] = useState(false)\n\n  const createSearchProfile = async () => {\n    if (searchProfilesCount === 10) {\n      setLimitExceeded(true)\n      onSearchProfileCreate(null, true)\n      return\n    }\n\n    setLoading(true)\n    setError(null)\n\n    const results = getFilteredResults({\n      appliedFilters,\n      districts,\n      organisations,\n      topicChoices,\n      participationChoices,\n      projectStatus,\n      kiezradars\n    })\n\n    const {\n      districtIds,\n      organisationIds,\n      topicIds,\n      participationIds,\n      projectStatusIds,\n      kiezradarIds\n    } = getFilteredIds(results)\n\n    const params = {\n      districts: districtIds,\n      organisations: organisationIds,\n      topics: topicIds,\n      project_types: participationIds,\n      status: projectStatusIds,\n      kiezradars: kiezradarIds,\n      plans_only: appliedFilters.plansOnly,\n      notification: true\n    }\n\n    if (appliedFilters.search.length > 0) {\n      params.query_text = appliedFilters.search\n    }\n\n    try {\n      const response = await updateItem(params, searchProfilesApiUrl, 'POST')\n      const searchProfile = await response.json()\n\n      onSearchProfileCreate(searchProfile)\n    } catch (err) {\n      setError(errorCreatingSearchProfile)\n    } finally {\n      setLoading(false)\n    }\n  }\n\n  return { loading, limitExceeded, error, createSearchProfile }\n}\n\nfunction getFilteredResults ({\n  appliedFilters,\n  districts,\n  organisations,\n  topicChoices,\n  participationChoices,\n  projectStatus,\n  kiezradars\n}) {\n  return {\n    filteredDistricts: districts.filter(district =>\n      appliedFilters.districts.includes(district.name)\n    ),\n    filteredOrganisations: organisations.filter(organisation =>\n      appliedFilters.organisation.includes(organisation.name)\n    ),\n    filteredTopics: topicChoices.filter(topic =>\n      appliedFilters.topics.includes(topic.code)\n    ),\n    filteredParticipationChoices: appliedFilters.participations.map(index =>\n      participationChoices[index - 1]\n    ),\n    filteredProjectStatus: projectStatus.filter(status =>\n      appliedFilters.projectState.includes(STATUS_MAPPING[status.status])\n    ),\n    filteredKiezradars: kiezradars.filter(kiezradar =>\n      appliedFilters.kiezradars.includes(kiezradar.name)\n    )\n  }\n}\n\nfunction getFilteredIds (results) {\n  const filters = [\n    results.filteredDistricts,\n    results.filteredOrganisations,\n    results.filteredTopics,\n    results.filteredParticipationChoices,\n    results.filteredProjectStatus,\n    results.filteredKiezradars\n  ]\n\n  const [\n    districtIds,\n    organisationIds,\n    topicIds,\n    participationIds,\n    projectStatusIds,\n    kiezradarIds\n  ] = filters.map(items => items.map(item => item.id))\n\n  return {\n    districtIds,\n    organisationIds,\n    topicIds,\n    participationIds,\n    projectStatusIds,\n    kiezradarIds\n  }\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar clone_1 = __importDefault(require(\"@turf/clone\"));\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Takes a reference {@link Point|point} and a FeatureCollection of Features\n * with Point geometries and returns the\n * point from the FeatureCollection closest to the reference. This calculation\n * is geodesic.\n *\n * @name nearestPoint\n * @param {Coord} targetPoint the reference point\n * @param {FeatureCollection<Point>} points against input point set\n * @returns {Feature<Point>} the closest point in the set to the reference point\n * @example\n * var targetPoint = turf.point([28.965797, 41.010086], {\"marker-color\": \"#0F0\"});\n * var points = turf.featureCollection([\n *     turf.point([28.973865, 41.011122]),\n *     turf.point([28.948459, 41.024204]),\n *     turf.point([28.938674, 41.013324])\n * ]);\n *\n * var nearest = turf.nearestPoint(targetPoint, points);\n *\n * //addToMap\n * var addToMap = [targetPoint, points, nearest];\n * nearest.properties['marker-color'] = '#F00';\n */\nfunction nearestPoint(targetPoint, points) {\n    // Input validation\n    if (!targetPoint)\n        throw new Error(\"targetPoint is required\");\n    if (!points)\n        throw new Error(\"points is required\");\n    var nearest;\n    var minDist = Infinity;\n    var bestFeatureIndex = 0;\n    meta_1.featureEach(points, function (pt, featureIndex) {\n        var distanceToPoint = distance_1.default(targetPoint, pt);\n        if (distanceToPoint < minDist) {\n            bestFeatureIndex = featureIndex;\n            minDist = distanceToPoint;\n        }\n    });\n    nearest = clone_1.default(points.features[bestFeatureIndex]);\n    nearest.properties.featureIndex = bestFeatureIndex;\n    nearest.properties.distanceToPoint = minDist;\n    return nearest;\n}\nexports.default = nearestPoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar spline_1 = __importDefault(require(\"./lib/spline\"));\n/**\n * Takes a {@link LineString|line} and returns a curved version\n * by applying a [Bezier spline](http://en.wikipedia.org/wiki/B%C3%A9zier_spline)\n * algorithm.\n *\n * The bezier spline implementation is by [Leszek Rybicki](http://leszek.rybicki.cc/).\n *\n * @name bezierSpline\n * @param {Feature<LineString>} line input LineString\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] Translate properties to output\n * @param {number} [options.resolution=10000] time in milliseconds between points\n * @param {number} [options.sharpness=0.85] a measure of how curvy the path should be between splines\n * @returns {Feature<LineString>} curved line\n * @example\n * var line = turf.lineString([\n *   [-76.091308, 18.427501],\n *   [-76.695556, 18.729501],\n *   [-76.552734, 19.40443],\n *   [-74.61914, 19.134789],\n *   [-73.652343, 20.07657],\n *   [-73.157958, 20.210656]\n * ]);\n *\n * var curved = turf.bezierSpline(line);\n *\n * //addToMap\n * var addToMap = [line, curved]\n * curved.properties = { stroke: '#0F0' };\n */\nfunction bezier(line, options) {\n    if (options === void 0) { options = {}; }\n    // Optional params\n    var resolution = options.resolution || 10000;\n    var sharpness = options.sharpness || 0.85;\n    var coords = [];\n    var points = invariant_1.getGeom(line).coordinates.map(function (pt) {\n        return { x: pt[0], y: pt[1] };\n    });\n    var spline = new spline_1.default({\n        duration: resolution,\n        points: points,\n        sharpness: sharpness,\n    });\n    var pushCoord = function (time) {\n        var pos = spline.pos(time);\n        if (Math.floor(time / 100) % 2 === 0) {\n            coords.push([pos.x, pos.y]);\n        }\n    };\n    for (var i = 0; i < spline.duration; i += 10) {\n        pushCoord(i);\n    }\n    pushCoord(spline.duration);\n    return helpers_1.lineString(coords, options.properties);\n}\nexports.default = bezier;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\nvar bbox = require('@turf/bbox');\nvar area = require('@turf/area');\nvar booleanPointInPolygon = require('@turf/boolean-point-in-polygon');\nvar explode = require('@turf/explode');\nvar invariant = require('@turf/invariant');\nvar helpers = require('@turf/helpers');\nvar objectAssign = require('object-assign');\nvar meta = require('@turf/meta');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bbox__default = /*#__PURE__*/_interopDefaultLegacy(bbox);\nvar area__default = /*#__PURE__*/_interopDefaultLegacy(area);\nvar booleanPointInPolygon__default = /*#__PURE__*/_interopDefaultLegacy(booleanPointInPolygon);\nvar explode__default = /*#__PURE__*/_interopDefaultLegacy(explode);\nvar objectAssign__default = /*#__PURE__*/_interopDefaultLegacy(objectAssign);\n\n/**\n * Takes a {@link Point} grid and returns a correspondent matrix {Array<Array<number>>}\n * of the 'property' values\n *\n * @name gridToMatrix\n * @param {FeatureCollection<Point>} grid of points\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.zProperty='elevation'] the property name in `points` from which z-values will be pulled\n * @param {boolean} [options.flip=false] returns the matrix upside-down\n * @param {boolean} [options.flags=false] flags, adding a `matrixPosition` array field ([row, column]) to its properties,\n * the grid points with coordinates on the matrix\n * @returns {Array<Array<number>>} matrix of property values\n * @example\n *   var extent = [-70.823364, -33.553984, -70.473175, -33.302986];\n *   var cellSize = 3;\n *   var grid = turf.pointGrid(extent, cellSize);\n *   // add a random property to each point between 0 and 60\n *   for (var i = 0; i < grid.features.length; i++) {\n *     grid.features[i].properties.elevation = (Math.random() * 60);\n *   }\n *   gridToMatrix(grid);\n *   //= [\n *     [ 1, 13, 10,  9, 10, 13, 18],\n *     [34,  8,  5,  4,  5,  8, 13],\n *     [10,  5,  2,  1,  2,  5,  4],\n *     [ 0,  4, 56, 19,  1,  4,  9],\n *     [10,  5,  2,  1,  2,  5, 10],\n *     [57,  8,  5,  4,  5,  0, 57],\n *     [ 3, 13, 10,  9,  5, 13, 18],\n *     [18, 13, 10,  9, 78, 13, 18]\n *   ]\n */\nfunction gridToMatrix(grid, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var zProperty = options.zProperty || \"elevation\";\n  var flip = options.flip;\n  var flags = options.flags;\n\n  // validation\n  invariant.collectionOf(grid, \"Point\", \"input must contain Points\");\n\n  var pointsMatrix = sortPointsByLatLng(grid, flip);\n\n  var matrix = [];\n  // create property matrix from sorted points\n  // looping order matters here\n  for (var r = 0; r < pointsMatrix.length; r++) {\n    var pointRow = pointsMatrix[r];\n    var row = [];\n    for (var c = 0; c < pointRow.length; c++) {\n      var point = pointRow[c];\n      // Check if zProperty exist\n      if (point.properties[zProperty]) row.push(point.properties[zProperty]);\n      else row.push(0);\n      // add flags\n      if (flags === true) point.properties.matrixPosition = [r, c];\n    }\n    matrix.push(row);\n  }\n\n  return matrix;\n}\n\n/**\n * Sorts points by latitude and longitude, creating a 2-dimensional array of points\n *\n * @private\n * @param {FeatureCollection<Point>} points GeoJSON Point features\n * @param {boolean} [flip=false] returns the matrix upside-down\n * @returns {Array<Array<Point>>} points ordered by latitude and longitude\n */\nfunction sortPointsByLatLng(points, flip) {\n  var pointsByLatitude = {};\n\n  // divide points by rows with the same latitude\n  meta.featureEach(points, function (point) {\n    var lat = invariant.getCoords(point)[1];\n    if (!pointsByLatitude[lat]) pointsByLatitude[lat] = [];\n    pointsByLatitude[lat].push(point);\n  });\n\n  // sort points (with the same latitude) by longitude\n  var orderedRowsByLatitude = Object.keys(pointsByLatitude).map(function (lat) {\n    var row = pointsByLatitude[lat];\n    var rowOrderedByLongitude = row.sort(function (a, b) {\n      return invariant.getCoords(a)[0] - invariant.getCoords(b)[0];\n    });\n    return rowOrderedByLongitude;\n  });\n\n  // sort rows (of points with the same latitude) by latitude\n  var pointMatrix = orderedRowsByLatitude.sort(function (a, b) {\n    if (flip) return invariant.getCoords(a[0])[1] - invariant.getCoords(b[0])[1];\n    else return invariant.getCoords(b[0])[1] - invariant.getCoords(a[0])[1];\n  });\n\n  return pointMatrix;\n}\n\n/*!\n * @license GNU Affero General Public License.\n * Copyright (c) 2015, 2015 Ronny Lorenz <ronny@tbi.univie.ac.at>\n * v. 1.2.0\n * https://github.com/RaumZeit/MarchingSquares.js\n *\n * MarchingSquaresJS is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * MarchingSquaresJS is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * As additional permission under GNU Affero General Public License version 3\n * section 7, third-party projects (personal or commercial) may distribute,\n * include, or link against UNMODIFIED VERSIONS of MarchingSquaresJS without the\n * requirement that said third-party project for that reason alone becomes\n * subject to any requirement of the GNU Affero General Public License version 3.\n * Any modifications to MarchingSquaresJS, however, must be shared with the public\n * and made available.\n *\n * In summary this:\n * - allows you to use MarchingSquaresJS at no cost\n * - allows you to use MarchingSquaresJS for both personal and commercial purposes\n * - allows you to distribute UNMODIFIED VERSIONS of MarchingSquaresJS under any\n *   license as long as this license notice is included\n * - enables you to keep the source code of your program that uses MarchingSquaresJS\n *   undisclosed\n * - forces you to share any modifications you have made to MarchingSquaresJS,\n *   e.g. bug-fixes\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with MarchingSquaresJS.  If not, see <http://www.gnu.org/licenses/>.\n */\nvar defaultSettings = {\n  successCallback: null,\n  verbose: false,\n  polygons: false,\n};\n\nvar settings = {};\n\n/*\n  Compute isobands(s) of a scalar 2D field given a certain\n  threshold and a bandwidth by applying the Marching Squares\n  Algorithm. The function returns a list of path coordinates\n  either for individual polygons within each grid cell, or the\n  outline of connected polygons.\n*/\nfunction isoBands(data, minV, bandwidth, options) {\n  /* process options */\n  options = options ? options : {};\n\n  var optionKeys = Object.keys(defaultSettings);\n\n  for (var i = 0; i < optionKeys.length; i++) {\n    var key = optionKeys[i];\n    var val = options[key];\n    val =\n      typeof val !== \"undefined\" && val !== null ? val : defaultSettings[key];\n\n    settings[key] = val;\n  }\n\n  if (settings.verbose)\n    console.log(\n      \"MarchingSquaresJS-isoBands: computing isobands for [\" +\n        minV +\n        \":\" +\n        (minV + bandwidth) +\n        \"]\"\n    );\n\n  var grid = computeBandGrid(data, minV, bandwidth);\n\n  var ret;\n  if (settings.polygons) {\n    if (settings.verbose)\n      console.log(\n        \"MarchingSquaresJS-isoBands: returning single polygons for each grid cell\"\n      );\n    ret = BandGrid2Areas(grid);\n  } else {\n    if (settings.verbose)\n      console.log(\n        \"MarchingSquaresJS-isoBands: returning polygon paths for entire data grid\"\n      );\n    ret = BandGrid2AreaPaths(grid);\n  }\n\n  if (typeof settings.successCallback === \"function\")\n    settings.successCallback(ret);\n\n  return ret;\n}\n\n/*\n  Thats all for the public interface, below follows the actual\n  implementation\n*/\n\n/* Some private variables */\nvar Node0 = 64,\n  Node1 = 16,\n  Node2 = 4,\n  Node3 = 1;\n\n/*\n  The look-up tables for tracing back the contour path\n  of isoBands\n*/\n\nvar isoBandNextXTL = [];\nvar isoBandNextYTL = [];\nvar isoBandNextOTL = [];\n\nvar isoBandNextXTR = [];\nvar isoBandNextYTR = [];\nvar isoBandNextOTR = [];\n\nvar isoBandNextXRT = [];\nvar isoBandNextYRT = [];\nvar isoBandNextORT = [];\n\nvar isoBandNextXRB = [];\nvar isoBandNextYRB = [];\nvar isoBandNextORB = [];\n\nvar isoBandNextXBL = [];\nvar isoBandNextYBL = [];\nvar isoBandNextOBL = [];\n\nvar isoBandNextXBR = [];\nvar isoBandNextYBR = [];\nvar isoBandNextOBR = [];\n\nvar isoBandNextXLT = [];\nvar isoBandNextYLT = [];\nvar isoBandNextOLT = [];\n\nvar isoBandNextXLB = [];\nvar isoBandNextYLB = [];\nvar isoBandNextOLB = [];\n\nisoBandNextXRT[85] = isoBandNextXRB[85] = -1;\nisoBandNextYRT[85] = isoBandNextYRB[85] = 0;\nisoBandNextORT[85] = isoBandNextORB[85] = 1;\nisoBandNextXLT[85] = isoBandNextXLB[85] = 1;\nisoBandNextYLT[85] = isoBandNextYLB[85] = 0;\nisoBandNextOLT[85] = isoBandNextOLB[85] = 1;\n\nisoBandNextXTL[85] = isoBandNextXTR[85] = 0;\nisoBandNextYTL[85] = isoBandNextYTR[85] = -1;\nisoBandNextOTL[85] = isoBandNextOBL[85] = 0;\nisoBandNextXBR[85] = isoBandNextXBL[85] = 0;\nisoBandNextYBR[85] = isoBandNextYBL[85] = 1;\nisoBandNextOTR[85] = isoBandNextOBR[85] = 1;\n\n/* triangle cases */\nisoBandNextXLB[1] = isoBandNextXLB[169] = 0;\nisoBandNextYLB[1] = isoBandNextYLB[169] = -1;\nisoBandNextOLB[1] = isoBandNextOLB[169] = 0;\nisoBandNextXBL[1] = isoBandNextXBL[169] = -1;\nisoBandNextYBL[1] = isoBandNextYBL[169] = 0;\nisoBandNextOBL[1] = isoBandNextOBL[169] = 0;\n\nisoBandNextXRB[4] = isoBandNextXRB[166] = 0;\nisoBandNextYRB[4] = isoBandNextYRB[166] = -1;\nisoBandNextORB[4] = isoBandNextORB[166] = 1;\nisoBandNextXBR[4] = isoBandNextXBR[166] = 1;\nisoBandNextYBR[4] = isoBandNextYBR[166] = 0;\nisoBandNextOBR[4] = isoBandNextOBR[166] = 0;\n\nisoBandNextXRT[16] = isoBandNextXRT[154] = 0;\nisoBandNextYRT[16] = isoBandNextYRT[154] = 1;\nisoBandNextORT[16] = isoBandNextORT[154] = 1;\nisoBandNextXTR[16] = isoBandNextXTR[154] = 1;\nisoBandNextYTR[16] = isoBandNextYTR[154] = 0;\nisoBandNextOTR[16] = isoBandNextOTR[154] = 1;\n\nisoBandNextXLT[64] = isoBandNextXLT[106] = 0;\nisoBandNextYLT[64] = isoBandNextYLT[106] = 1;\nisoBandNextOLT[64] = isoBandNextOLT[106] = 0;\nisoBandNextXTL[64] = isoBandNextXTL[106] = -1;\nisoBandNextYTL[64] = isoBandNextYTL[106] = 0;\nisoBandNextOTL[64] = isoBandNextOTL[106] = 1;\n\n/* single trapezoid cases */\nisoBandNextXLT[2] = isoBandNextXLT[168] = 0;\nisoBandNextYLT[2] = isoBandNextYLT[168] = -1;\nisoBandNextOLT[2] = isoBandNextOLT[168] = 1;\nisoBandNextXLB[2] = isoBandNextXLB[168] = 0;\nisoBandNextYLB[2] = isoBandNextYLB[168] = -1;\nisoBandNextOLB[2] = isoBandNextOLB[168] = 0;\nisoBandNextXBL[2] = isoBandNextXBL[168] = -1;\nisoBandNextYBL[2] = isoBandNextYBL[168] = 0;\nisoBandNextOBL[2] = isoBandNextOBL[168] = 0;\nisoBandNextXBR[2] = isoBandNextXBR[168] = -1;\nisoBandNextYBR[2] = isoBandNextYBR[168] = 0;\nisoBandNextOBR[2] = isoBandNextOBR[168] = 1;\n\nisoBandNextXRT[8] = isoBandNextXRT[162] = 0;\nisoBandNextYRT[8] = isoBandNextYRT[162] = -1;\nisoBandNextORT[8] = isoBandNextORT[162] = 0;\nisoBandNextXRB[8] = isoBandNextXRB[162] = 0;\nisoBandNextYRB[8] = isoBandNextYRB[162] = -1;\nisoBandNextORB[8] = isoBandNextORB[162] = 1;\nisoBandNextXBL[8] = isoBandNextXBL[162] = 1;\nisoBandNextYBL[8] = isoBandNextYBL[162] = 0;\nisoBandNextOBL[8] = isoBandNextOBL[162] = 1;\nisoBandNextXBR[8] = isoBandNextXBR[162] = 1;\nisoBandNextYBR[8] = isoBandNextYBR[162] = 0;\nisoBandNextOBR[8] = isoBandNextOBR[162] = 0;\n\nisoBandNextXRT[32] = isoBandNextXRT[138] = 0;\nisoBandNextYRT[32] = isoBandNextYRT[138] = 1;\nisoBandNextORT[32] = isoBandNextORT[138] = 1;\nisoBandNextXRB[32] = isoBandNextXRB[138] = 0;\nisoBandNextYRB[32] = isoBandNextYRB[138] = 1;\nisoBandNextORB[32] = isoBandNextORB[138] = 0;\nisoBandNextXTL[32] = isoBandNextXTL[138] = 1;\nisoBandNextYTL[32] = isoBandNextYTL[138] = 0;\nisoBandNextOTL[32] = isoBandNextOTL[138] = 0;\nisoBandNextXTR[32] = isoBandNextXTR[138] = 1;\nisoBandNextYTR[32] = isoBandNextYTR[138] = 0;\nisoBandNextOTR[32] = isoBandNextOTR[138] = 1;\n\nisoBandNextXLB[128] = isoBandNextXLB[42] = 0;\nisoBandNextYLB[128] = isoBandNextYLB[42] = 1;\nisoBandNextOLB[128] = isoBandNextOLB[42] = 1;\nisoBandNextXLT[128] = isoBandNextXLT[42] = 0;\nisoBandNextYLT[128] = isoBandNextYLT[42] = 1;\nisoBandNextOLT[128] = isoBandNextOLT[42] = 0;\nisoBandNextXTL[128] = isoBandNextXTL[42] = -1;\nisoBandNextYTL[128] = isoBandNextYTL[42] = 0;\nisoBandNextOTL[128] = isoBandNextOTL[42] = 1;\nisoBandNextXTR[128] = isoBandNextXTR[42] = -1;\nisoBandNextYTR[128] = isoBandNextYTR[42] = 0;\nisoBandNextOTR[128] = isoBandNextOTR[42] = 0;\n\n/* single rectangle cases */\nisoBandNextXRB[5] = isoBandNextXRB[165] = -1;\nisoBandNextYRB[5] = isoBandNextYRB[165] = 0;\nisoBandNextORB[5] = isoBandNextORB[165] = 0;\nisoBandNextXLB[5] = isoBandNextXLB[165] = 1;\nisoBandNextYLB[5] = isoBandNextYLB[165] = 0;\nisoBandNextOLB[5] = isoBandNextOLB[165] = 0;\n\nisoBandNextXBR[20] = isoBandNextXBR[150] = 0;\nisoBandNextYBR[20] = isoBandNextYBR[150] = 1;\nisoBandNextOBR[20] = isoBandNextOBR[150] = 1;\nisoBandNextXTR[20] = isoBandNextXTR[150] = 0;\nisoBandNextYTR[20] = isoBandNextYTR[150] = -1;\nisoBandNextOTR[20] = isoBandNextOTR[150] = 1;\n\nisoBandNextXRT[80] = isoBandNextXRT[90] = -1;\nisoBandNextYRT[80] = isoBandNextYRT[90] = 0;\nisoBandNextORT[80] = isoBandNextORT[90] = 1;\nisoBandNextXLT[80] = isoBandNextXLT[90] = 1;\nisoBandNextYLT[80] = isoBandNextYLT[90] = 0;\nisoBandNextOLT[80] = isoBandNextOLT[90] = 1;\n\nisoBandNextXBL[65] = isoBandNextXBL[105] = 0;\nisoBandNextYBL[65] = isoBandNextYBL[105] = 1;\nisoBandNextOBL[65] = isoBandNextOBL[105] = 0;\nisoBandNextXTL[65] = isoBandNextXTL[105] = 0;\nisoBandNextYTL[65] = isoBandNextYTL[105] = -1;\nisoBandNextOTL[65] = isoBandNextOTL[105] = 0;\n\nisoBandNextXRT[160] = isoBandNextXRT[10] = -1;\nisoBandNextYRT[160] = isoBandNextYRT[10] = 0;\nisoBandNextORT[160] = isoBandNextORT[10] = 1;\nisoBandNextXRB[160] = isoBandNextXRB[10] = -1;\nisoBandNextYRB[160] = isoBandNextYRB[10] = 0;\nisoBandNextORB[160] = isoBandNextORB[10] = 0;\nisoBandNextXLB[160] = isoBandNextXLB[10] = 1;\nisoBandNextYLB[160] = isoBandNextYLB[10] = 0;\nisoBandNextOLB[160] = isoBandNextOLB[10] = 0;\nisoBandNextXLT[160] = isoBandNextXLT[10] = 1;\nisoBandNextYLT[160] = isoBandNextYLT[10] = 0;\nisoBandNextOLT[160] = isoBandNextOLT[10] = 1;\n\nisoBandNextXBR[130] = isoBandNextXBR[40] = 0;\nisoBandNextYBR[130] = isoBandNextYBR[40] = 1;\nisoBandNextOBR[130] = isoBandNextOBR[40] = 1;\nisoBandNextXBL[130] = isoBandNextXBL[40] = 0;\nisoBandNextYBL[130] = isoBandNextYBL[40] = 1;\nisoBandNextOBL[130] = isoBandNextOBL[40] = 0;\nisoBandNextXTL[130] = isoBandNextXTL[40] = 0;\nisoBandNextYTL[130] = isoBandNextYTL[40] = -1;\nisoBandNextOTL[130] = isoBandNextOTL[40] = 0;\nisoBandNextXTR[130] = isoBandNextXTR[40] = 0;\nisoBandNextYTR[130] = isoBandNextYTR[40] = -1;\nisoBandNextOTR[130] = isoBandNextOTR[40] = 1;\n\n/* single hexagon cases */\nisoBandNextXRB[37] = isoBandNextXRB[133] = 0;\nisoBandNextYRB[37] = isoBandNextYRB[133] = 1;\nisoBandNextORB[37] = isoBandNextORB[133] = 1;\nisoBandNextXLB[37] = isoBandNextXLB[133] = 0;\nisoBandNextYLB[37] = isoBandNextYLB[133] = 1;\nisoBandNextOLB[37] = isoBandNextOLB[133] = 0;\nisoBandNextXTL[37] = isoBandNextXTL[133] = -1;\nisoBandNextYTL[37] = isoBandNextYTL[133] = 0;\nisoBandNextOTL[37] = isoBandNextOTL[133] = 0;\nisoBandNextXTR[37] = isoBandNextXTR[133] = 1;\nisoBandNextYTR[37] = isoBandNextYTR[133] = 0;\nisoBandNextOTR[37] = isoBandNextOTR[133] = 0;\n\nisoBandNextXBR[148] = isoBandNextXBR[22] = -1;\nisoBandNextYBR[148] = isoBandNextYBR[22] = 0;\nisoBandNextOBR[148] = isoBandNextOBR[22] = 0;\nisoBandNextXLB[148] = isoBandNextXLB[22] = 0;\nisoBandNextYLB[148] = isoBandNextYLB[22] = -1;\nisoBandNextOLB[148] = isoBandNextOLB[22] = 1;\nisoBandNextXLT[148] = isoBandNextXLT[22] = 0;\nisoBandNextYLT[148] = isoBandNextYLT[22] = 1;\nisoBandNextOLT[148] = isoBandNextOLT[22] = 1;\nisoBandNextXTR[148] = isoBandNextXTR[22] = -1;\nisoBandNextYTR[148] = isoBandNextYTR[22] = 0;\nisoBandNextOTR[148] = isoBandNextOTR[22] = 1;\n\nisoBandNextXRT[82] = isoBandNextXRT[88] = 0;\nisoBandNextYRT[82] = isoBandNextYRT[88] = -1;\nisoBandNextORT[82] = isoBandNextORT[88] = 1;\nisoBandNextXBR[82] = isoBandNextXBR[88] = 1;\nisoBandNextYBR[82] = isoBandNextYBR[88] = 0;\nisoBandNextOBR[82] = isoBandNextOBR[88] = 1;\nisoBandNextXBL[82] = isoBandNextXBL[88] = -1;\nisoBandNextYBL[82] = isoBandNextYBL[88] = 0;\nisoBandNextOBL[82] = isoBandNextOBL[88] = 1;\nisoBandNextXLT[82] = isoBandNextXLT[88] = 0;\nisoBandNextYLT[82] = isoBandNextYLT[88] = -1;\nisoBandNextOLT[82] = isoBandNextOLT[88] = 0;\n\nisoBandNextXRT[73] = isoBandNextXRT[97] = 0;\nisoBandNextYRT[73] = isoBandNextYRT[97] = 1;\nisoBandNextORT[73] = isoBandNextORT[97] = 0;\nisoBandNextXRB[73] = isoBandNextXRB[97] = 0;\nisoBandNextYRB[73] = isoBandNextYRB[97] = -1;\nisoBandNextORB[73] = isoBandNextORB[97] = 0;\nisoBandNextXBL[73] = isoBandNextXBL[97] = 1;\nisoBandNextYBL[73] = isoBandNextYBL[97] = 0;\nisoBandNextOBL[73] = isoBandNextOBL[97] = 0;\nisoBandNextXTL[73] = isoBandNextXTL[97] = 1;\nisoBandNextYTL[73] = isoBandNextYTL[97] = 0;\nisoBandNextOTL[73] = isoBandNextOTL[97] = 1;\n\nisoBandNextXRT[145] = isoBandNextXRT[25] = 0;\nisoBandNextYRT[145] = isoBandNextYRT[25] = -1;\nisoBandNextORT[145] = isoBandNextORT[25] = 0;\nisoBandNextXBL[145] = isoBandNextXBL[25] = 1;\nisoBandNextYBL[145] = isoBandNextYBL[25] = 0;\nisoBandNextOBL[145] = isoBandNextOBL[25] = 1;\nisoBandNextXLB[145] = isoBandNextXLB[25] = 0;\nisoBandNextYLB[145] = isoBandNextYLB[25] = 1;\nisoBandNextOLB[145] = isoBandNextOLB[25] = 1;\nisoBandNextXTR[145] = isoBandNextXTR[25] = -1;\nisoBandNextYTR[145] = isoBandNextYTR[25] = 0;\nisoBandNextOTR[145] = isoBandNextOTR[25] = 0;\n\nisoBandNextXRB[70] = isoBandNextXRB[100] = 0;\nisoBandNextYRB[70] = isoBandNextYRB[100] = 1;\nisoBandNextORB[70] = isoBandNextORB[100] = 0;\nisoBandNextXBR[70] = isoBandNextXBR[100] = -1;\nisoBandNextYBR[70] = isoBandNextYBR[100] = 0;\nisoBandNextOBR[70] = isoBandNextOBR[100] = 1;\nisoBandNextXLT[70] = isoBandNextXLT[100] = 0;\nisoBandNextYLT[70] = isoBandNextYLT[100] = -1;\nisoBandNextOLT[70] = isoBandNextOLT[100] = 1;\nisoBandNextXTL[70] = isoBandNextXTL[100] = 1;\nisoBandNextYTL[70] = isoBandNextYTL[100] = 0;\nisoBandNextOTL[70] = isoBandNextOTL[100] = 0;\n\n/* single pentagon cases */\nisoBandNextXRB[101] = isoBandNextXRB[69] = 0;\nisoBandNextYRB[101] = isoBandNextYRB[69] = 1;\nisoBandNextORB[101] = isoBandNextORB[69] = 0;\nisoBandNextXTL[101] = isoBandNextXTL[69] = 1;\nisoBandNextYTL[101] = isoBandNextYTL[69] = 0;\nisoBandNextOTL[101] = isoBandNextOTL[69] = 0;\n\nisoBandNextXLB[149] = isoBandNextXLB[21] = 0;\nisoBandNextYLB[149] = isoBandNextYLB[21] = 1;\nisoBandNextOLB[149] = isoBandNextOLB[21] = 1;\nisoBandNextXTR[149] = isoBandNextXTR[21] = -1;\nisoBandNextYTR[149] = isoBandNextYTR[21] = 0;\nisoBandNextOTR[149] = isoBandNextOTR[21] = 0;\n\nisoBandNextXBR[86] = isoBandNextXBR[84] = -1;\nisoBandNextYBR[86] = isoBandNextYBR[84] = 0;\nisoBandNextOBR[86] = isoBandNextOBR[84] = 1;\nisoBandNextXLT[86] = isoBandNextXLT[84] = 0;\nisoBandNextYLT[86] = isoBandNextYLT[84] = -1;\nisoBandNextOLT[86] = isoBandNextOLT[84] = 1;\n\nisoBandNextXRT[89] = isoBandNextXRT[81] = 0;\nisoBandNextYRT[89] = isoBandNextYRT[81] = -1;\nisoBandNextORT[89] = isoBandNextORT[81] = 0;\nisoBandNextXBL[89] = isoBandNextXBL[81] = 1;\nisoBandNextYBL[89] = isoBandNextYBL[81] = 0;\nisoBandNextOBL[89] = isoBandNextOBL[81] = 1;\n\nisoBandNextXRT[96] = isoBandNextXRT[74] = 0;\nisoBandNextYRT[96] = isoBandNextYRT[74] = 1;\nisoBandNextORT[96] = isoBandNextORT[74] = 0;\nisoBandNextXRB[96] = isoBandNextXRB[74] = -1;\nisoBandNextYRB[96] = isoBandNextYRB[74] = 0;\nisoBandNextORB[96] = isoBandNextORB[74] = 1;\nisoBandNextXLT[96] = isoBandNextXLT[74] = 1;\nisoBandNextYLT[96] = isoBandNextYLT[74] = 0;\nisoBandNextOLT[96] = isoBandNextOLT[74] = 0;\nisoBandNextXTL[96] = isoBandNextXTL[74] = 1;\nisoBandNextYTL[96] = isoBandNextYTL[74] = 0;\nisoBandNextOTL[96] = isoBandNextOTL[74] = 1;\n\nisoBandNextXRT[24] = isoBandNextXRT[146] = 0;\nisoBandNextYRT[24] = isoBandNextYRT[146] = -1;\nisoBandNextORT[24] = isoBandNextORT[146] = 1;\nisoBandNextXBR[24] = isoBandNextXBR[146] = 1;\nisoBandNextYBR[24] = isoBandNextYBR[146] = 0;\nisoBandNextOBR[24] = isoBandNextOBR[146] = 1;\nisoBandNextXBL[24] = isoBandNextXBL[146] = 0;\nisoBandNextYBL[24] = isoBandNextYBL[146] = 1;\nisoBandNextOBL[24] = isoBandNextOBL[146] = 1;\nisoBandNextXTR[24] = isoBandNextXTR[146] = 0;\nisoBandNextYTR[24] = isoBandNextYTR[146] = -1;\nisoBandNextOTR[24] = isoBandNextOTR[146] = 0;\n\nisoBandNextXRB[6] = isoBandNextXRB[164] = -1;\nisoBandNextYRB[6] = isoBandNextYRB[164] = 0;\nisoBandNextORB[6] = isoBandNextORB[164] = 1;\nisoBandNextXBR[6] = isoBandNextXBR[164] = -1;\nisoBandNextYBR[6] = isoBandNextYBR[164] = 0;\nisoBandNextOBR[6] = isoBandNextOBR[164] = 0;\nisoBandNextXLB[6] = isoBandNextXLB[164] = 0;\nisoBandNextYLB[6] = isoBandNextYLB[164] = -1;\nisoBandNextOLB[6] = isoBandNextOLB[164] = 1;\nisoBandNextXLT[6] = isoBandNextXLT[164] = 1;\nisoBandNextYLT[6] = isoBandNextYLT[164] = 0;\nisoBandNextOLT[6] = isoBandNextOLT[164] = 0;\n\nisoBandNextXBL[129] = isoBandNextXBL[41] = 0;\nisoBandNextYBL[129] = isoBandNextYBL[41] = 1;\nisoBandNextOBL[129] = isoBandNextOBL[41] = 1;\nisoBandNextXLB[129] = isoBandNextXLB[41] = 0;\nisoBandNextYLB[129] = isoBandNextYLB[41] = 1;\nisoBandNextOLB[129] = isoBandNextOLB[41] = 0;\nisoBandNextXTL[129] = isoBandNextXTL[41] = -1;\nisoBandNextYTL[129] = isoBandNextYTL[41] = 0;\nisoBandNextOTL[129] = isoBandNextOTL[41] = 0;\nisoBandNextXTR[129] = isoBandNextXTR[41] = 0;\nisoBandNextYTR[129] = isoBandNextYTR[41] = -1;\nisoBandNextOTR[129] = isoBandNextOTR[41] = 0;\n\nisoBandNextXBR[66] = isoBandNextXBR[104] = 0;\nisoBandNextYBR[66] = isoBandNextYBR[104] = 1;\nisoBandNextOBR[66] = isoBandNextOBR[104] = 0;\nisoBandNextXBL[66] = isoBandNextXBL[104] = -1;\nisoBandNextYBL[66] = isoBandNextYBL[104] = 0;\nisoBandNextOBL[66] = isoBandNextOBL[104] = 1;\nisoBandNextXLT[66] = isoBandNextXLT[104] = 0;\nisoBandNextYLT[66] = isoBandNextYLT[104] = -1;\nisoBandNextOLT[66] = isoBandNextOLT[104] = 0;\nisoBandNextXTL[66] = isoBandNextXTL[104] = 0;\nisoBandNextYTL[66] = isoBandNextYTL[104] = -1;\nisoBandNextOTL[66] = isoBandNextOTL[104] = 1;\n\nisoBandNextXRT[144] = isoBandNextXRT[26] = -1;\nisoBandNextYRT[144] = isoBandNextYRT[26] = 0;\nisoBandNextORT[144] = isoBandNextORT[26] = 0;\nisoBandNextXLB[144] = isoBandNextXLB[26] = 1;\nisoBandNextYLB[144] = isoBandNextYLB[26] = 0;\nisoBandNextOLB[144] = isoBandNextOLB[26] = 1;\nisoBandNextXLT[144] = isoBandNextXLT[26] = 0;\nisoBandNextYLT[144] = isoBandNextYLT[26] = 1;\nisoBandNextOLT[144] = isoBandNextOLT[26] = 1;\nisoBandNextXTR[144] = isoBandNextXTR[26] = -1;\nisoBandNextYTR[144] = isoBandNextYTR[26] = 0;\nisoBandNextOTR[144] = isoBandNextOTR[26] = 1;\n\nisoBandNextXRB[36] = isoBandNextXRB[134] = 0;\nisoBandNextYRB[36] = isoBandNextYRB[134] = 1;\nisoBandNextORB[36] = isoBandNextORB[134] = 1;\nisoBandNextXBR[36] = isoBandNextXBR[134] = 0;\nisoBandNextYBR[36] = isoBandNextYBR[134] = 1;\nisoBandNextOBR[36] = isoBandNextOBR[134] = 0;\nisoBandNextXTL[36] = isoBandNextXTL[134] = 0;\nisoBandNextYTL[36] = isoBandNextYTL[134] = -1;\nisoBandNextOTL[36] = isoBandNextOTL[134] = 1;\nisoBandNextXTR[36] = isoBandNextXTR[134] = 1;\nisoBandNextYTR[36] = isoBandNextYTR[134] = 0;\nisoBandNextOTR[36] = isoBandNextOTR[134] = 0;\n\nisoBandNextXRT[9] = isoBandNextXRT[161] = -1;\nisoBandNextYRT[9] = isoBandNextYRT[161] = 0;\nisoBandNextORT[9] = isoBandNextORT[161] = 0;\nisoBandNextXRB[9] = isoBandNextXRB[161] = 0;\nisoBandNextYRB[9] = isoBandNextYRB[161] = -1;\nisoBandNextORB[9] = isoBandNextORB[161] = 0;\nisoBandNextXBL[9] = isoBandNextXBL[161] = 1;\nisoBandNextYBL[9] = isoBandNextYBL[161] = 0;\nisoBandNextOBL[9] = isoBandNextOBL[161] = 0;\nisoBandNextXLB[9] = isoBandNextXLB[161] = 1;\nisoBandNextYLB[9] = isoBandNextYLB[161] = 0;\nisoBandNextOLB[9] = isoBandNextOLB[161] = 1;\n\n/* 8-sided cases */\nisoBandNextXRT[136] = 0;\nisoBandNextYRT[136] = 1;\nisoBandNextORT[136] = 1;\nisoBandNextXRB[136] = 0;\nisoBandNextYRB[136] = 1;\nisoBandNextORB[136] = 0;\nisoBandNextXBR[136] = -1;\nisoBandNextYBR[136] = 0;\nisoBandNextOBR[136] = 1;\nisoBandNextXBL[136] = -1;\nisoBandNextYBL[136] = 0;\nisoBandNextOBL[136] = 0;\nisoBandNextXLB[136] = 0;\nisoBandNextYLB[136] = -1;\nisoBandNextOLB[136] = 0;\nisoBandNextXLT[136] = 0;\nisoBandNextYLT[136] = -1;\nisoBandNextOLT[136] = 1;\nisoBandNextXTL[136] = 1;\nisoBandNextYTL[136] = 0;\nisoBandNextOTL[136] = 0;\nisoBandNextXTR[136] = 1;\nisoBandNextYTR[136] = 0;\nisoBandNextOTR[136] = 1;\n\nisoBandNextXRT[34] = 0;\nisoBandNextYRT[34] = -1;\nisoBandNextORT[34] = 0;\nisoBandNextXRB[34] = 0;\nisoBandNextYRB[34] = -1;\nisoBandNextORB[34] = 1;\nisoBandNextXBR[34] = 1;\nisoBandNextYBR[34] = 0;\nisoBandNextOBR[34] = 0;\nisoBandNextXBL[34] = 1;\nisoBandNextYBL[34] = 0;\nisoBandNextOBL[34] = 1;\nisoBandNextXLB[34] = 0;\nisoBandNextYLB[34] = 1;\nisoBandNextOLB[34] = 1;\nisoBandNextXLT[34] = 0;\nisoBandNextYLT[34] = 1;\nisoBandNextOLT[34] = 0;\nisoBandNextXTL[34] = -1;\nisoBandNextYTL[34] = 0;\nisoBandNextOTL[34] = 1;\nisoBandNextXTR[34] = -1;\nisoBandNextYTR[34] = 0;\nisoBandNextOTR[34] = 0;\n\nisoBandNextXRT[35] = 0;\nisoBandNextYRT[35] = 1;\nisoBandNextORT[35] = 1;\nisoBandNextXRB[35] = 0;\nisoBandNextYRB[35] = -1;\nisoBandNextORB[35] = 1;\nisoBandNextXBR[35] = 1;\nisoBandNextYBR[35] = 0;\nisoBandNextOBR[35] = 0;\nisoBandNextXBL[35] = -1;\nisoBandNextYBL[35] = 0;\nisoBandNextOBL[35] = 0;\nisoBandNextXLB[35] = 0;\nisoBandNextYLB[35] = -1;\nisoBandNextOLB[35] = 0;\nisoBandNextXLT[35] = 0;\nisoBandNextYLT[35] = 1;\nisoBandNextOLT[35] = 0;\nisoBandNextXTL[35] = -1;\nisoBandNextYTL[35] = 0;\nisoBandNextOTL[35] = 1;\nisoBandNextXTR[35] = 1;\nisoBandNextYTR[35] = 0;\nisoBandNextOTR[35] = 1;\n\n/* 6-sided cases */\nisoBandNextXRT[153] = 0;\nisoBandNextYRT[153] = 1;\nisoBandNextORT[153] = 1;\nisoBandNextXBL[153] = -1;\nisoBandNextYBL[153] = 0;\nisoBandNextOBL[153] = 0;\nisoBandNextXLB[153] = 0;\nisoBandNextYLB[153] = -1;\nisoBandNextOLB[153] = 0;\nisoBandNextXTR[153] = 1;\nisoBandNextYTR[153] = 0;\nisoBandNextOTR[153] = 1;\n\nisoBandNextXRB[102] = 0;\nisoBandNextYRB[102] = -1;\nisoBandNextORB[102] = 1;\nisoBandNextXBR[102] = 1;\nisoBandNextYBR[102] = 0;\nisoBandNextOBR[102] = 0;\nisoBandNextXLT[102] = 0;\nisoBandNextYLT[102] = 1;\nisoBandNextOLT[102] = 0;\nisoBandNextXTL[102] = -1;\nisoBandNextYTL[102] = 0;\nisoBandNextOTL[102] = 1;\n\nisoBandNextXRT[155] = 0;\nisoBandNextYRT[155] = -1;\nisoBandNextORT[155] = 0;\nisoBandNextXBL[155] = 1;\nisoBandNextYBL[155] = 0;\nisoBandNextOBL[155] = 1;\nisoBandNextXLB[155] = 0;\nisoBandNextYLB[155] = 1;\nisoBandNextOLB[155] = 1;\nisoBandNextXTR[155] = -1;\nisoBandNextYTR[155] = 0;\nisoBandNextOTR[155] = 0;\n\nisoBandNextXRB[103] = 0;\nisoBandNextYRB[103] = 1;\nisoBandNextORB[103] = 0;\nisoBandNextXBR[103] = -1;\nisoBandNextYBR[103] = 0;\nisoBandNextOBR[103] = 1;\nisoBandNextXLT[103] = 0;\nisoBandNextYLT[103] = -1;\nisoBandNextOLT[103] = 1;\nisoBandNextXTL[103] = 1;\nisoBandNextYTL[103] = 0;\nisoBandNextOTL[103] = 0;\n\n/* 7-sided cases */\nisoBandNextXRT[152] = 0;\nisoBandNextYRT[152] = 1;\nisoBandNextORT[152] = 1;\nisoBandNextXBR[152] = -1;\nisoBandNextYBR[152] = 0;\nisoBandNextOBR[152] = 1;\nisoBandNextXBL[152] = -1;\nisoBandNextYBL[152] = 0;\nisoBandNextOBL[152] = 0;\nisoBandNextXLB[152] = 0;\nisoBandNextYLB[152] = -1;\nisoBandNextOLB[152] = 0;\nisoBandNextXLT[152] = 0;\nisoBandNextYLT[152] = -1;\nisoBandNextOLT[152] = 1;\nisoBandNextXTR[152] = 1;\nisoBandNextYTR[152] = 0;\nisoBandNextOTR[152] = 1;\n\nisoBandNextXRT[156] = 0;\nisoBandNextYRT[156] = -1;\nisoBandNextORT[156] = 1;\nisoBandNextXBR[156] = 1;\nisoBandNextYBR[156] = 0;\nisoBandNextOBR[156] = 1;\nisoBandNextXBL[156] = -1;\nisoBandNextYBL[156] = 0;\nisoBandNextOBL[156] = 0;\nisoBandNextXLB[156] = 0;\nisoBandNextYLB[156] = -1;\nisoBandNextOLB[156] = 0;\nisoBandNextXLT[156] = 0;\nisoBandNextYLT[156] = 1;\nisoBandNextOLT[156] = 1;\nisoBandNextXTR[156] = -1;\nisoBandNextYTR[156] = 0;\nisoBandNextOTR[156] = 1;\n\nisoBandNextXRT[137] = 0;\nisoBandNextYRT[137] = 1;\nisoBandNextORT[137] = 1;\nisoBandNextXRB[137] = 0;\nisoBandNextYRB[137] = 1;\nisoBandNextORB[137] = 0;\nisoBandNextXBL[137] = -1;\nisoBandNextYBL[137] = 0;\nisoBandNextOBL[137] = 0;\nisoBandNextXLB[137] = 0;\nisoBandNextYLB[137] = -1;\nisoBandNextOLB[137] = 0;\nisoBandNextXTL[137] = 1;\nisoBandNextYTL[137] = 0;\nisoBandNextOTL[137] = 0;\nisoBandNextXTR[137] = 1;\nisoBandNextYTR[137] = 0;\nisoBandNextOTR[137] = 1;\n\nisoBandNextXRT[139] = 0;\nisoBandNextYRT[139] = 1;\nisoBandNextORT[139] = 1;\nisoBandNextXRB[139] = 0;\nisoBandNextYRB[139] = -1;\nisoBandNextORB[139] = 0;\nisoBandNextXBL[139] = 1;\nisoBandNextYBL[139] = 0;\nisoBandNextOBL[139] = 0;\nisoBandNextXLB[139] = 0;\nisoBandNextYLB[139] = 1;\nisoBandNextOLB[139] = 0;\nisoBandNextXTL[139] = -1;\nisoBandNextYTL[139] = 0;\nisoBandNextOTL[139] = 0;\nisoBandNextXTR[139] = 1;\nisoBandNextYTR[139] = 0;\nisoBandNextOTR[139] = 1;\n\nisoBandNextXRT[98] = 0;\nisoBandNextYRT[98] = -1;\nisoBandNextORT[98] = 0;\nisoBandNextXRB[98] = 0;\nisoBandNextYRB[98] = -1;\nisoBandNextORB[98] = 1;\nisoBandNextXBR[98] = 1;\nisoBandNextYBR[98] = 0;\nisoBandNextOBR[98] = 0;\nisoBandNextXBL[98] = 1;\nisoBandNextYBL[98] = 0;\nisoBandNextOBL[98] = 1;\nisoBandNextXLT[98] = 0;\nisoBandNextYLT[98] = 1;\nisoBandNextOLT[98] = 0;\nisoBandNextXTL[98] = -1;\nisoBandNextYTL[98] = 0;\nisoBandNextOTL[98] = 1;\n\nisoBandNextXRT[99] = 0;\nisoBandNextYRT[99] = 1;\nisoBandNextORT[99] = 0;\nisoBandNextXRB[99] = 0;\nisoBandNextYRB[99] = -1;\nisoBandNextORB[99] = 1;\nisoBandNextXBR[99] = 1;\nisoBandNextYBR[99] = 0;\nisoBandNextOBR[99] = 0;\nisoBandNextXBL[99] = -1;\nisoBandNextYBL[99] = 0;\nisoBandNextOBL[99] = 1;\nisoBandNextXLT[99] = 0;\nisoBandNextYLT[99] = -1;\nisoBandNextOLT[99] = 0;\nisoBandNextXTL[99] = 1;\nisoBandNextYTL[99] = 0;\nisoBandNextOTL[99] = 1;\n\nisoBandNextXRB[38] = 0;\nisoBandNextYRB[38] = -1;\nisoBandNextORB[38] = 1;\nisoBandNextXBR[38] = 1;\nisoBandNextYBR[38] = 0;\nisoBandNextOBR[38] = 0;\nisoBandNextXLB[38] = 0;\nisoBandNextYLB[38] = 1;\nisoBandNextOLB[38] = 1;\nisoBandNextXLT[38] = 0;\nisoBandNextYLT[38] = 1;\nisoBandNextOLT[38] = 0;\nisoBandNextXTL[38] = -1;\nisoBandNextYTL[38] = 0;\nisoBandNextOTL[38] = 1;\nisoBandNextXTR[38] = -1;\nisoBandNextYTR[38] = 0;\nisoBandNextOTR[38] = 0;\n\nisoBandNextXRB[39] = 0;\nisoBandNextYRB[39] = 1;\nisoBandNextORB[39] = 1;\nisoBandNextXBR[39] = -1;\nisoBandNextYBR[39] = 0;\nisoBandNextOBR[39] = 0;\nisoBandNextXLB[39] = 0;\nisoBandNextYLB[39] = -1;\nisoBandNextOLB[39] = 1;\nisoBandNextXLT[39] = 0;\nisoBandNextYLT[39] = 1;\nisoBandNextOLT[39] = 0;\nisoBandNextXTL[39] = -1;\nisoBandNextYTL[39] = 0;\nisoBandNextOTL[39] = 1;\nisoBandNextXTR[39] = 1;\nisoBandNextYTR[39] = 0;\nisoBandNextOTR[39] = 0;\n\n/*\n  Define helper functions for the polygon_table\n  */\n\n/* triangle cases */\nvar p00 = function (cell) {\n  return [\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n  ];\n};\nvar p01 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [cell.bottomright, 0],\n  ];\n};\nvar p02 = function (cell) {\n  return [\n    [cell.topright, 1],\n    [1, 1],\n    [1, cell.righttop],\n  ];\n};\nvar p03 = function (cell) {\n  return [\n    [0, cell.lefttop],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* trapezoid cases */\nvar p04 = function (cell) {\n  return [\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n  ];\n};\nvar p05 = function (cell) {\n  return [\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n  ];\n};\nvar p06 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\nvar p07 = function (cell) {\n  return [\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\n/* rectangle cases */\nvar p08 = function (cell) {\n  return [\n    [0, 0],\n    [0, cell.leftbottom],\n    [1, cell.rightbottom],\n    [1, 0],\n  ];\n};\nvar p09 = function (cell) {\n  return [\n    [1, 0],\n    [cell.bottomright, 0],\n    [cell.topright, 1],\n    [1, 1],\n  ];\n};\nvar p10 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [0, cell.lefttop],\n    [0, 1],\n  ];\n};\nvar p11 = function (cell) {\n  return [\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\nvar p12 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n  ];\n};\nvar p13 = function (cell) {\n  return [\n    [cell.topleft, 1],\n    [cell.topright, 1],\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n  ];\n};\n/* square case */\nvar p14 = function () {\n  return [\n    [0, 0],\n    [0, 1],\n    [1, 1],\n    [1, 0],\n  ];\n};\n/* pentagon cases */\nvar p15 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [0, 0],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1211 || 1011 */\nvar p16 = function (cell) {\n  return [\n    [cell.topright, 1],\n    [1, 1],\n    [1, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n  ];\n};\n/* 2111 || 0111 */\nvar p17 = function (cell) {\n  return [\n    [1, 0],\n    [cell.bottomright, 0],\n    [0, cell.lefttop],\n    [0, 1],\n    [1, 1],\n  ];\n};\n/* 1112 || 1110 */\nvar p18 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, 1],\n  ];\n};\n/* 1121 || 1101 */\nvar p19 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [0, cell.lefttop],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1200 || 1022 */\nvar p20 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [cell.topright, 1],\n  ];\n};\n/* 0120 || 2102 */\nvar p21 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [cell.bottomright, 0],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n  ];\n};\n/* 0012 || 2210 */\nvar p22 = function (cell) {\n  return [\n    [cell.topright, 1],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n    [cell.topleft, 1],\n  ];\n};\n/* 2001 || 0221 */\nvar p23 = function (cell) {\n  return [\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [0, cell.lefttop],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1002 || 1220 */\nvar p24 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n    [cell.topright, 1],\n  ];\n};\n/* 2100 || 0122 */\nvar p25 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [cell.bottomright, 0],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\n/* 0210 || 2012 */\nvar p26 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n  ];\n};\n/* 0021 || 2201 */\n/*hexagon cases */\nvar p27 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\n/* 0211 || 2011 */\nvar p28 = function (cell) {\n  return [\n    [1, 1],\n    [1, 0],\n    [cell.bottomright, 0],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n    [cell.topright, 1],\n  ];\n};\n/* 2110 || 0112 */\nvar p29 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [0, cell.lefttop],\n    [0, 1],\n  ];\n};\n/* 1102 || 1120 */\nvar p30 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1021 || 1201 */\nvar p31 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n    [cell.topright, 1],\n  ];\n};\n/* 2101 || 0121 */\nvar p32 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [cell.bottomright, 0],\n    [0, cell.lefttop],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1012 || 1210 */\n/* 8-sided cases */\nvar p33 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\n/* flipped == 1 state for 0202 and 2020 */\n/* 6-sided cases */\nvar p34 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n    [cell.topright, 1],\n  ];\n};\n/* 0101 with flipped == 1 || 2121 with flipped == 1 */\nvar p35 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [cell.bottomright, 0],\n    [0, cell.lefttop],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1010 with flipped == 1 || 1212 with flipped == 1 */\n/* 7-sided cases */\nvar p36 = function (cell) {\n  return [\n    [1, 1],\n    [1, cell.righttop],\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n    [cell.topright, 1],\n  ];\n};\n/* 2120 with flipped == 1 || 0102 with flipped == 1 */\nvar p37 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [cell.bottomleft, 0],\n    [0, 0],\n    [0, cell.leftbottom],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\n/* 2021 with flipped == 1 || 0201 with flipped == 1 */\nvar p38 = function (cell) {\n  return [\n    [1, cell.righttop],\n    [1, cell.rightbottom],\n    [cell.bottomright, 0],\n    [cell.bottomleft, 0],\n    [0, cell.lefttop],\n    [0, 1],\n    [cell.topleft, 1],\n  ];\n};\n/* 1202 with flipped == 1 || 1020 with flipped == 1 */\nvar p39 = function (cell) {\n  return [\n    [1, cell.rightbottom],\n    [1, 0],\n    [cell.bottomright, 0],\n    [0, cell.leftbottom],\n    [0, cell.lefttop],\n    [cell.topleft, 1],\n    [cell.topright, 1],\n  ];\n};\n/* 0212 with flipped == 1 || 2010 with flipped == 1 */\n\n/*\n  The lookup tables for edge number given the polygon\n  is entered at a specific location\n*/\n\nvar isoBandEdgeRT = [];\nvar isoBandEdgeRB = [];\nvar isoBandEdgeBR = [];\nvar isoBandEdgeBL = [];\nvar isoBandEdgeLB = [];\nvar isoBandEdgeLT = [];\nvar isoBandEdgeTL = [];\nvar isoBandEdgeTR = [];\n\n/* triangle cases */\nisoBandEdgeBL[1] = isoBandEdgeLB[1] = 18;\nisoBandEdgeBL[169] = isoBandEdgeLB[169] = 18;\nisoBandEdgeBR[4] = isoBandEdgeRB[4] = 12;\nisoBandEdgeBR[166] = isoBandEdgeRB[166] = 12;\nisoBandEdgeRT[16] = isoBandEdgeTR[16] = 4;\nisoBandEdgeRT[154] = isoBandEdgeTR[154] = 4;\nisoBandEdgeLT[64] = isoBandEdgeTL[64] = 22;\nisoBandEdgeLT[106] = isoBandEdgeTL[106] = 22;\n\n/* trapezoid cases */\nisoBandEdgeBR[2] = isoBandEdgeLT[2] = 17;\nisoBandEdgeBL[2] = isoBandEdgeLB[2] = 18;\nisoBandEdgeBR[168] = isoBandEdgeLT[168] = 17;\nisoBandEdgeBL[168] = isoBandEdgeLB[168] = 18;\nisoBandEdgeRT[8] = isoBandEdgeBL[8] = 9;\nisoBandEdgeRB[8] = isoBandEdgeBR[8] = 12;\nisoBandEdgeRT[162] = isoBandEdgeBL[162] = 9;\nisoBandEdgeRB[162] = isoBandEdgeBR[162] = 12;\nisoBandEdgeRT[32] = isoBandEdgeTR[32] = 4;\nisoBandEdgeRB[32] = isoBandEdgeTL[32] = 1;\nisoBandEdgeRT[138] = isoBandEdgeTR[138] = 4;\nisoBandEdgeRB[138] = isoBandEdgeTL[138] = 1;\nisoBandEdgeLB[128] = isoBandEdgeTR[128] = 21;\nisoBandEdgeLT[128] = isoBandEdgeTL[128] = 22;\nisoBandEdgeLB[42] = isoBandEdgeTR[42] = 21;\nisoBandEdgeLT[42] = isoBandEdgeTL[42] = 22;\n\n/* rectangle cases */\nisoBandEdgeRB[5] = isoBandEdgeLB[5] = 14;\nisoBandEdgeRB[165] = isoBandEdgeLB[165] = 14;\nisoBandEdgeBR[20] = isoBandEdgeTR[20] = 6;\nisoBandEdgeBR[150] = isoBandEdgeTR[150] = 6;\nisoBandEdgeRT[80] = isoBandEdgeLT[80] = 11;\nisoBandEdgeRT[90] = isoBandEdgeLT[90] = 11;\nisoBandEdgeBL[65] = isoBandEdgeTL[65] = 3;\nisoBandEdgeBL[105] = isoBandEdgeTL[105] = 3;\nisoBandEdgeRT[160] = isoBandEdgeLT[160] = 11;\nisoBandEdgeRB[160] = isoBandEdgeLB[160] = 14;\nisoBandEdgeRT[10] = isoBandEdgeLT[10] = 11;\nisoBandEdgeRB[10] = isoBandEdgeLB[10] = 14;\nisoBandEdgeBR[130] = isoBandEdgeTR[130] = 6;\nisoBandEdgeBL[130] = isoBandEdgeTL[130] = 3;\nisoBandEdgeBR[40] = isoBandEdgeTR[40] = 6;\nisoBandEdgeBL[40] = isoBandEdgeTL[40] = 3;\n\n/* pentagon cases */\nisoBandEdgeRB[101] = isoBandEdgeTL[101] = 1;\nisoBandEdgeRB[69] = isoBandEdgeTL[69] = 1;\nisoBandEdgeLB[149] = isoBandEdgeTR[149] = 21;\nisoBandEdgeLB[21] = isoBandEdgeTR[21] = 21;\nisoBandEdgeBR[86] = isoBandEdgeLT[86] = 17;\nisoBandEdgeBR[84] = isoBandEdgeLT[84] = 17;\nisoBandEdgeRT[89] = isoBandEdgeBL[89] = 9;\nisoBandEdgeRT[81] = isoBandEdgeBL[81] = 9;\nisoBandEdgeRT[96] = isoBandEdgeTL[96] = 0;\nisoBandEdgeRB[96] = isoBandEdgeLT[96] = 15;\nisoBandEdgeRT[74] = isoBandEdgeTL[74] = 0;\nisoBandEdgeRB[74] = isoBandEdgeLT[74] = 15;\nisoBandEdgeRT[24] = isoBandEdgeBR[24] = 8;\nisoBandEdgeBL[24] = isoBandEdgeTR[24] = 7;\nisoBandEdgeRT[146] = isoBandEdgeBR[146] = 8;\nisoBandEdgeBL[146] = isoBandEdgeTR[146] = 7;\nisoBandEdgeRB[6] = isoBandEdgeLT[6] = 15;\nisoBandEdgeBR[6] = isoBandEdgeLB[6] = 16;\nisoBandEdgeRB[164] = isoBandEdgeLT[164] = 15;\nisoBandEdgeBR[164] = isoBandEdgeLB[164] = 16;\nisoBandEdgeBL[129] = isoBandEdgeTR[129] = 7;\nisoBandEdgeLB[129] = isoBandEdgeTL[129] = 20;\nisoBandEdgeBL[41] = isoBandEdgeTR[41] = 7;\nisoBandEdgeLB[41] = isoBandEdgeTL[41] = 20;\nisoBandEdgeBR[66] = isoBandEdgeTL[66] = 2;\nisoBandEdgeBL[66] = isoBandEdgeLT[66] = 19;\nisoBandEdgeBR[104] = isoBandEdgeTL[104] = 2;\nisoBandEdgeBL[104] = isoBandEdgeLT[104] = 19;\nisoBandEdgeRT[144] = isoBandEdgeLB[144] = 10;\nisoBandEdgeLT[144] = isoBandEdgeTR[144] = 23;\nisoBandEdgeRT[26] = isoBandEdgeLB[26] = 10;\nisoBandEdgeLT[26] = isoBandEdgeTR[26] = 23;\nisoBandEdgeRB[36] = isoBandEdgeTR[36] = 5;\nisoBandEdgeBR[36] = isoBandEdgeTL[36] = 2;\nisoBandEdgeRB[134] = isoBandEdgeTR[134] = 5;\nisoBandEdgeBR[134] = isoBandEdgeTL[134] = 2;\nisoBandEdgeRT[9] = isoBandEdgeLB[9] = 10;\nisoBandEdgeRB[9] = isoBandEdgeBL[9] = 13;\nisoBandEdgeRT[161] = isoBandEdgeLB[161] = 10;\nisoBandEdgeRB[161] = isoBandEdgeBL[161] = 13;\n\n/* hexagon cases */\nisoBandEdgeRB[37] = isoBandEdgeTR[37] = 5;\nisoBandEdgeLB[37] = isoBandEdgeTL[37] = 20;\nisoBandEdgeRB[133] = isoBandEdgeTR[133] = 5;\nisoBandEdgeLB[133] = isoBandEdgeTL[133] = 20;\nisoBandEdgeBR[148] = isoBandEdgeLB[148] = 16;\nisoBandEdgeLT[148] = isoBandEdgeTR[148] = 23;\nisoBandEdgeBR[22] = isoBandEdgeLB[22] = 16;\nisoBandEdgeLT[22] = isoBandEdgeTR[22] = 23;\nisoBandEdgeRT[82] = isoBandEdgeBR[82] = 8;\nisoBandEdgeBL[82] = isoBandEdgeLT[82] = 19;\nisoBandEdgeRT[88] = isoBandEdgeBR[88] = 8;\nisoBandEdgeBL[88] = isoBandEdgeLT[88] = 19;\nisoBandEdgeRT[73] = isoBandEdgeTL[73] = 0;\nisoBandEdgeRB[73] = isoBandEdgeBL[73] = 13;\nisoBandEdgeRT[97] = isoBandEdgeTL[97] = 0;\nisoBandEdgeRB[97] = isoBandEdgeBL[97] = 13;\nisoBandEdgeRT[145] = isoBandEdgeBL[145] = 9;\nisoBandEdgeLB[145] = isoBandEdgeTR[145] = 21;\nisoBandEdgeRT[25] = isoBandEdgeBL[25] = 9;\nisoBandEdgeLB[25] = isoBandEdgeTR[25] = 21;\nisoBandEdgeRB[70] = isoBandEdgeTL[70] = 1;\nisoBandEdgeBR[70] = isoBandEdgeLT[70] = 17;\nisoBandEdgeRB[100] = isoBandEdgeTL[100] = 1;\nisoBandEdgeBR[100] = isoBandEdgeLT[100] = 17;\n\n/* 8-sided cases */\nisoBandEdgeRT[34] = isoBandEdgeBL[34] = 9;\nisoBandEdgeRB[34] = isoBandEdgeBR[34] = 12;\nisoBandEdgeLB[34] = isoBandEdgeTR[34] = 21;\nisoBandEdgeLT[34] = isoBandEdgeTL[34] = 22;\nisoBandEdgeRT[136] = isoBandEdgeTR[136] = 4;\nisoBandEdgeRB[136] = isoBandEdgeTL[136] = 1;\nisoBandEdgeBR[136] = isoBandEdgeLT[136] = 17;\nisoBandEdgeBL[136] = isoBandEdgeLB[136] = 18;\nisoBandEdgeRT[35] = isoBandEdgeTR[35] = 4;\nisoBandEdgeRB[35] = isoBandEdgeBR[35] = 12;\nisoBandEdgeBL[35] = isoBandEdgeLB[35] = 18;\nisoBandEdgeLT[35] = isoBandEdgeTL[35] = 22;\n\n/* 6-sided cases */\nisoBandEdgeRT[153] = isoBandEdgeTR[153] = 4;\nisoBandEdgeBL[153] = isoBandEdgeLB[153] = 18;\nisoBandEdgeRB[102] = isoBandEdgeBR[102] = 12;\nisoBandEdgeLT[102] = isoBandEdgeTL[102] = 22;\nisoBandEdgeRT[155] = isoBandEdgeBL[155] = 9;\nisoBandEdgeLB[155] = isoBandEdgeTR[155] = 23;\nisoBandEdgeRB[103] = isoBandEdgeTL[103] = 1;\nisoBandEdgeBR[103] = isoBandEdgeLT[103] = 17;\n\n/* 7-sided cases */\nisoBandEdgeRT[152] = isoBandEdgeTR[152] = 4;\nisoBandEdgeBR[152] = isoBandEdgeLT[152] = 17;\nisoBandEdgeBL[152] = isoBandEdgeLB[152] = 18;\nisoBandEdgeRT[156] = isoBandEdgeBR[156] = 8;\nisoBandEdgeBL[156] = isoBandEdgeLB[156] = 18;\nisoBandEdgeLT[156] = isoBandEdgeTR[156] = 23;\nisoBandEdgeRT[137] = isoBandEdgeTR[137] = 4;\nisoBandEdgeRB[137] = isoBandEdgeTL[137] = 1;\nisoBandEdgeBL[137] = isoBandEdgeLB[137] = 18;\nisoBandEdgeRT[139] = isoBandEdgeTR[139] = 4;\nisoBandEdgeRB[139] = isoBandEdgeBL[139] = 13;\nisoBandEdgeLB[139] = isoBandEdgeTL[139] = 20;\nisoBandEdgeRT[98] = isoBandEdgeBL[98] = 9;\nisoBandEdgeRB[98] = isoBandEdgeBR[98] = 12;\nisoBandEdgeLT[98] = isoBandEdgeTL[98] = 22;\nisoBandEdgeRT[99] = isoBandEdgeTL[99] = 0;\nisoBandEdgeRB[99] = isoBandEdgeBR[99] = 12;\nisoBandEdgeBL[99] = isoBandEdgeLT[99] = 19;\nisoBandEdgeRB[38] = isoBandEdgeBR[38] = 12;\nisoBandEdgeLB[38] = isoBandEdgeTR[38] = 21;\nisoBandEdgeLT[38] = isoBandEdgeTL[38] = 22;\nisoBandEdgeRB[39] = isoBandEdgeTR[39] = 5;\nisoBandEdgeBR[39] = isoBandEdgeLB[39] = 16;\nisoBandEdgeLT[39] = isoBandEdgeTL[39] = 22;\n\n/*\n  The lookup tables for all different polygons that\n  may appear within a grid cell\n*/\n\nvar polygon_table = [];\n\n/* triangle cases */\npolygon_table[1] = polygon_table[169] = p00; /* 2221 || 0001 */\npolygon_table[4] = polygon_table[166] = p01; /* 2212 || 0010 */\npolygon_table[16] = polygon_table[154] = p02; /* 2122 || 0100 */\npolygon_table[64] = polygon_table[106] = p03; /* 1222 || 1000 */\n\n/* trapezoid cases */\npolygon_table[168] = polygon_table[2] = p04; /* 2220 || 0002 */\npolygon_table[162] = polygon_table[8] = p05; /* 2202 || 0020 */\npolygon_table[138] = polygon_table[32] = p06; /* 2022 || 0200 */\npolygon_table[42] = polygon_table[128] = p07; /* 0222 || 2000 */\n\n/* rectangle cases */\npolygon_table[5] = polygon_table[165] = p08; /* 0011 || 2211 */\npolygon_table[20] = polygon_table[150] = p09; /* 0110 || 2112 */\npolygon_table[80] = polygon_table[90] = p10; /* 1100 || 1122 */\npolygon_table[65] = polygon_table[105] = p11; /* 1001 || 1221 */\npolygon_table[160] = polygon_table[10] = p12; /* 2200 || 0022 */\npolygon_table[130] = polygon_table[40] = p13; /* 2002 || 0220 */\n\n/* square case */\npolygon_table[85] = p14; /* 1111 */\n\n/* pentagon cases */\npolygon_table[101] = polygon_table[69] = p15; /* 1211 || 1011 */\npolygon_table[149] = polygon_table[21] = p16; /* 2111 || 0111 */\npolygon_table[86] = polygon_table[84] = p17; /* 1112 || 1110 */\npolygon_table[89] = polygon_table[81] = p18; /* 1121 || 1101 */\npolygon_table[96] = polygon_table[74] = p19; /* 1200 || 1022 */\npolygon_table[24] = polygon_table[146] = p20; /* 0120 || 2102 */\npolygon_table[6] = polygon_table[164] = p21; /* 0012 || 2210 */\npolygon_table[129] = polygon_table[41] = p22; /* 2001 || 0221 */\npolygon_table[66] = polygon_table[104] = p23; /* 1002 || 1220 */\npolygon_table[144] = polygon_table[26] = p24; /* 2100 || 0122 */\npolygon_table[36] = polygon_table[134] = p25; /* 0210 || 2012 */\npolygon_table[9] = polygon_table[161] = p26; /* 0021 || 2201 */\n\n/* hexagon cases */\npolygon_table[37] = polygon_table[133] = p27; /* 0211 || 2011 */\npolygon_table[148] = polygon_table[22] = p28; /* 2110 || 0112 */\npolygon_table[82] = polygon_table[88] = p29; /* 1102 || 1120 */\npolygon_table[73] = polygon_table[97] = p30; /* 1021 || 1201 */\npolygon_table[145] = polygon_table[25] = p31; /* 2101 || 0121 */\npolygon_table[70] = polygon_table[100] = p32; /* 1012 || 1210 */\n\n/* 8-sided cases */\npolygon_table[34] = function (c) {\n  return [p07(c), p05(c)];\n}; /* 0202 || 2020 with flipped == 0 */\npolygon_table[35] = p33; /* flipped == 1 state for 0202 and 2020 */\npolygon_table[136] = function (c) {\n  return [p06(c), p04(c)];\n}; /* 2020 || 0202 with flipped == 0 */\n\n/* 6-sided cases */\npolygon_table[153] = function (c) {\n  return [p02(c), p00(c)];\n}; /* 0101 with flipped == 0 || 2121 with flipped == 2 */\npolygon_table[102] = function (c) {\n  return [p01(c), p03(c)];\n}; /* 1010 with flipped == 0 || 1212 with flipped == 2 */\npolygon_table[155] = p34; /* 0101 with flipped == 1 || 2121 with flipped == 1 */\npolygon_table[103] = p35; /* 1010 with flipped == 1 || 1212 with flipped == 1 */\n\n/* 7-sided cases */\npolygon_table[152] = function (c) {\n  return [p02(c), p04(c)];\n}; /* 2120 with flipped == 2 || 0102 with flipped == 0 */\npolygon_table[156] = p36; /* 2120 with flipped == 1 || 0102 with flipped == 1 */\npolygon_table[137] = function (c) {\n  return [p06(c), p00(c)];\n}; /* 2021 with flipped == 2 || 0201 with flipped == 0 */\npolygon_table[139] = p37; /* 2021 with flipped == 1 || 0201 with flipped == 1 */\npolygon_table[98] = function (c) {\n  return [p05(c), p03(c)];\n}; /* 1202 with flipped == 2 || 1020 with flipped == 0 */\npolygon_table[99] = p38; /* 1202 with flipped == 1 || 1020 with flipped == 1 */\npolygon_table[38] = function (c) {\n  return [p01(c), p07(c)];\n}; /* 0212 with flipped == 2 || 2010 with flipped == 0 */\npolygon_table[39] = p39; /* 0212 with flipped == 1 || 2010 with flipped == 1 */\n\n/*\n####################################\nSome small helper functions\n####################################\n*/\n\n/* assume that x1 == 1 &&  x0 == 0 */\nfunction interpolateX(y, y0, y1) {\n  return (y - y0) / (y1 - y0);\n}\n\nfunction isArray(myArray) {\n  return myArray.constructor.toString().indexOf(\"Array\") > -1;\n}\n\n/*\n####################################\nBelow is the actual Marching Squares implementation\n####################################\n*/\n\nfunction computeBandGrid(data, minV, bandwidth) {\n  var rows = data.length - 1;\n  var cols = data[0].length - 1;\n  var BandGrid = { rows: rows, cols: cols, cells: [] };\n\n  var maxV = minV + Math.abs(bandwidth);\n\n  for (var j = 0; j < rows; ++j) {\n    BandGrid.cells[j] = [];\n    for (var i = 0; i < cols; ++i) {\n      /*  compose the 4-trit corner representation */\n      var cval = 0;\n\n      var tl = data[j + 1][i];\n      var tr = data[j + 1][i + 1];\n      var br = data[j][i + 1];\n      var bl = data[j][i];\n\n      if (isNaN(tl) || isNaN(tr) || isNaN(br) || isNaN(bl)) {\n        continue;\n      }\n\n      cval |= tl < minV ? 0 : tl > maxV ? 128 : 64;\n      cval |= tr < minV ? 0 : tr > maxV ? 32 : 16;\n      cval |= br < minV ? 0 : br > maxV ? 8 : 4;\n      cval |= bl < minV ? 0 : bl > maxV ? 2 : 1;\n\n      var cval_real = +cval;\n\n      /* resolve ambiguity via averaging */\n      var flipped = 0;\n      if (\n        cval === 17 /* 0101 */ ||\n        cval === 18 /* 0102 */ ||\n        cval === 33 /* 0201 */ ||\n        cval === 34 /* 0202 */ ||\n        cval === 38 /* 0212 */ ||\n        cval === 68 /* 1010 */ ||\n        cval === 72 /* 1020 */ ||\n        cval === 98 /* 1202 */ ||\n        cval === 102 /* 1212 */ ||\n        cval === 132 /* 2010 */ ||\n        cval === 136 /* 2020 */ ||\n        cval === 137 /* 2021 */ ||\n        cval === 152 /* 2120 */ ||\n        cval === 153 /* 2121 */\n      ) {\n        var average = (tl + tr + br + bl) / 4;\n        /* set flipped state */\n        flipped = average > maxV ? 2 : average < minV ? 0 : 1;\n\n        /* adjust cval for flipped cases */\n\n        /* 8-sided cases */\n        if (cval === 34) {\n          if (flipped === 1) {\n            cval = 35;\n          } else if (flipped === 0) {\n            cval = 136;\n          }\n        } else if (cval === 136) {\n          if (flipped === 1) {\n            cval = 35;\n            flipped = 4;\n          } else if (flipped === 0) {\n            cval = 34;\n          }\n        } else if (cval === 17) {\n          /* 6-sided polygon cases */\n          if (flipped === 1) {\n            cval = 155;\n            flipped = 4;\n          } else if (flipped === 0) {\n            cval = 153;\n          }\n        } else if (cval === 68) {\n          if (flipped === 1) {\n            cval = 103;\n            flipped = 4;\n          } else if (flipped === 0) {\n            cval = 102;\n          }\n        } else if (cval === 153) {\n          if (flipped === 1) cval = 155;\n        } else if (cval === 102) {\n          if (flipped === 1) cval = 103;\n        } else if (cval === 152) {\n          /* 7-sided polygon cases */\n          if (flipped < 2) {\n            cval = 156;\n            flipped = 1;\n          }\n        } else if (cval === 137) {\n          if (flipped < 2) {\n            cval = 139;\n            flipped = 1;\n          }\n        } else if (cval === 98) {\n          if (flipped < 2) {\n            cval = 99;\n            flipped = 1;\n          }\n        } else if (cval === 38) {\n          if (flipped < 2) {\n            cval = 39;\n            flipped = 1;\n          }\n        } else if (cval === 18) {\n          if (flipped > 0) {\n            cval = 156;\n            flipped = 4;\n          } else {\n            cval = 152;\n          }\n        } else if (cval === 33) {\n          if (flipped > 0) {\n            cval = 139;\n            flipped = 4;\n          } else {\n            cval = 137;\n          }\n        } else if (cval === 72) {\n          if (flipped > 0) {\n            cval = 99;\n            flipped = 4;\n          } else {\n            cval = 98;\n          }\n        } else if (cval === 132) {\n          if (flipped > 0) {\n            cval = 39;\n            flipped = 4;\n          } else {\n            cval = 38;\n          }\n        }\n      }\n\n      /* add cell to BandGrid if it contains at least one polygon-side */\n      if (cval != 0 && cval != 170) {\n        var topleft,\n          topright,\n          bottomleft,\n          bottomright,\n          righttop,\n          rightbottom,\n          lefttop,\n          leftbottom;\n\n        topleft = topright = bottomleft = bottomright = righttop = rightbottom = lefttop = leftbottom = 0.5;\n\n        var edges = [];\n\n        /* do interpolation here */\n        /* 1st Triangles */\n        if (cval === 1) {\n          /* 0001 */\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 169) {\n          /* 2221 */\n          bottomleft = interpolateX(maxV, bl, br);\n          leftbottom = interpolateX(maxV, bl, tl);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 4) {\n          /* 0010 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          bottomright = interpolateX(minV, bl, br);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 166) {\n          /* 2212 */\n          rightbottom = interpolateX(maxV, br, tr);\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 16) {\n          /* 0100 */\n          righttop = interpolateX(minV, br, tr);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n        } else if (cval === 154) {\n          /* 2122 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n        } else if (cval === 64) {\n          /* 1000 */\n          lefttop = interpolateX(minV, bl, tl);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 106) {\n          /* 1222 */\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 168) {\n          /* 2nd Trapezoids */\n          /* 2220 */\n          bottomright = interpolateX(maxV, bl, br);\n          bottomleft = interpolateX(minV, bl, br);\n          leftbottom = interpolateX(minV, bl, tl);\n          lefttop = interpolateX(maxV, bl, tl);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 2) {\n          /* 0002 */\n          bottomright = 1 - interpolateX(minV, br, bl);\n          bottomleft = 1 - interpolateX(maxV, br, bl);\n          leftbottom = 1 - interpolateX(maxV, tl, bl);\n          lefttop = 1 - interpolateX(minV, tl, bl);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 162) {\n          /* 2202 */\n          righttop = interpolateX(maxV, br, tr);\n          rightbottom = interpolateX(minV, br, tr);\n          bottomright = 1 - interpolateX(minV, br, bl);\n          bottomleft = 1 - interpolateX(maxV, br, bl);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 8) {\n          /* 0020 */\n          righttop = 1 - interpolateX(minV, tr, br);\n          rightbottom = 1 - interpolateX(maxV, tr, br);\n          bottomright = interpolateX(maxV, bl, br);\n          bottomleft = interpolateX(minV, bl, br);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 138) {\n          /* 2022 */\n          righttop = 1 - interpolateX(minV, tr, br);\n          rightbottom = 1 - interpolateX(maxV, tr, br);\n          topleft = 1 - interpolateX(maxV, tr, tl);\n          topright = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 32) {\n          /* 0200 */\n          righttop = interpolateX(maxV, br, tr);\n          rightbottom = interpolateX(minV, br, tr);\n          topleft = interpolateX(minV, tl, tr);\n          topright = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 42) {\n          /* 0222 */\n          leftbottom = 1 - interpolateX(maxV, tl, bl);\n          lefttop = 1 - interpolateX(minV, tl, bl);\n          topleft = interpolateX(minV, tl, tr);\n          topright = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeLB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 128) {\n          /* 2000 */\n          leftbottom = interpolateX(minV, bl, tl);\n          lefttop = interpolateX(maxV, bl, tl);\n          topleft = 1 - interpolateX(maxV, tr, tl);\n          topright = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeLB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        }\n\n        /* 3rd rectangle cases */\n        if (cval === 5) {\n          /* 0011 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 165) {\n          /* 2211 */\n          rightbottom = interpolateX(maxV, br, tr);\n          leftbottom = interpolateX(maxV, bl, tl);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 20) {\n          /* 0110 */\n          bottomright = interpolateX(minV, bl, br);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 150) {\n          /* 2112 */\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 80) {\n          /* 1100 */\n          righttop = interpolateX(minV, br, tr);\n          lefttop = interpolateX(minV, bl, tl);\n          edges.push(isoBandEdgeRT[cval]);\n        } else if (cval === 90) {\n          /* 1122 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          edges.push(isoBandEdgeRT[cval]);\n        } else if (cval === 65) {\n          /* 1001 */\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 105) {\n          /* 1221 */\n          bottomleft = interpolateX(maxV, bl, br);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 160) {\n          /* 2200 */\n          righttop = interpolateX(maxV, br, tr);\n          rightbottom = interpolateX(minV, br, tr);\n          leftbottom = interpolateX(minV, bl, tl);\n          lefttop = interpolateX(maxV, bl, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 10) {\n          /* 0022 */\n          righttop = 1 - interpolateX(minV, tr, br);\n          rightbottom = 1 - interpolateX(maxV, tr, br);\n          leftbottom = 1 - interpolateX(maxV, tl, bl);\n          lefttop = 1 - interpolateX(minV, tl, bl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 130) {\n          /* 2002 */\n          bottomright = 1 - interpolateX(minV, br, bl);\n          bottomleft = 1 - interpolateX(maxV, br, bl);\n          topleft = 1 - interpolateX(maxV, tr, tl);\n          topright = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 40) {\n          /* 0220 */\n          bottomright = interpolateX(maxV, bl, br);\n          bottomleft = interpolateX(minV, bl, br);\n          topleft = interpolateX(minV, tl, tr);\n          topright = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 101) {\n          /* 4th single pentagon cases */\n          /* 1211 */\n          rightbottom = interpolateX(maxV, br, tr);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 69) {\n          /* 1011 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 149) {\n          /* 2111 */\n          leftbottom = interpolateX(maxV, bl, tl);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 21) {\n          /* 0111 */\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 86) {\n          /* 1112 */\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 84) {\n          /* 1110 */\n          bottomright = interpolateX(minV, bl, br);\n          lefttop = interpolateX(minV, bl, tl);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 89) {\n          /* 1121 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          bottomleft = interpolateX(maxV, bl, br);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 81) {\n          /* 1101 */\n          righttop = interpolateX(minV, br, tr);\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 96) {\n          /* 1200 */\n          righttop = interpolateX(maxV, br, tr);\n          rightbottom = interpolateX(minV, br, tr);\n          lefttop = interpolateX(minV, bl, tl);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 74) {\n          /* 1022 */\n          righttop = 1 - interpolateX(minV, tr, br);\n          rightbottom = 1 - interpolateX(maxV, tr, br);\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 24) {\n          /* 0120 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          bottomright = interpolateX(maxV, bl, br);\n          bottomleft = interpolateX(minV, bl, br);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 146) {\n          /* 2102 */\n          righttop = interpolateX(minV, br, tr);\n          bottomright = 1 - interpolateX(minV, br, bl);\n          bottomleft = 1 - interpolateX(maxV, br, bl);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 6) {\n          /* 0012 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          leftbottom = 1 - interpolateX(maxV, tl, bl);\n          lefttop = 1 - interpolateX(minV, tl, bl);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 164) {\n          /* 2210 */\n          rightbottom = interpolateX(maxV, br, tr);\n          bottomright = interpolateX(minV, bl, br);\n          leftbottom = interpolateX(minV, bl, tl);\n          lefttop = interpolateX(maxV, bl, tl);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 129) {\n          /* 2001 */\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          leftbottom = interpolateX(maxV, bl, tl);\n          topleft = 1 - interpolateX(maxV, tr, tl);\n          topright = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeBL[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 41) {\n          /* 0221 */\n          bottomleft = interpolateX(maxV, bl, br);\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          topleft = interpolateX(minV, tl, tr);\n          topright = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeBL[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 66) {\n          /* 1002 */\n          bottomright = 1 - interpolateX(minV, br, bl);\n          bottomleft = 1 - interpolateX(maxV, br, bl);\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 104) {\n          /* 1220 */\n          bottomright = interpolateX(maxV, bl, br);\n          bottomleft = interpolateX(minV, bl, br);\n          lefttop = interpolateX(minV, bl, tl);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeBL[cval]);\n          edges.push(isoBandEdgeTL[cval]);\n        } else if (cval === 144) {\n          /* 2100 */\n          righttop = interpolateX(minV, br, tr);\n          leftbottom = interpolateX(minV, bl, tl);\n          lefttop = interpolateX(maxV, bl, tl);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 26) {\n          /* 0122 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          leftbottom = 1 - interpolateX(maxV, tl, bl);\n          lefttop = 1 - interpolateX(minV, tl, bl);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 36) {\n          /* 0210 */\n          rightbottom = interpolateX(maxV, br, tr);\n          bottomright = interpolateX(minV, bl, br);\n          topleft = interpolateX(minV, tl, tr);\n          topright = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 134) {\n          /* 2012 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          topleft = 1 - interpolateX(maxV, tr, tl);\n          topright = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 9) {\n          /* 0021 */\n          righttop = 1 - interpolateX(minV, tr, br);\n          rightbottom = 1 - interpolateX(maxV, tr, br);\n          bottomleft = interpolateX(maxV, bl, br);\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 161) {\n          /* 2201 */\n          righttop = interpolateX(maxV, br, tr);\n          rightbottom = interpolateX(minV, br, tr);\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          leftbottom = interpolateX(maxV, bl, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 37) {\n          /* 5th single hexagon cases */\n          /* 0211 */\n          rightbottom = interpolateX(maxV, br, tr);\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          topleft = interpolateX(minV, tl, tr);\n          topright = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 133) {\n          /* 2011 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          leftbottom = interpolateX(maxV, bl, tl);\n          topleft = 1 - interpolateX(maxV, tr, tl);\n          topright = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 148) {\n          /* 2110 */\n          bottomright = interpolateX(minV, bl, br);\n          leftbottom = interpolateX(minV, bl, tl);\n          lefttop = interpolateX(maxV, bl, tl);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 22) {\n          /* 0112 */\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          leftbottom = 1 - interpolateX(maxV, tl, bl);\n          lefttop = 1 - interpolateX(minV, tl, bl);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 82) {\n          /* 1102 */\n          righttop = interpolateX(minV, br, tr);\n          bottomright = 1 - interpolateX(minV, br, bl);\n          bottomleft = 1 - interpolateX(maxV, br, bl);\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 88) {\n          /* 1120 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          bottomright = interpolateX(maxV, bl, br);\n          bottomleft = interpolateX(minV, bl, br);\n          lefttop = interpolateX(minV, bl, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 73) {\n          /* 1021 */\n          righttop = 1 - interpolateX(minV, tr, br);\n          rightbottom = 1 - interpolateX(maxV, tr, br);\n          bottomleft = interpolateX(maxV, bl, br);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 97) {\n          /* 1201 */\n          righttop = interpolateX(maxV, br, tr);\n          rightbottom = interpolateX(minV, br, tr);\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n        } else if (cval === 145) {\n          /* 2101 */\n          righttop = interpolateX(minV, br, tr);\n          bottomleft = 1 - interpolateX(minV, br, bl);\n          leftbottom = interpolateX(maxV, bl, tl);\n          topright = 1 - interpolateX(maxV, tr, tl);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 25) {\n          /* 0121 */\n          righttop = 1 - interpolateX(maxV, tr, br);\n          bottomleft = interpolateX(maxV, bl, br);\n          leftbottom = 1 - interpolateX(minV, tl, bl);\n          topright = interpolateX(minV, tl, tr);\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 70) {\n          /* 1012 */\n          rightbottom = 1 - interpolateX(minV, tr, br);\n          bottomright = 1 - interpolateX(maxV, br, bl);\n          lefttop = 1 - interpolateX(maxV, tl, bl);\n          topleft = 1 - interpolateX(minV, tr, tl);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 100) {\n          /* 1210 */\n          rightbottom = interpolateX(maxV, br, tr);\n          bottomright = interpolateX(minV, bl, br);\n          lefttop = interpolateX(minV, bl, tl);\n          topleft = interpolateX(maxV, tl, tr);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 34) {\n          /* 8-sided cases */\n          /* 0202 || 2020 with flipped == 0 */\n          if (flipped === 0) {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          } else {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 35) {\n          /* flipped == 1 state for 0202, and 2020 with flipped == 4*/\n          if (flipped === 4) {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          } else {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 136) {\n          /* 2020 || 0202 with flipped == 0 */\n          if (flipped === 0) {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 153) {\n          /* 6-sided polygon cases */\n          /* 0101 with flipped == 0 || 2121 with flipped == 2 */\n          if (flipped === 0) {\n            righttop = interpolateX(minV, br, tr);\n            bottomleft = 1 - interpolateX(minV, br, bl);\n            leftbottom = 1 - interpolateX(minV, tl, bl);\n            topright = interpolateX(minV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(maxV, tr, br);\n            bottomleft = interpolateX(maxV, bl, br);\n            leftbottom = interpolateX(maxV, bl, tl);\n            topright = 1 - interpolateX(maxV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 102) {\n          /* 1010 with flipped == 0 || 1212 with flipped == 2 */\n          if (flipped === 0) {\n            rightbottom = 1 - interpolateX(minV, tr, br);\n            bottomright = interpolateX(minV, bl, br);\n            lefttop = interpolateX(minV, bl, tl);\n            topleft = 1 - interpolateX(minV, tr, tl);\n          } else {\n            rightbottom = interpolateX(maxV, br, tr);\n            bottomright = 1 - interpolateX(maxV, br, bl);\n            lefttop = 1 - interpolateX(maxV, tl, bl);\n            topleft = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 155) {\n          /* 0101 with flipped == 4 || 2121 with flipped == 1 */\n          if (flipped === 4) {\n            righttop = interpolateX(minV, br, tr);\n            bottomleft = 1 - interpolateX(minV, br, bl);\n            leftbottom = 1 - interpolateX(minV, tl, bl);\n            topright = interpolateX(minV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(maxV, tr, br);\n            bottomleft = interpolateX(maxV, bl, br);\n            leftbottom = interpolateX(maxV, bl, tl);\n            topright = 1 - interpolateX(maxV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 103) {\n          /* 1010 with flipped == 4 || 1212 with flipped == 1 */\n          if (flipped === 4) {\n            rightbottom = 1 - interpolateX(minV, tr, br);\n            bottomright = interpolateX(minV, bl, br);\n            lefttop = interpolateX(minV, bl, tl);\n            topleft = 1 - interpolateX(minV, tr, tl);\n          } else {\n            rightbottom = interpolateX(maxV, br, tr);\n            bottomright = 1 - interpolateX(maxV, br, bl);\n            lefttop = 1 - interpolateX(maxV, tl, bl);\n            topleft = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n        } else if (cval === 152) {\n          /* 7-sided polygon cases */\n          /* 2120 with flipped == 2 || 0102 with flipped == 0 */\n          if (flipped === 0) {\n            righttop = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topright = interpolateX(minV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topright = 1 - interpolateX(maxV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 156) {\n          /* 2120 with flipped == 1 || 0102 with flipped == 4 */\n          if (flipped === 4) {\n            righttop = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topright = interpolateX(minV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topright = 1 - interpolateX(maxV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 137) {\n          /* 2021 with flipped == 2 || 0201 with flipped == 0 */\n          if (flipped === 0) {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomleft = 1 - interpolateX(minV, br, bl);\n            leftbottom = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomleft = interpolateX(maxV, bl, br);\n            leftbottom = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 139) {\n          /* 2021 with flipped == 1 || 0201 with flipped == 4 */\n          if (flipped === 4) {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomleft = 1 - interpolateX(minV, br, bl);\n            leftbottom = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          } else {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomleft = interpolateX(maxV, bl, br);\n            leftbottom = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n        } else if (cval === 98) {\n          /* 1202 with flipped == 2 || 1020 with flipped == 0 */\n          if (flipped === 0) {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            lefttop = interpolateX(minV, bl, tl);\n            topleft = 1 - interpolateX(minV, tr, tl);\n          } else {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            lefttop = 1 - interpolateX(maxV, tl, bl);\n            topleft = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 99) {\n          /* 1202 with flipped == 1 || 1020 with flipped == 4 */\n          if (flipped === 4) {\n            righttop = 1 - interpolateX(minV, tr, br);\n            rightbottom = 1 - interpolateX(maxV, tr, br);\n            bottomright = interpolateX(maxV, bl, br);\n            bottomleft = interpolateX(minV, bl, br);\n            lefttop = interpolateX(minV, bl, tl);\n            topleft = 1 - interpolateX(minV, tr, tl);\n          } else {\n            righttop = interpolateX(maxV, br, tr);\n            rightbottom = interpolateX(minV, br, tr);\n            bottomright = 1 - interpolateX(minV, br, bl);\n            bottomleft = 1 - interpolateX(maxV, br, bl);\n            lefttop = 1 - interpolateX(maxV, tl, bl);\n            topleft = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRT[cval]);\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBL[cval]);\n        } else if (cval === 38) {\n          /* 0212 with flipped == 2 || 2010 with flipped == 0 */\n          if (flipped === 0) {\n            rightbottom = 1 - interpolateX(minV, tr, br);\n            bottomright = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          } else {\n            rightbottom = interpolateX(maxV, br, tr);\n            bottomright = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeLB[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 39) {\n          /* 0212 with flipped == 1 || 2010 with flipped == 4 */\n          if (flipped === 4) {\n            rightbottom = 1 - interpolateX(minV, tr, br);\n            bottomright = interpolateX(minV, bl, br);\n            leftbottom = interpolateX(minV, bl, tl);\n            lefttop = interpolateX(maxV, bl, tl);\n            topleft = 1 - interpolateX(maxV, tr, tl);\n            topright = 1 - interpolateX(minV, tr, tl);\n          } else {\n            rightbottom = interpolateX(maxV, br, tr);\n            bottomright = 1 - interpolateX(maxV, br, bl);\n            leftbottom = 1 - interpolateX(maxV, tl, bl);\n            lefttop = 1 - interpolateX(minV, tl, bl);\n            topleft = interpolateX(minV, tl, tr);\n            topright = interpolateX(maxV, tl, tr);\n          }\n          edges.push(isoBandEdgeRB[cval]);\n          edges.push(isoBandEdgeBR[cval]);\n          edges.push(isoBandEdgeLT[cval]);\n        } else if (cval === 85) {\n          righttop = 1;\n          rightbottom = 0;\n          bottomright = 1;\n          bottomleft = 0;\n          leftbottom = 0;\n          lefttop = 1;\n          topleft = 0;\n          topright = 1;\n        }\n\n        if (\n          topleft < 0 ||\n          topleft > 1 ||\n          topright < 0 ||\n          topright > 1 ||\n          righttop < 0 ||\n          righttop > 1 ||\n          bottomright < 0 ||\n          bottomright > 1 ||\n          leftbottom < 0 ||\n          leftbottom > 1 ||\n          lefttop < 0 ||\n          lefttop > 1\n        ) {\n          console.log(\n            \"MarchingSquaresJS-isoBands: \" +\n              cval +\n              \" \" +\n              cval_real +\n              \" \" +\n              tl +\n              \",\" +\n              tr +\n              \",\" +\n              br +\n              \",\" +\n              bl +\n              \" \" +\n              flipped +\n              \" \" +\n              topleft +\n              \" \" +\n              topright +\n              \" \" +\n              righttop +\n              \" \" +\n              rightbottom +\n              \" \" +\n              bottomright +\n              \" \" +\n              bottomleft +\n              \" \" +\n              leftbottom +\n              \" \" +\n              lefttop\n          );\n        }\n\n        BandGrid.cells[j][i] = {\n          cval: cval,\n          cval_real: cval_real,\n          flipped: flipped,\n          topleft: topleft,\n          topright: topright,\n          righttop: righttop,\n          rightbottom: rightbottom,\n          bottomright: bottomright,\n          bottomleft: bottomleft,\n          leftbottom: leftbottom,\n          lefttop: lefttop,\n          edges: edges,\n        };\n      }\n    }\n  }\n\n  return BandGrid;\n}\n\nfunction BandGrid2AreaPaths(grid) {\n  var areas = [];\n  var rows = grid.rows;\n  var cols = grid.cols;\n  var currentPolygon = [];\n\n  for (var j = 0; j < rows; j++) {\n    for (var i = 0; i < cols; i++) {\n      if (\n        typeof grid.cells[j][i] !== \"undefined\" &&\n        grid.cells[j][i].edges.length > 0\n      ) {\n        /* trace back polygon path starting from this cell */\n\n        var cell = grid.cells[j][i];\n\n        /* get start coordinates */\n\n        var prev = getStartXY(cell),\n          next = null,\n          p = i,\n          q = j;\n\n        if (prev !== null) {\n          currentPolygon.push([prev.p[0] + p, prev.p[1] + q]);\n          //console.log(cell);\n          //console.log(\"coords: \" + (prev.p[0] + p) + \" \" + (prev.p[1] + q));\n        }\n\n        do {\n          //console.log(p + \",\" + q);\n          //console.log(grid.cells[q][p]);\n          //console.log(grid.cells[q][p].edges);\n          //console.log(\"from : \" + prev.x + \" \" + prev.y + \" \" + prev.o);\n\n          next = getExitXY(grid.cells[q][p], prev.x, prev.y, prev.o);\n          if (next !== null) {\n            //console.log(\"coords: \" + (next.p[0] + p) + \" \" + (next.p[1] + q));\n            currentPolygon.push([next.p[0] + p, next.p[1] + q]);\n            p += next.x;\n            q += next.y;\n            prev = next;\n          } else {\n            //console.log(\"getExitXY() returned null!\");\n            break;\n          }\n          //console.log(\"to : \" + next.x + \" \" + next.y + \" \" + next.o);\n          /* special case, where we've reached the grid boundaries */\n          if (\n            q < 0 ||\n            q >= rows ||\n            p < 0 ||\n            p >= cols ||\n            typeof grid.cells[q][p] === \"undefined\"\n          ) {\n            /* to create a closed path, we need to trace our way\n                arround the missing data, until we find an entry\n                point again\n            */\n\n            /* set back coordinates of current cell */\n            p -= next.x;\n            q -= next.y;\n\n            //console.log(\"reached boundary at \" + p + \" \" + q);\n\n            var missing = traceOutOfGridPath(\n              grid,\n              p,\n              q,\n              next.x,\n              next.y,\n              next.o\n            );\n            if (missing !== null) {\n              missing.path.forEach(function (pp) {\n                //console.log(\"coords: \" + (pp[0]) + \" \" + (pp[1]));\n                currentPolygon.push(pp);\n              });\n              p = missing.i;\n              q = missing.j;\n              prev = missing;\n            } else {\n              break;\n            }\n            //console.log(grid.cells[q][p]);\n          }\n        } while (\n          typeof grid.cells[q][p] !== \"undefined\" &&\n          grid.cells[q][p].edges.length > 0\n        );\n\n        areas.push(currentPolygon);\n        //console.log(\"next polygon\");\n        //console.log(currentPolygon);\n        currentPolygon = [];\n        if (grid.cells[j][i].edges.length > 0) i--;\n      }\n    }\n  }\n  return areas;\n}\n\nfunction traceOutOfGridPath(grid, i, j, d_x, d_y, d_o) {\n  var cell = grid.cells[j][i];\n  var cval = cell.cval_real;\n  var p = i + d_x,\n    q = j + d_y;\n  var path = [];\n  var closed = false;\n\n  while (!closed) {\n    //console.log(\"processing cell \" + p + \",\" + q + \" \" + d_x + \" \" + d_y + \" \" + d_o);\n    if (\n      typeof grid.cells[q] === \"undefined\" ||\n      typeof grid.cells[q][p] === \"undefined\"\n    ) {\n      //console.log(\"which is undefined\");\n      /* we can't move on, so we have to change direction to proceed further */\n\n      /* go back to previous cell */\n      q -= d_y;\n      p -= d_x;\n      cell = grid.cells[q][p];\n      cval = cell.cval_real;\n\n      /* check where we've left defined cells of the grid... */\n      if (d_y === -1) {\n        /* we came from top */\n        if (d_o === 0) {\n          /* exit left */\n          if (cval & Node3) {\n            /* lower left node is within range, so we move left */\n            path.push([p, q]);\n            d_x = -1;\n            d_y = 0;\n            d_o = 0;\n          } else if (cval & Node2) {\n            /* lower right node is within range, so we move right */\n            path.push([p + 1, q]);\n            d_x = 1;\n            d_y = 0;\n            d_o = 0;\n          } else {\n            /* close the path */\n            path.push([p + cell.bottomright, q]);\n            d_x = 0;\n            d_y = 1;\n            d_o = 1;\n            closed = true;\n            break;\n          }\n        } else if (cval & Node3) {\n          path.push([p, q]);\n          d_x = -1;\n          d_y = 0;\n          d_o = 0;\n        } else if (cval & Node2) {\n          path.push([p + cell.bottomright, q]);\n          d_x = 0;\n          d_y = 1;\n          d_o = 1;\n          closed = true;\n          break;\n        } else {\n          path.push([p + cell.bottomleft, q]);\n          d_x = 0;\n          d_y = 1;\n          d_o = 0;\n          closed = true;\n          break;\n        }\n      } else if (d_y === 1) {\n        /* we came from bottom */\n        //console.log(\"we came from bottom and hit a non-existing cell \" + (p + d_x) + \",\" + (q + d_y) + \"!\");\n        if (d_o === 0) {\n          /* exit left */\n          if (cval & Node1) {\n            /* top right node is within range, so we move right */\n            path.push([p + 1, q + 1]);\n            d_x = 1;\n            d_y = 0;\n            d_o = 1;\n          } else if (!(cval & Node0)) {\n            /* found entry within same cell */\n            path.push([p + cell.topright, q + 1]);\n            d_x = 0;\n            d_y = -1;\n            d_o = 1;\n            closed = true;\n            //console.log(\"found entry from bottom at \" + p + \",\" + q);\n            break;\n          } else {\n            path.push([p + cell.topleft, q + 1]);\n            d_x = 0;\n            d_y = -1;\n            d_o = 0;\n            closed = true;\n            break;\n          }\n        } else if (cval & Node1) {\n          path.push([p + 1, q + 1]);\n          d_x = 1;\n          d_y = 0;\n          d_o = 1;\n        } else {\n          /* move right */\n          path.push([p + 1, q + 1]);\n          d_x = 1;\n          d_y = 0;\n          d_o = 1;\n          //console.log(\"wtf\");\n          //break;\n        }\n      } else if (d_x === -1) {\n        /* we came from right */\n        //console.log(\"we came from right and hit a non-existing cell at \" + (p + d_x) + \",\" + (q + d_y) + \"!\");\n        if (d_o === 0) {\n          //console.log(\"continue at bottom\");\n          if (cval & Node0) {\n            path.push([p, q + 1]);\n            d_x = 0;\n            d_y = 1;\n            d_o = 0;\n            //console.log(\"moving upwards to \" + (p + d_x) + \",\" + (q + d_y) + \"!\");\n          } else if (!(cval & Node3)) {\n            /* there has to be an entry into the regular grid again! */\n            //console.log(\"exiting top\");\n            path.push([p, q + cell.lefttop]);\n            d_x = 1;\n            d_y = 0;\n            d_o = 1;\n            closed = true;\n            break;\n          } else {\n            //console.log(\"exiting bottom\");\n            path.push([p, q + cell.leftbottom]);\n            d_x = 1;\n            d_y = 0;\n            d_o = 0;\n            closed = true;\n            break;\n          }\n        } else {\n          //console.log(\"continue at top\");\n          if (cval & Node0) {\n            path.push([p, q + 1]);\n            d_x = 0;\n            d_y = 1;\n            d_o = 0;\n            //console.log(\"moving upwards to \" + (p + d_x) + \",\" + (q + d_y) + \"!\");\n          } else {\n            /* */\n            console.log(\"MarchingSquaresJS-isoBands: wtf\");\n            break;\n          }\n        }\n      } else if (d_x === 1) {\n        /* we came from left */\n        //console.log(\"we came from left and hit a non-existing cell \" + (p + d_x) + \",\" + (q + d_y) + \"!\");\n        if (d_o === 0) {\n          /* exit bottom */\n          if (cval & Node2) {\n            path.push([p + 1, q]);\n            d_x = 0;\n            d_y = -1;\n            d_o = 1;\n          } else {\n            path.push([p + 1, q + cell.rightbottom]);\n            d_x = -1;\n            d_y = 0;\n            d_o = 0;\n            closed = true;\n            break;\n          }\n        } else {\n          /* exit top */\n          if (cval & Node2) {\n            path.push([p + 1, q]);\n            d_x = 0;\n            d_y = -1;\n            d_o = 1;\n          } else if (!(cval & Node1)) {\n            path.push([p + 1, q + cell.rightbottom]);\n            d_x = -1;\n            d_y = 0;\n            d_o = 0;\n            closed = true;\n            break;\n          } else {\n            path.push([p + 1, q + cell.righttop]);\n            d_x = -1;\n            d_y = 0;\n            d_o = 1;\n            break;\n          }\n        }\n      } else {\n        /* we came from the same cell */\n        console.log(\"MarchingSquaresJS-isoBands: we came from nowhere!\");\n        break;\n      }\n    } else {\n      /* try to find an entry into the regular grid again! */\n      cell = grid.cells[q][p];\n      cval = cell.cval_real;\n      //console.log(\"which is defined\");\n\n      if (d_x === -1) {\n        if (d_o === 0) {\n          /* try to go downwards */\n          if (\n            typeof grid.cells[q - 1] !== \"undefined\" &&\n            typeof grid.cells[q - 1][p] !== \"undefined\"\n          ) {\n            d_x = 0;\n            d_y = -1;\n            d_o = 1;\n          } else if (cval & Node3) {\n            /* proceed searching in x-direction */\n            //console.log(\"proceeding in x-direction!\");\n            path.push([p, q]);\n          } else {\n            /* we must have found an entry into the regular grid */\n            path.push([p + cell.bottomright, q]);\n            d_x = 0;\n            d_y = 1;\n            d_o = 1;\n            closed = true;\n            //console.log(\"found entry from bottom at \" + p + \",\" + q);\n            break;\n          }\n        } else if (cval & Node0) {\n          /* proceed searchin in x-direction */\n          console.log(\"MarchingSquaresJS-isoBands: proceeding in x-direction!\");\n        } else {\n          /* we must have found an entry into the regular grid */\n          console.log(\n            \"MarchingSquaresJS-isoBands: found entry from top at \" + p + \",\" + q\n          );\n          break;\n        }\n      } else if (d_x === 1) {\n        if (d_o === 0) {\n          console.log(\"MarchingSquaresJS-isoBands: wtf\");\n          break;\n        } else {\n          /* try to go upwards */\n          if (\n            typeof grid.cells[q + 1] !== \"undefined\" &&\n            typeof grid.cells[q + 1][p] !== \"undefined\"\n          ) {\n            d_x = 0;\n            d_y = 1;\n            d_o = 0;\n          } else if (cval & Node1) {\n            path.push([p + 1, q + 1]);\n            d_x = 1;\n            d_y = 0;\n            d_o = 1;\n          } else {\n            /* found an entry point into regular grid! */\n            path.push([p + cell.topleft, q + 1]);\n            d_x = 0;\n            d_y = -1;\n            d_o = 0;\n            closed = true;\n            //console.log(\"found entry from bottom at \" + p + \",\" + q);\n            break;\n          }\n        }\n      } else if (d_y === -1) {\n        if (d_o === 1) {\n          /* try to go right */\n          if (typeof grid.cells[q][p + 1] !== \"undefined\") {\n            d_x = 1;\n            d_y = 0;\n            d_o = 1;\n          } else if (cval & Node2) {\n            path.push([p + 1, q]);\n            d_x = 0;\n            d_y = -1;\n            d_o = 1;\n          } else {\n            /* found entry into regular grid! */\n            path.push([p + 1, q + cell.righttop]);\n            d_x = -1;\n            d_y = 0;\n            d_o = 1;\n            closed = true;\n            //console.log(\"found entry from top at \" + p + \",\" + q);\n            break;\n          }\n        } else {\n          console.log(\"MarchingSquaresJS-isoBands: wtf\");\n          break;\n        }\n      } else if (d_y === 1) {\n        if (d_o === 0) {\n          //console.log(\"we came from bottom left and proceed to the left\");\n          /* try to go left */\n          if (typeof grid.cells[q][p - 1] !== \"undefined\") {\n            d_x = -1;\n            d_y = 0;\n            d_o = 0;\n          } else if (cval & Node0) {\n            path.push([p, q + 1]);\n            d_x = 0;\n            d_y = 1;\n            d_o = 0;\n          } else {\n            /* found an entry point into regular grid! */\n            path.push([p, q + cell.leftbottom]);\n            d_x = 1;\n            d_y = 0;\n            d_o = 0;\n            closed = true;\n            //console.log(\"found entry from bottom at \" + p + \",\" + q);\n            break;\n          }\n        } else {\n          //console.log(\"we came from bottom right and proceed to the right\");\n          console.log(\"MarchingSquaresJS-isoBands: wtf\");\n          break;\n        }\n      } else {\n        console.log(\"MarchingSquaresJS-isoBands: where did we came from???\");\n        break;\n      }\n    }\n\n    p += d_x;\n    q += d_y;\n    //console.log(\"going on to  \" + p + \",\" + q + \" via \" + d_x + \" \" + d_y + \" \" + d_o);\n\n    if (p === i && q === j) {\n      /* bail out, once we've closed a circle path */\n      break;\n    }\n  }\n\n  //console.log(\"exit with \" + p + \",\" + q + \" \" + d_x + \" \" + d_y + \" \" + d_o);\n  return { path: path, i: p, j: q, x: d_x, y: d_y, o: d_o };\n}\n\nfunction deleteEdge(cell, edgeIdx) {\n  delete cell.edges[edgeIdx];\n  for (var k = edgeIdx + 1; k < cell.edges.length; k++) {\n    cell.edges[k - 1] = cell.edges[k];\n  }\n  cell.edges.pop();\n}\n\nfunction getStartXY(cell) {\n  if (cell.edges.length > 0) {\n    var e = cell.edges[cell.edges.length - 1];\n    //console.log(\"starting with edge \" + e);\n    var cval = cell.cval_real;\n    switch (e) {\n      case 0:\n        if (cval & Node1) {\n          /* node 1 within range */\n          return { p: [1, cell.righttop], x: -1, y: 0, o: 1 };\n        } else {\n          /* node 1 below or above threshold */\n          return { p: [cell.topleft, 1], x: 0, y: -1, o: 0 };\n        }\n      case 1:\n        if (cval & Node2) {\n          return { p: [cell.topleft, 1], x: 0, y: -1, o: 0 };\n        } else {\n          return { p: [1, cell.rightbottom], x: -1, y: 0, o: 0 };\n        }\n      case 2:\n        if (cval & Node2) {\n          return { p: [cell.bottomright, 0], x: 0, y: 1, o: 1 };\n        } else {\n          return { p: [cell.topleft, 1], x: 0, y: -1, o: 0 };\n        }\n      case 3:\n        if (cval & Node3) {\n          return { p: [cell.topleft, 1], x: 0, y: -1, o: 0 };\n        } else {\n          return { p: [cell.bottomleft, 0], x: 0, y: 1, o: 0 };\n        }\n      case 4:\n        if (cval & Node1) {\n          return { p: [1, cell.righttop], x: -1, y: 0, o: 1 };\n        } else {\n          return { p: [cell.topright, 1], x: 0, y: -1, o: 1 };\n        }\n      case 5:\n        if (cval & Node2) {\n          return { p: [cell.topright, 1], x: 0, y: -1, o: 1 };\n        } else {\n          return { p: [1, cell.rightbottom], x: -1, y: 0, o: 0 };\n        }\n      case 6:\n        if (cval & Node2) {\n          return { p: [cell.bottomright, 0], x: 0, y: 1, o: 1 };\n        } else {\n          return { p: [cell.topright, 1], x: 0, y: -1, o: 1 };\n        }\n      case 7:\n        if (cval & Node3) {\n          return { p: [cell.topright, 1], x: 0, y: -1, o: 1 };\n        } else {\n          return { p: [cell.bottomleft, 0], x: 0, y: 1, o: 0 };\n        }\n      case 8:\n        if (cval & Node2) {\n          return { p: [cell.bottomright, 0], x: 0, y: 1, o: 1 };\n        } else {\n          return { p: [1, cell.righttop], x: -1, y: 0, o: 1 };\n        }\n      case 9:\n        if (cval & Node3) {\n          return { p: [1, cell.righttop], x: -1, y: 0, o: 1 };\n        } else {\n          return { p: [cell.bottomleft, 0], x: 0, y: 1, o: 0 };\n        }\n      case 10:\n        if (cval & Node3) {\n          return { p: [0, cell.leftbottom], x: 1, y: 0, o: 0 };\n        } else {\n          return { p: [1, cell.righttop], x: -1, y: 0, o: 1 };\n        }\n      case 11:\n        if (cval & Node0) {\n          return { p: [1, cell.righttop], x: -1, y: 0, o: 1 };\n        } else {\n          return { p: [0, cell.lefttop], x: 1, y: 0, o: 1 };\n        }\n      case 12:\n        if (cval & Node2) {\n          return { p: [cell.bottomright, 0], x: 0, y: 1, o: 1 };\n        } else {\n          return { p: [1, cell.rightbottom], x: -1, y: 0, o: 0 };\n        }\n      case 13:\n        if (cval & Node3) {\n          return { p: [1, cell.rightbottom], x: -1, y: 0, o: 0 };\n        } else {\n          return { p: [cell.bottomleft, 0], x: 0, y: 1, o: 0 };\n        }\n      case 14:\n        if (cval & Node3) {\n          return { p: [0, cell.leftbottom], x: 1, y: 0, o: 0 };\n        } else {\n          return { p: [1, cell.rightbottom], x: -1, y: 0, o: 0 };\n        }\n      case 15:\n        if (cval & Node0) {\n          return { p: [1, cell.rightbottom], x: -1, y: 0, o: 0 };\n        } else {\n          return { p: [0, cell.lefttop], x: 1, y: 0, o: 1 };\n        }\n      case 16:\n        if (cval & Node2) {\n          return { p: [cell.bottomright, 0], x: 0, y: 1, o: 1 };\n        } else {\n          return { p: [0, cell.leftbottom], x: 1, y: 0, o: 0 };\n        }\n      case 17:\n        if (cval & Node0) {\n          return { p: [cell.bottomright, 0], x: 0, y: 1, o: 1 };\n        } else {\n          return { p: [0, cell.lefttop], x: 1, y: 0, o: 1 };\n        }\n      case 18:\n        if (cval & Node3) {\n          return { p: [0, cell.leftbottom], x: 1, y: 0, o: 0 };\n        } else {\n          return { p: [cell.bottomleft, 0], x: 0, y: 1, o: 0 };\n        }\n      case 19:\n        if (cval & Node0) {\n          return { p: [cell.bottomleft, 0], x: 0, y: 1, o: 0 };\n        } else {\n          return { p: [0, cell.lefttop], x: 1, y: 0, o: 1 };\n        }\n      case 20:\n        if (cval & Node0) {\n          return { p: [cell.topleft, 1], x: 0, y: -1, o: 0 };\n        } else {\n          return { p: [0, cell.leftbottom], x: 1, y: 0, o: 0 };\n        }\n      case 21:\n        if (cval & Node1) {\n          return { p: [0, cell.leftbottom], x: 1, y: 0, o: 0 };\n        } else {\n          return { p: [cell.topright, 1], x: 0, y: -1, o: 1 };\n        }\n      case 22:\n        if (cval & Node0) {\n          return { p: [cell.topleft, 1], x: 0, y: -1, o: 0 };\n        } else {\n          return { p: [0, cell.lefttop], x: 1, y: 0, o: 1 };\n        }\n      case 23:\n        if (cval & Node1) {\n          return { p: [0, cell.lefttop], x: 1, y: 0, o: 1 };\n        } else {\n          return { p: [cell.topright, 1], x: 0, y: -1, o: 1 };\n        }\n      default:\n        console.log(\"MarchingSquaresJS-isoBands: edge index out of range!\");\n        console.log(cell);\n        break;\n    }\n  }\n\n  return null;\n}\n\nfunction getExitXY(cell, x, y, o) {\n  var e,\n    id_x,\n    d_x,\n    d_y,\n    cval = cell.cval;\n  var d_o;\n\n  switch (x) {\n    case -1:\n      switch (o) {\n        case 0:\n          e = isoBandEdgeRB[cval];\n          d_x = isoBandNextXRB[cval];\n          d_y = isoBandNextYRB[cval];\n          d_o = isoBandNextORB[cval];\n          break;\n        default:\n          e = isoBandEdgeRT[cval];\n          d_x = isoBandNextXRT[cval];\n          d_y = isoBandNextYRT[cval];\n          d_o = isoBandNextORT[cval];\n          break;\n      }\n      break;\n    case 1:\n      switch (o) {\n        case 0:\n          e = isoBandEdgeLB[cval];\n          d_x = isoBandNextXLB[cval];\n          d_y = isoBandNextYLB[cval];\n          d_o = isoBandNextOLB[cval];\n          break;\n        default:\n          e = isoBandEdgeLT[cval];\n          d_x = isoBandNextXLT[cval];\n          d_y = isoBandNextYLT[cval];\n          d_o = isoBandNextOLT[cval];\n          break;\n      }\n      break;\n    default:\n      switch (y) {\n        case -1:\n          switch (o) {\n            case 0:\n              e = isoBandEdgeTL[cval];\n              d_x = isoBandNextXTL[cval];\n              d_y = isoBandNextYTL[cval];\n              d_o = isoBandNextOTL[cval];\n              break;\n            default:\n              e = isoBandEdgeTR[cval];\n              d_x = isoBandNextXTR[cval];\n              d_y = isoBandNextYTR[cval];\n              d_o = isoBandNextOTR[cval];\n              break;\n          }\n          break;\n        case 1:\n          switch (o) {\n            case 0:\n              e = isoBandEdgeBL[cval];\n              d_x = isoBandNextXBL[cval];\n              d_y = isoBandNextYBL[cval];\n              d_o = isoBandNextOBL[cval];\n              break;\n            default:\n              e = isoBandEdgeBR[cval];\n              d_x = isoBandNextXBR[cval];\n              d_y = isoBandNextYBR[cval];\n              d_o = isoBandNextOBR[cval];\n              break;\n          }\n          break;\n      }\n      break;\n  }\n\n  id_x = cell.edges.indexOf(e);\n  if (typeof cell.edges[id_x] !== \"undefined\") {\n    deleteEdge(cell, id_x);\n  } else {\n    //console.log(\"wrong edges...\");\n    //console.log(x + \" \" + y + \" \" + o);\n    //console.log(cell);\n    return null;\n  }\n\n  cval = cell.cval_real;\n\n  switch (e) {\n    case 0:\n      if (cval & Node1) {\n        /* node 1 within range */\n        x = cell.topleft;\n        y = 1;\n      } else {\n        /* node 1 below or above threshold */\n        x = 1;\n        y = cell.righttop;\n      }\n      break;\n    case 1:\n      if (cval & Node2) {\n        x = 1;\n        y = cell.rightbottom;\n      } else {\n        x = cell.topleft;\n        y = 1;\n      }\n      break;\n    case 2:\n      if (cval & Node2) {\n        x = cell.topleft;\n        y = 1;\n      } else {\n        x = cell.bottomright;\n        y = 0;\n      }\n      break;\n    case 3:\n      if (cval & Node3) {\n        x = cell.bottomleft;\n        y = 0;\n      } else {\n        x = cell.topleft;\n        y = 1;\n      }\n      break;\n    case 4:\n      if (cval & Node1) {\n        x = cell.topright;\n        y = 1;\n      } else {\n        x = 1;\n        y = cell.righttop;\n      }\n      break;\n    case 5:\n      if (cval & Node2) {\n        x = 1;\n        y = cell.rightbottom;\n      } else {\n        x = cell.topright;\n        y = 1;\n      }\n      break;\n    case 6:\n      if (cval & Node2) {\n        x = cell.topright;\n        y = 1;\n      } else {\n        x = cell.bottomright;\n        y = 0;\n      }\n      break;\n    case 7:\n      if (cval & Node3) {\n        x = cell.bottomleft;\n        y = 0;\n      } else {\n        x = cell.topright;\n        y = 1;\n      }\n      break;\n    case 8:\n      if (cval & Node2) {\n        x = 1;\n        y = cell.righttop;\n      } else {\n        x = cell.bottomright;\n        y = 0;\n      }\n      break;\n    case 9:\n      if (cval & Node3) {\n        x = cell.bottomleft;\n        y = 0;\n      } else {\n        x = 1;\n        y = cell.righttop;\n      }\n      break;\n    case 10:\n      if (cval & Node3) {\n        x = 1;\n        y = cell.righttop;\n      } else {\n        x = 0;\n        y = cell.leftbottom;\n      }\n      break;\n    case 11:\n      if (cval & Node0) {\n        x = 0;\n        y = cell.lefttop;\n      } else {\n        x = 1;\n        y = cell.righttop;\n      }\n      break;\n    case 12:\n      if (cval & Node2) {\n        x = 1;\n        y = cell.rightbottom;\n      } else {\n        x = cell.bottomright;\n        y = 0;\n      }\n      break;\n    case 13:\n      if (cval & Node3) {\n        x = cell.bottomleft;\n        y = 0;\n      } else {\n        x = 1;\n        y = cell.rightbottom;\n      }\n      break;\n    case 14:\n      if (cval & Node3) {\n        x = 1;\n        y = cell.rightbottom;\n      } else {\n        x = 0;\n        y = cell.leftbottom;\n      }\n      break;\n    case 15:\n      if (cval & Node0) {\n        x = 0;\n        y = cell.lefttop;\n      } else {\n        x = 1;\n        y = cell.rightbottom;\n      }\n      break;\n    case 16:\n      if (cval & Node2) {\n        x = 0;\n        y = cell.leftbottom;\n      } else {\n        x = cell.bottomright;\n        y = 0;\n      }\n      break;\n    case 17:\n      if (cval & Node0) {\n        x = 0;\n        y = cell.lefttop;\n      } else {\n        x = cell.bottomright;\n        y = 0;\n      }\n      break;\n    case 18:\n      if (cval & Node3) {\n        x = cell.bottomleft;\n        y = 0;\n      } else {\n        x = 0;\n        y = cell.leftbottom;\n      }\n      break;\n    case 19:\n      if (cval & Node0) {\n        x = 0;\n        y = cell.lefttop;\n      } else {\n        x = cell.bottomleft;\n        y = 0;\n      }\n      break;\n    case 20:\n      if (cval & Node0) {\n        x = 0;\n        y = cell.leftbottom;\n      } else {\n        x = cell.topleft;\n        y = 1;\n      }\n      break;\n    case 21:\n      if (cval & Node1) {\n        x = cell.topright;\n        y = 1;\n      } else {\n        x = 0;\n        y = cell.leftbottom;\n      }\n      break;\n    case 22:\n      if (cval & Node0) {\n        x = 0;\n        y = cell.lefttop;\n      } else {\n        x = cell.topleft;\n        y = 1;\n      }\n      break;\n    case 23:\n      if (cval & Node1) {\n        x = cell.topright;\n        y = 1;\n      } else {\n        x = 0;\n        y = cell.lefttop;\n      }\n      break;\n    default:\n      console.log(\"MarchingSquaresJS-isoBands: edge index out of range!\");\n      console.log(cell);\n      return null;\n  }\n\n  if (\n    typeof x === \"undefined\" ||\n    typeof y === \"undefined\" ||\n    typeof d_x === \"undefined\" ||\n    typeof d_y === \"undefined\" ||\n    typeof d_o === \"undefined\"\n  ) {\n    console.log(\"MarchingSquaresJS-isoBands: undefined value!\");\n    console.log(cell);\n    console.log(x + \" \" + y + \" \" + d_x + \" \" + d_y + \" \" + d_o);\n  }\n  return { p: [x, y], x: d_x, y: d_y, o: d_o };\n}\n\nfunction BandGrid2Areas(grid) {\n  var areas = [];\n  var area_idx = 0;\n\n  grid.cells.forEach(function (g, j) {\n    g.forEach(function (gg, i) {\n      if (typeof gg !== \"undefined\") {\n        var a = polygon_table[gg.cval](gg);\n        if (typeof a === \"object\" && isArray(a)) {\n          if (typeof a[0] === \"object\" && isArray(a[0])) {\n            if (typeof a[0][0] === \"object\" && isArray(a[0][0])) {\n              a.forEach(function (aa) {\n                aa.forEach(function (aaa) {\n                  aaa[0] += i;\n                  aaa[1] += j;\n                });\n                areas[area_idx++] = aa;\n              });\n            } else {\n              a.forEach(function (aa) {\n                aa[0] += i;\n                aa[1] += j;\n              });\n              areas[area_idx++] = a;\n            }\n          } else {\n            console.log(\n              \"MarchingSquaresJS-isoBands: bandcell polygon with malformed coordinates\"\n            );\n          }\n        } else {\n          console.log(\n            \"MarchingSquaresJS-isoBands: bandcell polygon with null coordinates\"\n          );\n        }\n      }\n    });\n  });\n\n  return areas;\n}\n\n/**\n * Takes a square or rectangular grid {@link FeatureCollection} of {@link Point} features with z-values and an array of\n * value breaks and generates filled contour isobands.\n *\n * @name isobands\n * @param {FeatureCollection<Point>} pointGrid input points - must be square or rectangular\n * @param {Array<number>} breaks where to draw contours\n * @param {Object} [options={}] options on output\n * @param {string} [options.zProperty='elevation'] the property name in `points` from which z-values will be pulled\n * @param {Object} [options.commonProperties={}] GeoJSON properties passed to ALL isobands\n * @param {Array<Object>} [options.breaksProperties=[]] GeoJSON properties passed, in order, to the correspondent isoband (order defined by breaks)\n * @returns {FeatureCollection<MultiPolygon>} a FeatureCollection of {@link MultiPolygon} features representing isobands\n */\nfunction isobands(pointGrid, breaks, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var zProperty = options.zProperty || \"elevation\";\n  var commonProperties = options.commonProperties || {};\n  var breaksProperties = options.breaksProperties || [];\n\n  // Validation\n  invariant.collectionOf(pointGrid, \"Point\", \"Input must contain Points\");\n  if (!breaks) throw new Error(\"breaks is required\");\n  if (!Array.isArray(breaks)) throw new Error(\"breaks is not an Array\");\n  if (!helpers.isObject(commonProperties))\n    throw new Error(\"commonProperties is not an Object\");\n  if (!Array.isArray(breaksProperties))\n    throw new Error(\"breaksProperties is not an Array\");\n\n  // Isoband methods\n  var matrix = gridToMatrix(pointGrid, { zProperty: zProperty, flip: true });\n  var contours = createContourLines(matrix, breaks, zProperty);\n  contours = rescaleContours(contours, matrix, pointGrid);\n\n  var multipolygons = contours.map(function (contour, index) {\n    if (breaksProperties[index] && !helpers.isObject(breaksProperties[index])) {\n      throw new Error(\"Each mappedProperty is required to be an Object\");\n    }\n    // collect all properties\n    var contourProperties = objectAssign__default['default'](\n      {},\n      commonProperties,\n      breaksProperties[index]\n    );\n    contourProperties[zProperty] = contour[zProperty];\n    var multiP = helpers.multiPolygon(contour.groupedRings, contourProperties);\n    return multiP;\n  });\n\n  return helpers.featureCollection(multipolygons);\n}\n\n/**\n * Creates the contours lines (featuresCollection of polygon features) from the 2D data grid\n *\n * Marchingsquares process the grid data as a 3D representation of a function on a 2D plane, therefore it\n * assumes the points (x-y coordinates) are one 'unit' distance. The result of the IsoBands function needs to be\n * rescaled, with turfjs, to the original area and proportions on the map\n *\n * @private\n * @param {Array<Array<number>>} matrix Grid Data\n * @param {Array<number>} breaks Breaks\n * @param {string} [property='elevation'] Property\n * @returns {Array<any>} contours\n */\nfunction createContourLines(matrix, breaks, property) {\n  var contours = [];\n  for (var i = 1; i < breaks.length; i++) {\n    var lowerBand = +breaks[i - 1]; // make sure the breaks value is a number\n    var upperBand = +breaks[i];\n\n    var isobandsCoords = isoBands(matrix, lowerBand, upperBand - lowerBand);\n    // as per GeoJson rules for creating a Polygon, make sure the first element\n    // in the array of LinearRings represents the exterior ring (i.e. biggest area),\n    // and any subsequent elements represent interior rings (i.e. smaller area);\n    // this avoids rendering issues of the MultiPolygons on the map\n    var nestedRings = orderByArea(isobandsCoords);\n    var groupedRings = groupNestedRings(nestedRings);\n    var obj = {};\n    obj[\"groupedRings\"] = groupedRings;\n    obj[property] = lowerBand + \"-\" + upperBand;\n    contours.push(obj);\n  }\n  return contours;\n}\n\n/**\n * Transform isobands of 2D grid to polygons for the map\n *\n * @private\n * @param {Array<any>} contours Contours\n * @param {Array<Array<number>>} matrix Grid Data\n * @param {Object} points Points by Latitude\n * @returns {Array<any>} contours\n */\nfunction rescaleContours(contours, matrix, points) {\n  // get dimensions (on the map) of the original grid\n  var gridBbox = bbox__default['default'](points); // [ minX, minY, maxX, maxY ]\n  var originalWidth = gridBbox[2] - gridBbox[0];\n  var originalHeigth = gridBbox[3] - gridBbox[1];\n\n  // get origin, which is the first point of the last row on the rectangular data on the map\n  var x0 = gridBbox[0];\n  var y0 = gridBbox[1];\n  // get number of cells per side\n  var matrixWidth = matrix[0].length - 1;\n  var matrixHeight = matrix.length - 1;\n  // calculate the scaling factor between matrix and rectangular grid on the map\n  var scaleX = originalWidth / matrixWidth;\n  var scaleY = originalHeigth / matrixHeight;\n\n  var resize = function (point) {\n    point[0] = point[0] * scaleX + x0;\n    point[1] = point[1] * scaleY + y0;\n  };\n\n  // resize and shift each point/line of the isobands\n  contours.forEach(function (contour) {\n    contour.groupedRings.forEach(function (lineRingSet) {\n      lineRingSet.forEach(function (lineRing) {\n        lineRing.forEach(resize);\n      });\n    });\n  });\n  return contours;\n}\n\n/*  utility functions */\n\n/**\n * Returns an array of coordinates (of LinearRings) in descending order by area\n *\n * @private\n * @param {Array<LineString>} ringsCoords array of closed LineString\n * @returns {Array} array of the input LineString ordered by area\n */\nfunction orderByArea(ringsCoords) {\n  var ringsWithArea = [];\n  var areas = [];\n  ringsCoords.forEach(function (coords) {\n    // var poly = polygon([points]);\n    var ringArea = area__default['default'](helpers.polygon([coords]));\n    // create an array of areas value\n    areas.push(ringArea);\n    // associate each lineRing with its area\n    ringsWithArea.push({ ring: coords, area: ringArea });\n  });\n  areas.sort(function (a, b) {\n    // bigger --> smaller\n    return b - a;\n  });\n  // create a new array of linearRings coordinates ordered by their area\n  var orderedByArea = [];\n  areas.forEach(function (area) {\n    for (var lr = 0; lr < ringsWithArea.length; lr++) {\n      if (ringsWithArea[lr].area === area) {\n        orderedByArea.push(ringsWithArea[lr].ring);\n        ringsWithArea.splice(lr, 1);\n        break;\n      }\n    }\n  });\n  return orderedByArea;\n}\n\n/**\n * Returns an array of arrays of coordinates, each representing\n * a set of (coordinates of) nested LinearRings,\n * i.e. the first ring contains all the others\n *\n * @private\n * @param {Array} orderedLinearRings array of coordinates (of LinearRings) in descending order by area\n * @returns {Array<Array>} Array of coordinates of nested LinearRings\n */\nfunction groupNestedRings(orderedLinearRings) {\n  // create a list of the (coordinates of) LinearRings\n  var lrList = orderedLinearRings.map(function (lr) {\n    return { lrCoordinates: lr, grouped: false };\n  });\n  var groupedLinearRingsCoords = [];\n  while (!allGrouped(lrList)) {\n    for (var i = 0; i < lrList.length; i++) {\n      if (!lrList[i].grouped) {\n        // create new group starting with the larger not already grouped ring\n        var group = [];\n        group.push(lrList[i].lrCoordinates);\n        lrList[i].grouped = true;\n        var outerMostPoly = helpers.polygon([lrList[i].lrCoordinates]);\n        // group all the rings contained by the outermost ring\n        for (var j = i + 1; j < lrList.length; j++) {\n          if (!lrList[j].grouped) {\n            var lrPoly = helpers.polygon([lrList[j].lrCoordinates]);\n            if (isInside(lrPoly, outerMostPoly)) {\n              group.push(lrList[j].lrCoordinates);\n              lrList[j].grouped = true;\n            }\n          }\n        }\n        // insert the new group\n        groupedLinearRingsCoords.push(group);\n      }\n    }\n  }\n  return groupedLinearRingsCoords;\n}\n\n/**\n * @private\n * @param {Polygon} testPolygon polygon of interest\n * @param {Polygon} targetPolygon polygon you want to compare with\n * @returns {boolean} true if test-Polygon is inside target-Polygon\n */\nfunction isInside(testPolygon, targetPolygon) {\n  var points = explode__default['default'](testPolygon);\n  for (var i = 0; i < points.features.length; i++) {\n    if (!booleanPointInPolygon__default['default'](points.features[i], targetPolygon)) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * @private\n * @param {Array<Object>} list list of objects which might contain the 'group' attribute\n * @returns {boolean} true if all the objects in the list are marked as grouped\n */\nfunction allGrouped(list) {\n  for (var i = 0; i < list.length; i++) {\n    if (list[i].grouped === false) {\n      return false;\n    }\n  }\n  return true;\n}\n\nmodule.exports = isobands;\nmodule.exports.default = isobands;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","import React, {\n  useState,\n  useEffect,\n  createContext,\n  useContext\n} from 'react'\nimport { useLocation, useSearchParams } from 'react-router'\nimport Spinner from '../Spinner'\n\nconst DataContext = createContext()\n\n/**\n * Custom Hook to fetch and return items using Context\n * @returns {Object} The fetched items\n */\nexport const useFetchedItems = () => {\n  // Use the useContext hook to access the DataContext\n  return useContext(DataContext)\n}\n\nconst fetchItems = async (url, urlParams = '') => {\n  const response = await fetch(url + urlParams)\n  return await response.json()\n}\n\n/**\n * A provider component for fetching and managing items data from an API.\n * Wrap this around a component that needs to fetch and manage items data and\n * then use the `useFetchedItems` hook to access the data anywhere in the\n * component tree within the provider.\n *\n * Usage:\n * Use the FetchItemsProvider Component as a wrapper for any component that needs\n * access to fetched items. Provide the necessary props: `apiUrl` (API endpoint),\n * `isMapAndList` (true/false), and `children` (components you want to provide data for)\n *\n * Example:\n *  <FetchItemsProvider apiUrl=\"/api/items\" isMapAndList>\n *    <YourComponent />\n *  </FetchItemsProvider>\n *\n * Then in the child component (`YourComponent` in this case) you can use the\n * `useFetchedItems` hook to get the fetched data.\n *\n * Example:\n *  const YourComponent = () => {\n *    const {results, currentPage, isMapAndList, viewMode} = useFetchedItems();\n *    // Now you have access to `results`, `currentPage`, `viewMode` and `isMapAndList` data\n *    return <div>Your JSX goes here</div>\n *  }\n *\n * @see https://react.dev/learn/passing-data-deeply-with-context\n *\n * @param {string} apiUrl - The URL of the API endpoint.\n * @param {boolean} isMapAndList - Flag indicating whether both map and list views are supported.\n * @param {React.ReactNode} children - The child components to render.\n * @returns {React.ReactNode} - The rendered child components.\n */\nexport function FetchItemsProvider ({ apiUrl, isMapAndList, children }) {\n  const location = useLocation()\n  const [queryParams] = useSearchParams()\n  const [data, setData] = useState({ list: null, map: null })\n  const [currentPage, setCurrentPage] = useState(1)\n  const viewMode = queryParams.get('mode') || 'list'\n  const value = { results: data, currentPage, viewMode, isMapAndList: !!isMapAndList }\n\n  const fetchAndUpdate = async (url, key) => {\n    const params = new URLSearchParams(location.search)\n    params.delete('mode')\n\n    if (key === 'map') {\n      params.append('page_size', '10000')\n      params.delete('page')\n    }\n    try {\n      const json = await fetchItems(url, '?' + params)\n      setData(prevData => ({ ...prevData, [key]: json }))\n      setCurrentPage(queryParams.get('page') || 1)\n    } catch (error) {\n      console.error(error)\n    }\n  }\n\n  useEffect(() => {\n    // fetches and updates data from an API. For each view mode ('list', 'map'),\n    // it calls fetchAndUpdate directly if it's the current mode, else it sets\n    // an idle callback.\n    const views = isMapAndList ? ['list', 'map'] : ['list']\n\n    for (const view of views) {\n      if (viewMode === view) {\n        fetchAndUpdate(apiUrl, view)\n      } else {\n        if (typeof requestIdleCallback === 'function') {\n          requestIdleCallback(() => fetchAndUpdate(apiUrl, view), { timeout: 1000 })\n        } else {\n          setTimeout(() => fetchAndUpdate(apiUrl, view), 1000)\n        }\n      }\n    }\n  }, [apiUrl, location.search])\n\n  if (data[viewMode] === null) {\n    return <Spinner />\n  }\n\n  return (\n    <DataContext.Provider value={value}>\n      {children}\n    </DataContext.Provider>\n  )\n}\n","'use strict';\n\nmodule.exports = rbush;\nmodule.exports.default = rbush;\n\nvar quickselect = require('quickselect');\n\nfunction rbush(maxEntries, format) {\n    if (!(this instanceof rbush)) return new rbush(maxEntries, format);\n\n    // max entries in a node is 9 by default; min node fill is 40% for best performance\n    this._maxEntries = Math.max(4, maxEntries || 9);\n    this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));\n\n    if (format) {\n        this._initFormat(format);\n    }\n\n    this.clear();\n}\n\nrbush.prototype = {\n\n    all: function () {\n        return this._all(this.data, []);\n    },\n\n    search: function (bbox) {\n\n        var node = this.data,\n            result = [],\n            toBBox = this.toBBox;\n\n        if (!intersects(bbox, node)) return result;\n\n        var nodesToSearch = [],\n            i, len, child, childBBox;\n\n        while (node) {\n            for (i = 0, len = node.children.length; i < len; i++) {\n\n                child = node.children[i];\n                childBBox = node.leaf ? toBBox(child) : child;\n\n                if (intersects(bbox, childBBox)) {\n                    if (node.leaf) result.push(child);\n                    else if (contains(bbox, childBBox)) this._all(child, result);\n                    else nodesToSearch.push(child);\n                }\n            }\n            node = nodesToSearch.pop();\n        }\n\n        return result;\n    },\n\n    collides: function (bbox) {\n\n        var node = this.data,\n            toBBox = this.toBBox;\n\n        if (!intersects(bbox, node)) return false;\n\n        var nodesToSearch = [],\n            i, len, child, childBBox;\n\n        while (node) {\n            for (i = 0, len = node.children.length; i < len; i++) {\n\n                child = node.children[i];\n                childBBox = node.leaf ? toBBox(child) : child;\n\n                if (intersects(bbox, childBBox)) {\n                    if (node.leaf || contains(bbox, childBBox)) return true;\n                    nodesToSearch.push(child);\n                }\n            }\n            node = nodesToSearch.pop();\n        }\n\n        return false;\n    },\n\n    load: function (data) {\n        if (!(data && data.length)) return this;\n\n        if (data.length < this._minEntries) {\n            for (var i = 0, len = data.length; i < len; i++) {\n                this.insert(data[i]);\n            }\n            return this;\n        }\n\n        // recursively build the tree with the given data from scratch using OMT algorithm\n        var node = this._build(data.slice(), 0, data.length - 1, 0);\n\n        if (!this.data.children.length) {\n            // save as is if tree is empty\n            this.data = node;\n\n        } else if (this.data.height === node.height) {\n            // split root if trees have the same height\n            this._splitRoot(this.data, node);\n\n        } else {\n            if (this.data.height < node.height) {\n                // swap trees if inserted one is bigger\n                var tmpNode = this.data;\n                this.data = node;\n                node = tmpNode;\n            }\n\n            // insert the small tree into the large tree at appropriate level\n            this._insert(node, this.data.height - node.height - 1, true);\n        }\n\n        return this;\n    },\n\n    insert: function (item) {\n        if (item) this._insert(item, this.data.height - 1);\n        return this;\n    },\n\n    clear: function () {\n        this.data = createNode([]);\n        return this;\n    },\n\n    remove: function (item, equalsFn) {\n        if (!item) return this;\n\n        var node = this.data,\n            bbox = this.toBBox(item),\n            path = [],\n            indexes = [],\n            i, parent, index, goingUp;\n\n        // depth-first iterative tree traversal\n        while (node || path.length) {\n\n            if (!node) { // go up\n                node = path.pop();\n                parent = path[path.length - 1];\n                i = indexes.pop();\n                goingUp = true;\n            }\n\n            if (node.leaf) { // check current node\n                index = findItem(item, node.children, equalsFn);\n\n                if (index !== -1) {\n                    // item found, remove the item and condense tree upwards\n                    node.children.splice(index, 1);\n                    path.push(node);\n                    this._condense(path);\n                    return this;\n                }\n            }\n\n            if (!goingUp && !node.leaf && contains(node, bbox)) { // go down\n                path.push(node);\n                indexes.push(i);\n                i = 0;\n                parent = node;\n                node = node.children[0];\n\n            } else if (parent) { // go right\n                i++;\n                node = parent.children[i];\n                goingUp = false;\n\n            } else node = null; // nothing found\n        }\n\n        return this;\n    },\n\n    toBBox: function (item) { return item; },\n\n    compareMinX: compareNodeMinX,\n    compareMinY: compareNodeMinY,\n\n    toJSON: function () { return this.data; },\n\n    fromJSON: function (data) {\n        this.data = data;\n        return this;\n    },\n\n    _all: function (node, result) {\n        var nodesToSearch = [];\n        while (node) {\n            if (node.leaf) result.push.apply(result, node.children);\n            else nodesToSearch.push.apply(nodesToSearch, node.children);\n\n            node = nodesToSearch.pop();\n        }\n        return result;\n    },\n\n    _build: function (items, left, right, height) {\n\n        var N = right - left + 1,\n            M = this._maxEntries,\n            node;\n\n        if (N <= M) {\n            // reached leaf level; return leaf\n            node = createNode(items.slice(left, right + 1));\n            calcBBox(node, this.toBBox);\n            return node;\n        }\n\n        if (!height) {\n            // target height of the bulk-loaded tree\n            height = Math.ceil(Math.log(N) / Math.log(M));\n\n            // target number of root entries to maximize storage utilization\n            M = Math.ceil(N / Math.pow(M, height - 1));\n        }\n\n        node = createNode([]);\n        node.leaf = false;\n        node.height = height;\n\n        // split the items into M mostly square tiles\n\n        var N2 = Math.ceil(N / M),\n            N1 = N2 * Math.ceil(Math.sqrt(M)),\n            i, j, right2, right3;\n\n        multiSelect(items, left, right, N1, this.compareMinX);\n\n        for (i = left; i <= right; i += N1) {\n\n            right2 = Math.min(i + N1 - 1, right);\n\n            multiSelect(items, i, right2, N2, this.compareMinY);\n\n            for (j = i; j <= right2; j += N2) {\n\n                right3 = Math.min(j + N2 - 1, right2);\n\n                // pack each entry recursively\n                node.children.push(this._build(items, j, right3, height - 1));\n            }\n        }\n\n        calcBBox(node, this.toBBox);\n\n        return node;\n    },\n\n    _chooseSubtree: function (bbox, node, level, path) {\n\n        var i, len, child, targetNode, area, enlargement, minArea, minEnlargement;\n\n        while (true) {\n            path.push(node);\n\n            if (node.leaf || path.length - 1 === level) break;\n\n            minArea = minEnlargement = Infinity;\n\n            for (i = 0, len = node.children.length; i < len; i++) {\n                child = node.children[i];\n                area = bboxArea(child);\n                enlargement = enlargedArea(bbox, child) - area;\n\n                // choose entry with the least area enlargement\n                if (enlargement < minEnlargement) {\n                    minEnlargement = enlargement;\n                    minArea = area < minArea ? area : minArea;\n                    targetNode = child;\n\n                } else if (enlargement === minEnlargement) {\n                    // otherwise choose one with the smallest area\n                    if (area < minArea) {\n                        minArea = area;\n                        targetNode = child;\n                    }\n                }\n            }\n\n            node = targetNode || node.children[0];\n        }\n\n        return node;\n    },\n\n    _insert: function (item, level, isNode) {\n\n        var toBBox = this.toBBox,\n            bbox = isNode ? item : toBBox(item),\n            insertPath = [];\n\n        // find the best node for accommodating the item, saving all nodes along the path too\n        var node = this._chooseSubtree(bbox, this.data, level, insertPath);\n\n        // put the item into the node\n        node.children.push(item);\n        extend(node, bbox);\n\n        // split on node overflow; propagate upwards if necessary\n        while (level >= 0) {\n            if (insertPath[level].children.length > this._maxEntries) {\n                this._split(insertPath, level);\n                level--;\n            } else break;\n        }\n\n        // adjust bboxes along the insertion path\n        this._adjustParentBBoxes(bbox, insertPath, level);\n    },\n\n    // split overflowed node into two\n    _split: function (insertPath, level) {\n\n        var node = insertPath[level],\n            M = node.children.length,\n            m = this._minEntries;\n\n        this._chooseSplitAxis(node, m, M);\n\n        var splitIndex = this._chooseSplitIndex(node, m, M);\n\n        var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));\n        newNode.height = node.height;\n        newNode.leaf = node.leaf;\n\n        calcBBox(node, this.toBBox);\n        calcBBox(newNode, this.toBBox);\n\n        if (level) insertPath[level - 1].children.push(newNode);\n        else this._splitRoot(node, newNode);\n    },\n\n    _splitRoot: function (node, newNode) {\n        // split root node\n        this.data = createNode([node, newNode]);\n        this.data.height = node.height + 1;\n        this.data.leaf = false;\n        calcBBox(this.data, this.toBBox);\n    },\n\n    _chooseSplitIndex: function (node, m, M) {\n\n        var i, bbox1, bbox2, overlap, area, minOverlap, minArea, index;\n\n        minOverlap = minArea = Infinity;\n\n        for (i = m; i <= M - m; i++) {\n            bbox1 = distBBox(node, 0, i, this.toBBox);\n            bbox2 = distBBox(node, i, M, this.toBBox);\n\n            overlap = intersectionArea(bbox1, bbox2);\n            area = bboxArea(bbox1) + bboxArea(bbox2);\n\n            // choose distribution with minimum overlap\n            if (overlap < minOverlap) {\n                minOverlap = overlap;\n                index = i;\n\n                minArea = area < minArea ? area : minArea;\n\n            } else if (overlap === minOverlap) {\n                // otherwise choose distribution with minimum area\n                if (area < minArea) {\n                    minArea = area;\n                    index = i;\n                }\n            }\n        }\n\n        return index;\n    },\n\n    // sorts node children by the best axis for split\n    _chooseSplitAxis: function (node, m, M) {\n\n        var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX,\n            compareMinY = node.leaf ? this.compareMinY : compareNodeMinY,\n            xMargin = this._allDistMargin(node, m, M, compareMinX),\n            yMargin = this._allDistMargin(node, m, M, compareMinY);\n\n        // if total distributions margin value is minimal for x, sort by minX,\n        // otherwise it's already sorted by minY\n        if (xMargin < yMargin) node.children.sort(compareMinX);\n    },\n\n    // total margin of all possible split distributions where each node is at least m full\n    _allDistMargin: function (node, m, M, compare) {\n\n        node.children.sort(compare);\n\n        var toBBox = this.toBBox,\n            leftBBox = distBBox(node, 0, m, toBBox),\n            rightBBox = distBBox(node, M - m, M, toBBox),\n            margin = bboxMargin(leftBBox) + bboxMargin(rightBBox),\n            i, child;\n\n        for (i = m; i < M - m; i++) {\n            child = node.children[i];\n            extend(leftBBox, node.leaf ? toBBox(child) : child);\n            margin += bboxMargin(leftBBox);\n        }\n\n        for (i = M - m - 1; i >= m; i--) {\n            child = node.children[i];\n            extend(rightBBox, node.leaf ? toBBox(child) : child);\n            margin += bboxMargin(rightBBox);\n        }\n\n        return margin;\n    },\n\n    _adjustParentBBoxes: function (bbox, path, level) {\n        // adjust bboxes along the given tree path\n        for (var i = level; i >= 0; i--) {\n            extend(path[i], bbox);\n        }\n    },\n\n    _condense: function (path) {\n        // go through the path, removing empty nodes and updating bboxes\n        for (var i = path.length - 1, siblings; i >= 0; i--) {\n            if (path[i].children.length === 0) {\n                if (i > 0) {\n                    siblings = path[i - 1].children;\n                    siblings.splice(siblings.indexOf(path[i]), 1);\n\n                } else this.clear();\n\n            } else calcBBox(path[i], this.toBBox);\n        }\n    },\n\n    _initFormat: function (format) {\n        // data format (minX, minY, maxX, maxY accessors)\n\n        // uses eval-type function compilation instead of just accepting a toBBox function\n        // because the algorithms are very sensitive to sorting functions performance,\n        // so they should be dead simple and without inner calls\n\n        var compareArr = ['return a', ' - b', ';'];\n\n        this.compareMinX = new Function('a', 'b', compareArr.join(format[0]));\n        this.compareMinY = new Function('a', 'b', compareArr.join(format[1]));\n\n        this.toBBox = new Function('a',\n            'return {minX: a' + format[0] +\n            ', minY: a' + format[1] +\n            ', maxX: a' + format[2] +\n            ', maxY: a' + format[3] + '};');\n    }\n};\n\nfunction findItem(item, items, equalsFn) {\n    if (!equalsFn) return items.indexOf(item);\n\n    for (var i = 0; i < items.length; i++) {\n        if (equalsFn(item, items[i])) return i;\n    }\n    return -1;\n}\n\n// calculate node's bbox from bboxes of its children\nfunction calcBBox(node, toBBox) {\n    distBBox(node, 0, node.children.length, toBBox, node);\n}\n\n// min bounding rectangle of node children from k to p-1\nfunction distBBox(node, k, p, toBBox, destNode) {\n    if (!destNode) destNode = createNode(null);\n    destNode.minX = Infinity;\n    destNode.minY = Infinity;\n    destNode.maxX = -Infinity;\n    destNode.maxY = -Infinity;\n\n    for (var i = k, child; i < p; i++) {\n        child = node.children[i];\n        extend(destNode, node.leaf ? toBBox(child) : child);\n    }\n\n    return destNode;\n}\n\nfunction extend(a, b) {\n    a.minX = Math.min(a.minX, b.minX);\n    a.minY = Math.min(a.minY, b.minY);\n    a.maxX = Math.max(a.maxX, b.maxX);\n    a.maxY = Math.max(a.maxY, b.maxY);\n    return a;\n}\n\nfunction compareNodeMinX(a, b) { return a.minX - b.minX; }\nfunction compareNodeMinY(a, b) { return a.minY - b.minY; }\n\nfunction bboxArea(a)   { return (a.maxX - a.minX) * (a.maxY - a.minY); }\nfunction bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }\n\nfunction enlargedArea(a, b) {\n    return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *\n           (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));\n}\n\nfunction intersectionArea(a, b) {\n    var minX = Math.max(a.minX, b.minX),\n        minY = Math.max(a.minY, b.minY),\n        maxX = Math.min(a.maxX, b.maxX),\n        maxY = Math.min(a.maxY, b.maxY);\n\n    return Math.max(0, maxX - minX) *\n           Math.max(0, maxY - minY);\n}\n\nfunction contains(a, b) {\n    return a.minX <= b.minX &&\n           a.minY <= b.minY &&\n           b.maxX <= a.maxX &&\n           b.maxY <= a.maxY;\n}\n\nfunction intersects(a, b) {\n    return b.minX <= a.maxX &&\n           b.minY <= a.maxY &&\n           b.maxX >= a.minX &&\n           b.maxY >= a.minY;\n}\n\nfunction createNode(children) {\n    return {\n        children: children,\n        height: 1,\n        leaf: true,\n        minX: Infinity,\n        minY: Infinity,\n        maxX: -Infinity,\n        maxY: -Infinity\n    };\n}\n\n// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;\n// combines selection algorithm with binary divide & conquer approach\n\nfunction multiSelect(arr, left, right, n, compare) {\n    var stack = [left, right],\n        mid;\n\n    while (stack.length) {\n        right = stack.pop();\n        left = stack.pop();\n\n        if (right - left <= n) continue;\n\n        mid = left + Math.ceil((right - left) / n / 2) * n;\n        quickselect(arr, mid, left, right, compare);\n\n        stack.push(left, mid, mid, right);\n    }\n}\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar polygonClipping = require('polygon-clipping');\nvar helpers = require('@turf/helpers');\nvar invariant = require('@turf/invariant');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar polygonClipping__default = /*#__PURE__*/_interopDefaultLegacy(polygonClipping);\n\n/**\n * Finds the difference between two {@link Polygon|polygons} by clipping the second polygon from the first.\n *\n * @name difference\n * @param {Feature<Polygon|MultiPolygon>} polygon1 input Polygon feature\n * @param {Feature<Polygon|MultiPolygon>} polygon2 Polygon feature to difference from polygon1\n * @returns {Feature<Polygon|MultiPolygon>|null} a Polygon or MultiPolygon feature showing the area of `polygon1` excluding the area of `polygon2` (if empty returns `null`)\n * @example\n * var polygon1 = turf.polygon([[\n *   [128, -26],\n *   [141, -26],\n *   [141, -21],\n *   [128, -21],\n *   [128, -26]\n * ]], {\n *   \"fill\": \"#F00\",\n *   \"fill-opacity\": 0.1\n * });\n * var polygon2 = turf.polygon([[\n *   [126, -28],\n *   [140, -28],\n *   [140, -20],\n *   [126, -20],\n *   [126, -28]\n * ]], {\n *   \"fill\": \"#00F\",\n *   \"fill-opacity\": 0.1\n * });\n *\n * var difference = turf.difference(polygon1, polygon2);\n *\n * //addToMap\n * var addToMap = [polygon1, polygon2, difference];\n */\nfunction difference(polygon1, polygon2) {\n  var geom1 = invariant.getGeom(polygon1);\n  var geom2 = invariant.getGeom(polygon2);\n  var properties = polygon1.properties || {};\n\n  var differenced = polygonClipping__default['default'].difference(\n    geom1.coordinates,\n    geom2.coordinates\n  );\n  if (differenced.length === 0) return null;\n  if (differenced.length === 1) return helpers.polygon(differenced[0], properties);\n  return helpers.multiPolygon(differenced, properties);\n}\n\nmodule.exports = difference;\nmodule.exports.default = difference;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bbox_1 = __importDefault(require(\"@turf/bbox\"));\nvar boolean_point_on_line_1 = __importDefault(require(\"@turf/boolean-point-on-line\"));\nvar boolean_point_in_polygon_1 = __importDefault(require(\"@turf/boolean-point-in-polygon\"));\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Boolean-within returns true if the first geometry is completely within the second geometry.\n * The interiors of both geometries must intersect and, the interior and boundary of the primary (geometry a)\n * must not intersect the exterior of the secondary (geometry b).\n * Boolean-within returns the exact opposite result of the `@turf/boolean-contains`.\n *\n * @name booleanWithin\n * @param {Geometry|Feature<any>} feature1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<any>} feature2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false\n * @example\n * var line = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);\n * var point = turf.point([1, 2]);\n *\n * turf.booleanWithin(point, line);\n * //=true\n */\nfunction booleanWithin(feature1, feature2) {\n    var geom1 = invariant_1.getGeom(feature1);\n    var geom2 = invariant_1.getGeom(feature2);\n    var type1 = geom1.type;\n    var type2 = geom2.type;\n    switch (type1) {\n        case \"Point\":\n            switch (type2) {\n                case \"MultiPoint\":\n                    return isPointInMultiPoint(geom1, geom2);\n                case \"LineString\":\n                    return boolean_point_on_line_1.default(geom1, geom2, { ignoreEndVertices: true });\n                case \"Polygon\":\n                case \"MultiPolygon\":\n                    return boolean_point_in_polygon_1.default(geom1, geom2, { ignoreBoundary: true });\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        case \"MultiPoint\":\n            switch (type2) {\n                case \"MultiPoint\":\n                    return isMultiPointInMultiPoint(geom1, geom2);\n                case \"LineString\":\n                    return isMultiPointOnLine(geom1, geom2);\n                case \"Polygon\":\n                case \"MultiPolygon\":\n                    return isMultiPointInPoly(geom1, geom2);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        case \"LineString\":\n            switch (type2) {\n                case \"LineString\":\n                    return isLineOnLine(geom1, geom2);\n                case \"Polygon\":\n                case \"MultiPolygon\":\n                    return isLineInPoly(geom1, geom2);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        case \"Polygon\":\n            switch (type2) {\n                case \"Polygon\":\n                case \"MultiPolygon\":\n                    return isPolyInPoly(geom1, geom2);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        default:\n            throw new Error(\"feature1 \" + type1 + \" geometry not supported\");\n    }\n}\nfunction isPointInMultiPoint(point, multiPoint) {\n    var i;\n    var output = false;\n    for (i = 0; i < multiPoint.coordinates.length; i++) {\n        if (compareCoords(multiPoint.coordinates[i], point.coordinates)) {\n            output = true;\n            break;\n        }\n    }\n    return output;\n}\nfunction isMultiPointInMultiPoint(multiPoint1, multiPoint2) {\n    for (var i = 0; i < multiPoint1.coordinates.length; i++) {\n        var anyMatch = false;\n        for (var i2 = 0; i2 < multiPoint2.coordinates.length; i2++) {\n            if (compareCoords(multiPoint1.coordinates[i], multiPoint2.coordinates[i2])) {\n                anyMatch = true;\n            }\n        }\n        if (!anyMatch) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction isMultiPointOnLine(multiPoint, lineString) {\n    var foundInsidePoint = false;\n    for (var i = 0; i < multiPoint.coordinates.length; i++) {\n        if (!boolean_point_on_line_1.default(multiPoint.coordinates[i], lineString)) {\n            return false;\n        }\n        if (!foundInsidePoint) {\n            foundInsidePoint = boolean_point_on_line_1.default(multiPoint.coordinates[i], lineString, { ignoreEndVertices: true });\n        }\n    }\n    return foundInsidePoint;\n}\nfunction isMultiPointInPoly(multiPoint, polygon) {\n    var output = true;\n    var oneInside = false;\n    var isInside = false;\n    for (var i = 0; i < multiPoint.coordinates.length; i++) {\n        isInside = boolean_point_in_polygon_1.default(multiPoint.coordinates[1], polygon);\n        if (!isInside) {\n            output = false;\n            break;\n        }\n        if (!oneInside) {\n            isInside = boolean_point_in_polygon_1.default(multiPoint.coordinates[1], polygon, {\n                ignoreBoundary: true,\n            });\n        }\n    }\n    return output && isInside;\n}\nfunction isLineOnLine(lineString1, lineString2) {\n    for (var i = 0; i < lineString1.coordinates.length; i++) {\n        if (!boolean_point_on_line_1.default(lineString1.coordinates[i], lineString2)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction isLineInPoly(linestring, polygon) {\n    var polyBbox = bbox_1.default(polygon);\n    var lineBbox = bbox_1.default(linestring);\n    if (!doBBoxOverlap(polyBbox, lineBbox)) {\n        return false;\n    }\n    var foundInsidePoint = false;\n    for (var i = 0; i < linestring.coordinates.length - 1; i++) {\n        if (!boolean_point_in_polygon_1.default(linestring.coordinates[i], polygon)) {\n            return false;\n        }\n        if (!foundInsidePoint) {\n            foundInsidePoint = boolean_point_in_polygon_1.default(linestring.coordinates[i], polygon, { ignoreBoundary: true });\n        }\n        if (!foundInsidePoint) {\n            var midpoint = getMidpoint(linestring.coordinates[i], linestring.coordinates[i + 1]);\n            foundInsidePoint = boolean_point_in_polygon_1.default(midpoint, polygon, {\n                ignoreBoundary: true,\n            });\n        }\n    }\n    return foundInsidePoint;\n}\n/**\n * Is Polygon2 in Polygon1\n * Only takes into account outer rings\n *\n * @private\n * @param {Polygon} geometry1\n * @param {Polygon|MultiPolygon} geometry2\n * @returns {boolean} true/false\n */\nfunction isPolyInPoly(geometry1, geometry2) {\n    var poly1Bbox = bbox_1.default(geometry1);\n    var poly2Bbox = bbox_1.default(geometry2);\n    if (!doBBoxOverlap(poly2Bbox, poly1Bbox)) {\n        return false;\n    }\n    for (var i = 0; i < geometry1.coordinates[0].length; i++) {\n        if (!boolean_point_in_polygon_1.default(geometry1.coordinates[0][i], geometry2)) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction doBBoxOverlap(bbox1, bbox2) {\n    if (bbox1[0] > bbox2[0])\n        return false;\n    if (bbox1[2] < bbox2[2])\n        return false;\n    if (bbox1[1] > bbox2[1])\n        return false;\n    if (bbox1[3] < bbox2[3])\n        return false;\n    return true;\n}\n/**\n * compareCoords\n *\n * @private\n * @param {Position} pair1 point [x,y]\n * @param {Position} pair2 point [x,y]\n * @returns {boolean} true/false if coord pairs match\n */\nfunction compareCoords(pair1, pair2) {\n    return pair1[0] === pair2[0] && pair1[1] === pair2[1];\n}\n/**\n * getMidpoint\n *\n * @private\n * @param {Position} pair1 point [x,y]\n * @param {Position} pair2 point [x,y]\n * @returns {Position} midpoint of pair1 and pair2\n */\nfunction getMidpoint(pair1, pair2) {\n    return [(pair1[0] + pair2[0]) / 2, (pair1[1] + pair2[1]) / 2];\n}\nexports.default = booleanWithin;\n","\r\n/**\r\n * @requires ./PriorityQueue.js\r\n */\r\n\r\nif (typeof module !== 'undefined' && module.exports) {\r\n      var PriorityQueue = require('./PriorityQueue.js');\r\n}\r\n\r\n/**\r\n * OPTICS - Ordering points to identify the clustering structure\r\n *\r\n * @author Lukasz Krawczyk <contact@lukaszkrawczyk.eu>\r\n * @copyright MIT\r\n */\r\n\r\n/**\r\n * OPTICS class constructor\r\n * @constructor\r\n *\r\n * @param {Array} dataset\r\n * @param {number} epsilon\r\n * @param {number} minPts\r\n * @param {function} distanceFunction\r\n * @returns {OPTICS}\r\n */\r\nfunction OPTICS(dataset, epsilon, minPts, distanceFunction) {\r\n  /** @type {number} */\r\n  this.epsilon = 1;\r\n  /** @type {number} */\r\n  this.minPts = 1;\r\n  /** @type {function} */\r\n  this.distance = this._euclideanDistance;\r\n\r\n  // temporary variables used during computation\r\n\r\n  /** @type {Array} */\r\n  this._reachability = [];\r\n  /** @type {Array} */\r\n  this._processed = [];\r\n  /** @type {number} */\r\n  this._coreDistance = 0;\r\n  /** @type {Array} */\r\n  this._orderedList = [];\r\n\r\n  this._init(dataset, epsilon, minPts, distanceFunction);\r\n}\r\n\r\n/******************************************************************************/\r\n// pulic functions\r\n\r\n/**\r\n * Start clustering\r\n *\r\n * @param {Array} dataset\r\n * @returns {undefined}\r\n * @access public\r\n */\r\nOPTICS.prototype.run = function(dataset, epsilon, minPts, distanceFunction) {\r\n  this._init(dataset, epsilon, minPts, distanceFunction);\r\n\r\n  for (var pointId = 0, l = this.dataset.length; pointId < l; pointId++) {\r\n    if (this._processed[pointId] !== 1) {\r\n      this._processed[pointId] = 1;\r\n      this.clusters.push([pointId]);\r\n      var clusterId = this.clusters.length - 1;\r\n\r\n      this._orderedList.push(pointId);\r\n      var priorityQueue = new PriorityQueue(null, null, 'asc');\r\n      var neighbors = this._regionQuery(pointId);\r\n\r\n      // using priority queue assign elements to new cluster\r\n      if (this._distanceToCore(pointId) !== undefined) {\r\n        this._updateQueue(pointId, neighbors, priorityQueue);\r\n        this._expandCluster(clusterId, priorityQueue);\r\n      }\r\n    }\r\n  }\r\n\r\n  return this.clusters;\r\n};\r\n\r\n/**\r\n * Generate reachability plot for all points\r\n *\r\n * @returns {array}\r\n * @access public\r\n */\r\nOPTICS.prototype.getReachabilityPlot = function() {\r\n  var reachabilityPlot = [];\r\n\r\n  for (var i = 0, l = this._orderedList.length; i < l; i++) {\r\n    var pointId = this._orderedList[i];\r\n    var distance = this._reachability[pointId];\r\n\r\n    reachabilityPlot.push([pointId, distance]);\r\n  }\r\n\r\n  return reachabilityPlot;\r\n};\r\n\r\n/******************************************************************************/\r\n// protected functions\r\n\r\n/**\r\n * Set object properties\r\n *\r\n * @param {Array} dataset\r\n * @param {number} epsilon\r\n * @param {number} minPts\r\n * @param {function} distance\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nOPTICS.prototype._init = function(dataset, epsilon, minPts, distance) {\r\n\r\n  if (dataset) {\r\n\r\n    if (!(dataset instanceof Array)) {\r\n      throw Error('Dataset must be of type array, ' +\r\n        typeof dataset + ' given');\r\n    }\r\n\r\n    this.dataset = dataset;\r\n    this.clusters = [];\r\n    this._reachability = new Array(this.dataset.length);\r\n    this._processed = new Array(this.dataset.length);\r\n    this._coreDistance = 0;\r\n    this._orderedList = [];\r\n  }\r\n\r\n  if (epsilon) {\r\n    this.epsilon = epsilon;\r\n  }\r\n\r\n  if (minPts) {\r\n    this.minPts = minPts;\r\n  }\r\n\r\n  if (distance) {\r\n    this.distance = distance;\r\n  }\r\n};\r\n\r\n/**\r\n * Update information in queue\r\n *\r\n * @param {number} pointId\r\n * @param {Array} neighbors\r\n * @param {PriorityQueue} queue\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nOPTICS.prototype._updateQueue = function(pointId, neighbors, queue) {\r\n  var self = this;\r\n\r\n  this._coreDistance = this._distanceToCore(pointId);\r\n  neighbors.forEach(function(pointId2) {\r\n    if (self._processed[pointId2] === undefined) {\r\n      var dist = self.distance(self.dataset[pointId], self.dataset[pointId2]);\r\n      var newReachableDistance = Math.max(self._coreDistance, dist);\r\n\r\n      if (self._reachability[pointId2] === undefined) {\r\n        self._reachability[pointId2] = newReachableDistance;\r\n        queue.insert(pointId2, newReachableDistance);\r\n      } else {\r\n        if (newReachableDistance < self._reachability[pointId2]) {\r\n          self._reachability[pointId2] = newReachableDistance;\r\n          queue.remove(pointId2);\r\n          queue.insert(pointId2, newReachableDistance);\r\n        }\r\n      }\r\n    }\r\n  });\r\n};\r\n\r\n/**\r\n * Expand cluster\r\n *\r\n * @param {number} clusterId\r\n * @param {PriorityQueue} queue\r\n * @returns {undefined}\r\n * @access protected\r\n */\r\nOPTICS.prototype._expandCluster = function(clusterId, queue) {\r\n  var queueElements = queue.getElements();\r\n\r\n  for (var p = 0, l = queueElements.length; p < l; p++) {\r\n    var pointId = queueElements[p];\r\n    if (this._processed[pointId] === undefined) {\r\n      var neighbors = this._regionQuery(pointId);\r\n      this._processed[pointId] = 1;\r\n\r\n      this.clusters[clusterId].push(pointId);\r\n      this._orderedList.push(pointId);\r\n\r\n      if (this._distanceToCore(pointId) !== undefined) {\r\n        this._updateQueue(pointId, neighbors, queue);\r\n        this._expandCluster(clusterId, queue);\r\n      }\r\n    }\r\n  }\r\n};\r\n\r\n/**\r\n * Calculating distance to cluster core\r\n *\r\n * @param {number} pointId\r\n * @returns {number}\r\n * @access protected\r\n */\r\nOPTICS.prototype._distanceToCore = function(pointId) {\r\n  var l = this.epsilon;\r\n  for (var coreDistCand = 0; coreDistCand < l; coreDistCand++) {\r\n    var neighbors = this._regionQuery(pointId, coreDistCand);\r\n    if (neighbors.length >= this.minPts) {\r\n      return coreDistCand;\r\n    }\r\n  }\r\n\r\n  return;\r\n};\r\n\r\n/**\r\n * Find all neighbors around given point\r\n *\r\n * @param {number} pointId\r\n * @param {number} epsilon\r\n * @returns {Array}\r\n * @access protected\r\n */\r\nOPTICS.prototype._regionQuery = function(pointId, epsilon) {\r\n  epsilon = epsilon || this.epsilon;\r\n  var neighbors = [];\r\n\r\n  for (var id = 0, l = this.dataset.length; id < l; id++) {\r\n    if (this.distance(this.dataset[pointId], this.dataset[id]) < epsilon) {\r\n      neighbors.push(id);\r\n    }\r\n  }\r\n\r\n  return neighbors;\r\n};\r\n\r\n/******************************************************************************/\r\n// helpers\r\n\r\n/**\r\n * Calculate euclidean distance in multidimensional space\r\n *\r\n * @param {Array} p\r\n * @param {Array} q\r\n * @returns {number}\r\n * @access protected\r\n */\r\nOPTICS.prototype._euclideanDistance = function(p, q) {\r\n  var sum = 0;\r\n  var i = Math.min(p.length, q.length);\r\n\r\n  while (i--) {\r\n    sum += (p[i] - q[i]) * (p[i] - q[i]);\r\n  }\r\n\r\n  return Math.sqrt(sum);\r\n};\r\n\r\nif (typeof module !== 'undefined' && module.exports) {\r\n  module.exports = OPTICS;\r\n}\r\n","'use strict';\n\nvar bbox = require('@turf/bbox');\nvar meta = require('@turf/meta');\nvar invariant = require('@turf/invariant');\nvar helpers = require('@turf/helpers');\nvar objectAssign = require('object-assign');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bbox__default = /*#__PURE__*/_interopDefaultLegacy(bbox);\nvar objectAssign__default = /*#__PURE__*/_interopDefaultLegacy(objectAssign);\n\n/**\n * @license GNU Affero General Public License.\n * Copyright (c) 2015, 2015 Ronny Lorenz <ronny@tbi.univie.ac.at>\n * v. 1.2.0\n * https://github.com/RaumZeit/MarchingSquares.js\n *\n * MarchingSquaresJS is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * MarchingSquaresJS is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * As additional permission under GNU Affero General Public License version 3\n * section 7, third-party projects (personal or commercial) may distribute,\n * include, or link against UNMODIFIED VERSIONS of MarchingSquaresJS without the\n * requirement that said third-party project for that reason alone becomes\n * subject to any requirement of the GNU Affero General Public License version 3.\n * Any modifications to MarchingSquaresJS, however, must be shared with the public\n * and made available.\n *\n * In summary this:\n * - allows you to use MarchingSquaresJS at no cost\n * - allows you to use MarchingSquaresJS for both personal and commercial purposes\n * - allows you to distribute UNMODIFIED VERSIONS of MarchingSquaresJS under any\n *   license as long as this license notice is included\n * - enables you to keep the source code of your program that uses MarchingSquaresJS\n *   undisclosed\n * - forces you to share any modifications you have made to MarchingSquaresJS,\n *   e.g. bug-fixes\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with MarchingSquaresJS.  If not, see <http://www.gnu.org/licenses/>.\n */\n\n/**\n * Compute the isocontour(s) of a scalar 2D field given\n * a certain threshold by applying the Marching Squares\n * Algorithm. The function returns a list of path coordinates\n */\nvar defaultSettings = {\n  successCallback: null,\n  verbose: false,\n};\n\nvar settings = {};\n\nfunction isoContours(data, threshold, options) {\n  /* process options */\n  options = options ? options : {};\n\n  var optionKeys = Object.keys(defaultSettings);\n\n  for (var i = 0; i < optionKeys.length; i++) {\n    var key = optionKeys[i];\n    var val = options[key];\n    val =\n      typeof val !== \"undefined\" && val !== null ? val : defaultSettings[key];\n\n    settings[key] = val;\n  }\n\n  if (settings.verbose)\n    console.log(\n      \"MarchingSquaresJS-isoContours: computing isocontour for \" + threshold\n    );\n\n  var ret = contourGrid2Paths(computeContourGrid(data, threshold));\n\n  if (typeof settings.successCallback === \"function\")\n    settings.successCallback(ret);\n\n  return ret;\n}\n\n/*\n  Thats all for the public interface, below follows the actual\n  implementation\n*/\n\n/*\n################################\nIsocontour implementation below\n################################\n*/\n\n/* assume that x1 == 1 &&  x0 == 0 */\nfunction interpolateX(y, y0, y1) {\n  return (y - y0) / (y1 - y0);\n}\n\n/* compute the isocontour 4-bit grid */\nfunction computeContourGrid(data, threshold) {\n  var rows = data.length - 1;\n  var cols = data[0].length - 1;\n  var ContourGrid = { rows: rows, cols: cols, cells: [] };\n\n  for (var j = 0; j < rows; ++j) {\n    ContourGrid.cells[j] = [];\n    for (var i = 0; i < cols; ++i) {\n      /* compose the 4-bit corner representation */\n      var cval = 0;\n\n      var tl = data[j + 1][i];\n      var tr = data[j + 1][i + 1];\n      var br = data[j][i + 1];\n      var bl = data[j][i];\n\n      if (isNaN(tl) || isNaN(tr) || isNaN(br) || isNaN(bl)) {\n        continue;\n      }\n      cval |= tl >= threshold ? 8 : 0;\n      cval |= tr >= threshold ? 4 : 0;\n      cval |= br >= threshold ? 2 : 0;\n      cval |= bl >= threshold ? 1 : 0;\n\n      /* resolve ambiguity for cval == 5 || 10 via averaging */\n      var flipped = false;\n      if (cval === 5 || cval === 10) {\n        var average = (tl + tr + br + bl) / 4;\n        if (cval === 5 && average < threshold) {\n          cval = 10;\n          flipped = true;\n        } else if (cval === 10 && average < threshold) {\n          cval = 5;\n          flipped = true;\n        }\n      }\n\n      /* add cell to ContourGrid if it contains edges */\n      if (cval !== 0 && cval !== 15) {\n        var top, bottom, left, right;\n        top = bottom = left = right = 0.5;\n        /* interpolate edges of cell */\n        if (cval === 1) {\n          left = 1 - interpolateX(threshold, tl, bl);\n          bottom = 1 - interpolateX(threshold, br, bl);\n        } else if (cval === 2) {\n          bottom = interpolateX(threshold, bl, br);\n          right = 1 - interpolateX(threshold, tr, br);\n        } else if (cval === 3) {\n          left = 1 - interpolateX(threshold, tl, bl);\n          right = 1 - interpolateX(threshold, tr, br);\n        } else if (cval === 4) {\n          top = interpolateX(threshold, tl, tr);\n          right = interpolateX(threshold, br, tr);\n        } else if (cval === 5) {\n          top = interpolateX(threshold, tl, tr);\n          right = interpolateX(threshold, br, tr);\n          bottom = 1 - interpolateX(threshold, br, bl);\n          left = 1 - interpolateX(threshold, tl, bl);\n        } else if (cval === 6) {\n          bottom = interpolateX(threshold, bl, br);\n          top = interpolateX(threshold, tl, tr);\n        } else if (cval === 7) {\n          left = 1 - interpolateX(threshold, tl, bl);\n          top = interpolateX(threshold, tl, tr);\n        } else if (cval === 8) {\n          left = interpolateX(threshold, bl, tl);\n          top = 1 - interpolateX(threshold, tr, tl);\n        } else if (cval === 9) {\n          bottom = 1 - interpolateX(threshold, br, bl);\n          top = 1 - interpolateX(threshold, tr, tl);\n        } else if (cval === 10) {\n          top = 1 - interpolateX(threshold, tr, tl);\n          right = 1 - interpolateX(threshold, tr, br);\n          bottom = interpolateX(threshold, bl, br);\n          left = interpolateX(threshold, bl, tl);\n        } else if (cval === 11) {\n          top = 1 - interpolateX(threshold, tr, tl);\n          right = 1 - interpolateX(threshold, tr, br);\n        } else if (cval === 12) {\n          left = interpolateX(threshold, bl, tl);\n          right = interpolateX(threshold, br, tr);\n        } else if (cval === 13) {\n          bottom = 1 - interpolateX(threshold, br, bl);\n          right = interpolateX(threshold, br, tr);\n        } else if (cval === 14) {\n          left = interpolateX(threshold, bl, tl);\n          bottom = interpolateX(threshold, bl, br);\n        } else {\n          console.log(\n            \"MarchingSquaresJS-isoContours: Illegal cval detected: \" + cval\n          );\n        }\n        ContourGrid.cells[j][i] = {\n          cval: cval,\n          flipped: flipped,\n          top: top,\n          right: right,\n          bottom: bottom,\n          left: left,\n        };\n      }\n    }\n  }\n\n  return ContourGrid;\n}\n\nfunction isSaddle(cell) {\n  return cell.cval === 5 || cell.cval === 10;\n}\n\nfunction isTrivial(cell) {\n  return cell.cval === 0 || cell.cval === 15;\n}\n\nfunction clearCell(cell) {\n  if (!isTrivial(cell) && cell.cval !== 5 && cell.cval !== 10) {\n    cell.cval = 15;\n  }\n}\n\nfunction getXY(cell, edge) {\n  if (edge === \"top\") {\n    return [cell.top, 1.0];\n  } else if (edge === \"bottom\") {\n    return [cell.bottom, 0.0];\n  } else if (edge === \"right\") {\n    return [1.0, cell.right];\n  } else if (edge === \"left\") {\n    return [0.0, cell.left];\n  }\n}\n\nfunction contourGrid2Paths(grid) {\n  var paths = [];\n  var path_idx = 0;\n  var epsilon = 1e-7;\n\n  grid.cells.forEach(function (g, j) {\n    g.forEach(function (gg, i) {\n      if (typeof gg !== \"undefined\" && !isSaddle(gg) && !isTrivial(gg)) {\n        var p = tracePath(grid.cells, j, i);\n        var merged = false;\n        /* we may try to merge paths at this point */\n        if (p.info === \"mergeable\") {\n          /*\n            search backwards through the path array to find an entry\n            that starts with where the current path ends...\n          */\n          var x = p.path[p.path.length - 1][0],\n            y = p.path[p.path.length - 1][1];\n\n          for (var k = path_idx - 1; k >= 0; k--) {\n            if (\n              Math.abs(paths[k][0][0] - x) <= epsilon &&\n              Math.abs(paths[k][0][1] - y) <= epsilon\n            ) {\n              for (var l = p.path.length - 2; l >= 0; --l) {\n                paths[k].unshift(p.path[l]);\n              }\n              merged = true;\n              break;\n            }\n          }\n        }\n        if (!merged) paths[path_idx++] = p.path;\n      }\n    });\n  });\n\n  return paths;\n}\n\n/*\n  construct consecutive line segments from starting cell by\n  walking arround the enclosed area clock-wise\n  */\nfunction tracePath(grid, j, i) {\n  var maxj = grid.length;\n  var p = [];\n  var dxContour = [0, 0, 1, 1, 0, 0, 0, 0, -1, 0, 1, 1, -1, 0, -1, 0];\n  var dyContour = [0, -1, 0, 0, 1, 1, 1, 1, 0, -1, 0, 0, 0, -1, 0, 0];\n  var dx, dy;\n  var startEdge = [\n    \"none\",\n    \"left\",\n    \"bottom\",\n    \"left\",\n    \"right\",\n    \"none\",\n    \"bottom\",\n    \"left\",\n    \"top\",\n    \"top\",\n    \"none\",\n    \"top\",\n    \"right\",\n    \"right\",\n    \"bottom\",\n    \"none\",\n  ];\n  var nextEdge = [\n    \"none\",\n    \"bottom\",\n    \"right\",\n    \"right\",\n    \"top\",\n    \"top\",\n    \"top\",\n    \"top\",\n    \"left\",\n    \"bottom\",\n    \"right\",\n    \"right\",\n    \"left\",\n    \"bottom\",\n    \"left\",\n    \"none\",\n  ];\n  var edge;\n\n  var currentCell = grid[j][i];\n\n  var cval = currentCell.cval;\n  var edge = startEdge[cval];\n\n  var pt = getXY(currentCell, edge);\n\n  /* push initial segment */\n  p.push([i + pt[0], j + pt[1]]);\n  edge = nextEdge[cval];\n  pt = getXY(currentCell, edge);\n  p.push([i + pt[0], j + pt[1]]);\n  clearCell(currentCell);\n\n  /* now walk arround the enclosed area in clockwise-direction */\n  var k = i + dxContour[cval];\n  var l = j + dyContour[cval];\n  var prev_cval = cval;\n\n  while (k >= 0 && l >= 0 && l < maxj && (k != i || l != j)) {\n    currentCell = grid[l][k];\n    if (typeof currentCell === \"undefined\") {\n      /* path ends here */\n      //console.log(k + \" \" + l + \" is undefined, stopping path!\");\n      break;\n    }\n    cval = currentCell.cval;\n    if (cval === 0 || cval === 15) {\n      return { path: p, info: \"mergeable\" };\n    }\n    edge = nextEdge[cval];\n    dx = dxContour[cval];\n    dy = dyContour[cval];\n    if (cval === 5 || cval === 10) {\n      /* select upper or lower band, depending on previous cells cval */\n      if (cval === 5) {\n        if (currentCell.flipped) {\n          /* this is actually a flipped case 10 */\n          if (dyContour[prev_cval] === -1) {\n            edge = \"left\";\n            dx = -1;\n            dy = 0;\n          } else {\n            edge = \"right\";\n            dx = 1;\n            dy = 0;\n          }\n        } else {\n          /* real case 5 */\n          if (dxContour[prev_cval] === -1) {\n            edge = \"bottom\";\n            dx = 0;\n            dy = -1;\n          }\n        }\n      } else if (cval === 10) {\n        if (currentCell.flipped) {\n          /* this is actually a flipped case 5 */\n          if (dxContour[prev_cval] === -1) {\n            edge = \"top\";\n            dx = 0;\n            dy = 1;\n          } else {\n            edge = \"bottom\";\n            dx = 0;\n            dy = -1;\n          }\n        } else {\n          /* real case 10 */\n          if (dyContour[prev_cval] === 1) {\n            edge = \"left\";\n            dx = -1;\n            dy = 0;\n          }\n        }\n      }\n    }\n    pt = getXY(currentCell, edge);\n    p.push([k + pt[0], l + pt[1]]);\n    clearCell(currentCell);\n    k += dx;\n    l += dy;\n    prev_cval = cval;\n  }\n\n  return { path: p, info: \"closed\" };\n}\n\n/**\n * Takes a {@link Point} grid and returns a correspondent matrix {Array<Array<number>>}\n * of the 'property' values\n *\n * @name gridToMatrix\n * @param {FeatureCollection<Point>} grid of points\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.zProperty='elevation'] the property name in `points` from which z-values will be pulled\n * @param {boolean} [options.flip=false] returns the matrix upside-down\n * @param {boolean} [options.flags=false] flags, adding a `matrixPosition` array field ([row, column]) to its properties,\n * the grid points with coordinates on the matrix\n * @returns {Array<Array<number>>} matrix of property values\n * @example\n *   var extent = [-70.823364, -33.553984, -70.473175, -33.302986];\n *   var cellSize = 3;\n *   var grid = turf.pointGrid(extent, cellSize);\n *   // add a random property to each point between 0 and 60\n *   for (var i = 0; i < grid.features.length; i++) {\n *     grid.features[i].properties.elevation = (Math.random() * 60);\n *   }\n *   gridToMatrix(grid);\n *   //= [\n *     [ 1, 13, 10,  9, 10, 13, 18],\n *     [34,  8,  5,  4,  5,  8, 13],\n *     [10,  5,  2,  1,  2,  5,  4],\n *     [ 0,  4, 56, 19,  1,  4,  9],\n *     [10,  5,  2,  1,  2,  5, 10],\n *     [57,  8,  5,  4,  5,  0, 57],\n *     [ 3, 13, 10,  9,  5, 13, 18],\n *     [18, 13, 10,  9, 78, 13, 18]\n *   ]\n */\nfunction gridToMatrix(grid, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var zProperty = options.zProperty || \"elevation\";\n  var flip = options.flip;\n  var flags = options.flags;\n\n  // validation\n  invariant.collectionOf(grid, \"Point\", \"input must contain Points\");\n\n  var pointsMatrix = sortPointsByLatLng(grid, flip);\n\n  var matrix = [];\n  // create property matrix from sorted points\n  // looping order matters here\n  for (var r = 0; r < pointsMatrix.length; r++) {\n    var pointRow = pointsMatrix[r];\n    var row = [];\n    for (var c = 0; c < pointRow.length; c++) {\n      var point = pointRow[c];\n      // Check if zProperty exist\n      if (point.properties[zProperty]) row.push(point.properties[zProperty]);\n      else row.push(0);\n      // add flags\n      if (flags === true) point.properties.matrixPosition = [r, c];\n    }\n    matrix.push(row);\n  }\n\n  return matrix;\n}\n\n/**\n * Sorts points by latitude and longitude, creating a 2-dimensional array of points\n *\n * @private\n * @param {FeatureCollection<Point>} points GeoJSON Point features\n * @param {boolean} [flip=false] returns the matrix upside-down\n * @returns {Array<Array<Point>>} points ordered by latitude and longitude\n */\nfunction sortPointsByLatLng(points, flip) {\n  var pointsByLatitude = {};\n\n  // divide points by rows with the same latitude\n  meta.featureEach(points, function (point) {\n    var lat = invariant.getCoords(point)[1];\n    if (!pointsByLatitude[lat]) pointsByLatitude[lat] = [];\n    pointsByLatitude[lat].push(point);\n  });\n\n  // sort points (with the same latitude) by longitude\n  var orderedRowsByLatitude = Object.keys(pointsByLatitude).map(function (lat) {\n    var row = pointsByLatitude[lat];\n    var rowOrderedByLongitude = row.sort(function (a, b) {\n      return invariant.getCoords(a)[0] - invariant.getCoords(b)[0];\n    });\n    return rowOrderedByLongitude;\n  });\n\n  // sort rows (of points with the same latitude) by latitude\n  var pointMatrix = orderedRowsByLatitude.sort(function (a, b) {\n    if (flip) return invariant.getCoords(a[0])[1] - invariant.getCoords(b[0])[1];\n    else return invariant.getCoords(b[0])[1] - invariant.getCoords(a[0])[1];\n  });\n\n  return pointMatrix;\n}\n\n/**\n * Takes a grid {@link FeatureCollection} of {@link Point} features with z-values and an array of\n * value breaks and generates [isolines](https://en.wikipedia.org/wiki/Contour_line).\n *\n * @name isolines\n * @param {FeatureCollection<Point>} pointGrid input points\n * @param {Array<number>} breaks values of `zProperty` where to draw isolines\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.zProperty='elevation'] the property name in `points` from which z-values will be pulled\n * @param {Object} [options.commonProperties={}] GeoJSON properties passed to ALL isolines\n * @param {Array<Object>} [options.breaksProperties=[]] GeoJSON properties passed, in order, to the correspondent isoline;\n * the breaks array will define the order in which the isolines are created\n * @returns {FeatureCollection<MultiLineString>} a FeatureCollection of {@link MultiLineString} features representing isolines\n * @example\n * // create a grid of points with random z-values in their properties\n * var extent = [0, 30, 20, 50];\n * var cellWidth = 100;\n * var pointGrid = turf.pointGrid(extent, cellWidth, {units: 'miles'});\n *\n * for (var i = 0; i < pointGrid.features.length; i++) {\n *     pointGrid.features[i].properties.temperature = Math.random() * 10;\n * }\n * var breaks = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n *\n * var lines = turf.isolines(pointGrid, breaks, {zProperty: 'temperature'});\n *\n * //addToMap\n * var addToMap = [lines];\n */\nfunction isolines(pointGrid, breaks, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var zProperty = options.zProperty || \"elevation\";\n  var commonProperties = options.commonProperties || {};\n  var breaksProperties = options.breaksProperties || [];\n\n  // Input validation\n  invariant.collectionOf(pointGrid, \"Point\", \"Input must contain Points\");\n  if (!breaks) throw new Error(\"breaks is required\");\n  if (!Array.isArray(breaks)) throw new Error(\"breaks must be an Array\");\n  if (!helpers.isObject(commonProperties))\n    throw new Error(\"commonProperties must be an Object\");\n  if (!Array.isArray(breaksProperties))\n    throw new Error(\"breaksProperties must be an Array\");\n\n  // Isoline methods\n  var matrix = gridToMatrix(pointGrid, { zProperty: zProperty, flip: true });\n  var createdIsoLines = createIsoLines(\n    matrix,\n    breaks,\n    zProperty,\n    commonProperties,\n    breaksProperties\n  );\n  var scaledIsolines = rescaleIsolines(createdIsoLines, matrix, pointGrid);\n\n  return helpers.featureCollection(scaledIsolines);\n}\n\n/**\n * Creates the isolines lines (featuresCollection of MultiLineString features) from the 2D data grid\n *\n * Marchingsquares process the grid data as a 3D representation of a function on a 2D plane, therefore it\n * assumes the points (x-y coordinates) are one 'unit' distance. The result of the isolines function needs to be\n * rescaled, with turfjs, to the original area and proportions on the map\n *\n * @private\n * @param {Array<Array<number>>} matrix Grid Data\n * @param {Array<number>} breaks Breaks\n * @param {string} zProperty name of the z-values property\n * @param {Object} [commonProperties={}] GeoJSON properties passed to ALL isolines\n * @param {Object} [breaksProperties=[]] GeoJSON properties passed to the correspondent isoline\n * @returns {Array<MultiLineString>} isolines\n */\nfunction createIsoLines(\n  matrix,\n  breaks,\n  zProperty,\n  commonProperties,\n  breaksProperties\n) {\n  var results = [];\n  for (var i = 1; i < breaks.length; i++) {\n    var threshold = +breaks[i]; // make sure it's a number\n\n    var properties = objectAssign__default['default']({}, commonProperties, breaksProperties[i]);\n    properties[zProperty] = threshold;\n    var isoline = helpers.multiLineString(isoContours(matrix, threshold), properties);\n\n    results.push(isoline);\n  }\n  return results;\n}\n\n/**\n * Translates and scales isolines\n *\n * @private\n * @param {Array<MultiLineString>} createdIsoLines to be rescaled\n * @param {Array<Array<number>>} matrix Grid Data\n * @param {Object} points Points by Latitude\n * @returns {Array<MultiLineString>} isolines\n */\nfunction rescaleIsolines(createdIsoLines, matrix, points) {\n  // get dimensions (on the map) of the original grid\n  var gridBbox = bbox__default['default'](points); // [ minX, minY, maxX, maxY ]\n  var originalWidth = gridBbox[2] - gridBbox[0];\n  var originalHeigth = gridBbox[3] - gridBbox[1];\n\n  // get origin, which is the first point of the last row on the rectangular data on the map\n  var x0 = gridBbox[0];\n  var y0 = gridBbox[1];\n\n  // get number of cells per side\n  var matrixWidth = matrix[0].length - 1;\n  var matrixHeight = matrix.length - 1;\n\n  // calculate the scaling factor between matrix and rectangular grid on the map\n  var scaleX = originalWidth / matrixWidth;\n  var scaleY = originalHeigth / matrixHeight;\n\n  var resize = function (point) {\n    point[0] = point[0] * scaleX + x0;\n    point[1] = point[1] * scaleY + y0;\n  };\n\n  // resize and shift each point/line of the createdIsoLines\n  createdIsoLines.forEach(function (isoline) {\n    meta.coordEach(isoline, resize);\n  });\n  return createdIsoLines;\n}\n\nmodule.exports = isolines;\nmodule.exports.default = isolines;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar center_mean_1 = __importDefault(require(\"@turf/center-mean\"));\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar centroid_1 = __importDefault(require(\"@turf/centroid\"));\nvar helpers_1 = require(\"@turf/helpers\");\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Takes a {@link FeatureCollection} of points and calculates the median center,\n * algorithimically. The median center is understood as the point that is\n * requires the least total travel from all other points.\n *\n * Turfjs has four different functions for calculating the center of a set of\n * data. Each is useful depending on circumstance.\n *\n * `@turf/center` finds the simple center of a dataset, by finding the\n * midpoint between the extents of the data. That is, it divides in half the\n * farthest east and farthest west point as well as the farthest north and\n * farthest south.\n *\n * `@turf/center-of-mass` imagines that the dataset is a sheet of paper.\n * The center of mass is where the sheet would balance on a fingertip.\n *\n * `@turf/center-mean` takes the averages of all the coordinates and\n * produces a value that respects that. Unlike `@turf/center`, it is\n * sensitive to clusters and outliers. It lands in the statistical middle of a\n * dataset, not the geographical. It can also be weighted, meaning certain\n * points are more important than others.\n *\n * `@turf/center-median` takes the mean center and tries to find, iteratively,\n * a new point that requires the least amount of travel from all the points in\n * the dataset. It is not as sensitive to outliers as `@turf/center-mean`, but it is\n * attracted to clustered data. It, too, can be weighted.\n *\n * **Bibliography**\n *\n * Harold W. Kuhn and Robert E. Kuenne, “An Efficient Algorithm for the\n * Numerical Solution of the Generalized Weber Problem in Spatial\n * Economics,” _Journal of Regional Science_ 4, no. 2 (1962): 21–33,\n * doi:{@link https://doi.org/10.1111/j.1467-9787.1962.tb00902.x}.\n *\n * James E. Burt, Gerald M. Barber, and David L. Rigby, _Elementary\n * Statistics for Geographers_, 3rd ed., New York: The Guilford\n * Press, 2009, 150–151.\n *\n * @name centerMedian\n * @param {FeatureCollection<any>} features Any GeoJSON Feature Collection\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.weight] the property name used to weight the center\n * @param {number} [options.tolerance=0.001] the difference in distance between candidate medians at which point the algorighim stops iterating.\n * @param {number} [options.counter=10] how many attempts to find the median, should the tolerance be insufficient.\n * @returns {Feature<Point>} The median center of the collection\n * @example\n * var points = turf.points([[0, 0], [1, 0], [0, 1], [5, 8]]);\n * var medianCenter = turf.centerMedian(points);\n *\n * //addToMap\n * var addToMap = [points, medianCenter]\n */\nfunction centerMedian(features, options) {\n    if (options === void 0) { options = {}; }\n    // Optional params\n    options = options || {};\n    if (!helpers_1.isObject(options))\n        throw new Error(\"options is invalid\");\n    var counter = options.counter || 10;\n    if (!helpers_1.isNumber(counter))\n        throw new Error(\"counter must be a number\");\n    var weightTerm = options.weight;\n    // Calculate mean center:\n    var meanCenter = center_mean_1.default(features, { weight: options.weight });\n    // Calculate center of every feature:\n    var centroids = helpers_1.featureCollection([]);\n    meta_1.featureEach(features, function (feature) {\n        var _a;\n        centroids.features.push(centroid_1.default(feature, {\n            properties: { weight: (_a = feature.properties) === null || _a === void 0 ? void 0 : _a[weightTerm] },\n        }));\n    });\n    var properties = {\n        tolerance: options.tolerance,\n        medianCandidates: [],\n    };\n    return findMedian(meanCenter.geometry.coordinates, [0, 0], centroids, properties, counter);\n}\n/**\n * Recursive function to find new candidate medians.\n *\n * @private\n * @param {Position} candidateMedian current candidate median\n * @param {Position} previousCandidate the previous candidate median\n * @param {FeatureCollection<Point>} centroids the collection of centroids whose median we are determining\n * @param {number} counter how many attempts to try before quitting.\n * @returns {Feature<Point>} the median center of the dataset.\n */\nfunction findMedian(candidateMedian, previousCandidate, centroids, properties, counter) {\n    var tolerance = properties.tolerance || 0.001;\n    var candidateXsum = 0;\n    var candidateYsum = 0;\n    var kSum = 0;\n    var centroidCount = 0;\n    meta_1.featureEach(centroids, function (theCentroid) {\n        var _a;\n        var weightValue = (_a = theCentroid.properties) === null || _a === void 0 ? void 0 : _a.weight;\n        var weight = weightValue === undefined || weightValue === null ? 1 : weightValue;\n        weight = Number(weight);\n        if (!helpers_1.isNumber(weight))\n            throw new Error(\"weight value must be a number\");\n        if (weight > 0) {\n            centroidCount += 1;\n            var distanceFromCandidate = weight * distance_1.default(theCentroid, candidateMedian);\n            if (distanceFromCandidate === 0)\n                distanceFromCandidate = 1;\n            var k = weight / distanceFromCandidate;\n            candidateXsum += theCentroid.geometry.coordinates[0] * k;\n            candidateYsum += theCentroid.geometry.coordinates[1] * k;\n            kSum += k;\n        }\n    });\n    if (centroidCount < 1)\n        throw new Error(\"no features to measure\");\n    var candidateX = candidateXsum / kSum;\n    var candidateY = candidateYsum / kSum;\n    if (centroidCount === 1 ||\n        counter === 0 ||\n        (Math.abs(candidateX - previousCandidate[0]) < tolerance &&\n            Math.abs(candidateY - previousCandidate[1]) < tolerance)) {\n        return helpers_1.point([candidateX, candidateY], {\n            medianCandidates: properties.medianCandidates,\n        });\n    }\n    else {\n        properties.medianCandidates.push([candidateX, candidateY]);\n        return findMedian([candidateX, candidateY], candidateMedian, centroids, properties, counter - 1);\n    }\n}\nexports.default = centerMedian;\n","'use strict';\n\nvar setFunctionName = require('set-function-name');\nvar $TypeError = require('es-errors/type');\n\nvar $Object = Object;\n\nmodule.exports = setFunctionName(function flags() {\n\tif (this == null || this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n}, 'get flags', true);\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n    if (!coord) {\n        throw new Error(\"coord is required\");\n    }\n    if (!Array.isArray(coord)) {\n        if (coord.type === \"Feature\" &&\n            coord.geometry !== null &&\n            coord.geometry.type === \"Point\") {\n            return coord.geometry.coordinates;\n        }\n        if (coord.type === \"Point\") {\n            return coord.coordinates;\n        }\n    }\n    if (Array.isArray(coord) &&\n        coord.length >= 2 &&\n        !Array.isArray(coord[0]) &&\n        !Array.isArray(coord[1])) {\n        return coord;\n    }\n    throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nexports.getCoord = getCoord;\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n    if (Array.isArray(coords)) {\n        return coords;\n    }\n    // Feature\n    if (coords.type === \"Feature\") {\n        if (coords.geometry !== null) {\n            return coords.geometry.coordinates;\n        }\n    }\n    else {\n        // Geometry\n        if (coords.coordinates) {\n            return coords.coordinates;\n        }\n    }\n    throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\n}\nexports.getCoords = getCoords;\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n    if (coordinates.length > 1 &&\n        helpers_1.isNumber(coordinates[0]) &&\n        helpers_1.isNumber(coordinates[1])) {\n        return true;\n    }\n    if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n        return containsNumber(coordinates[0]);\n    }\n    throw new Error(\"coordinates must only contain numbers\");\n}\nexports.containsNumber = containsNumber;\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n    if (!type || !name) {\n        throw new Error(\"type and name required\");\n    }\n    if (!value || value.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            value.type);\n    }\n}\nexports.geojsonType = geojsonType;\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n    if (!feature) {\n        throw new Error(\"No feature passed\");\n    }\n    if (!name) {\n        throw new Error(\".featureOf() requires a name\");\n    }\n    if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n        throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n    }\n    if (!feature.geometry || feature.geometry.type !== type) {\n        throw new Error(\"Invalid input to \" +\n            name +\n            \": must be a \" +\n            type +\n            \", given \" +\n            feature.geometry.type);\n    }\n}\nexports.featureOf = featureOf;\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n    if (!featureCollection) {\n        throw new Error(\"No featureCollection passed\");\n    }\n    if (!name) {\n        throw new Error(\".collectionOf() requires a name\");\n    }\n    if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\n        throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\n    }\n    for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\n        var feature = _a[_i];\n        if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\n            throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\n        }\n        if (!feature.geometry || feature.geometry.type !== type) {\n            throw new Error(\"Invalid input to \" +\n                name +\n                \": must be a \" +\n                type +\n                \", given \" +\n                feature.geometry.type);\n        }\n    }\n}\nexports.collectionOf = collectionOf;\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n    if (geojson.type === \"Feature\") {\n        return geojson.geometry;\n    }\n    return geojson;\n}\nexports.getGeom = getGeom;\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message (unused)\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n *   \"type\": \"Feature\",\n *   \"properties\": {},\n *   \"geometry\": {\n *     \"type\": \"Point\",\n *     \"coordinates\": [110, 40]\n *   }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, _name) {\n    if (geojson.type === \"FeatureCollection\") {\n        return \"FeatureCollection\";\n    }\n    if (geojson.type === \"GeometryCollection\") {\n        return \"GeometryCollection\";\n    }\n    if (geojson.type === \"Feature\" && geojson.geometry !== null) {\n        return geojson.geometry.type;\n    }\n    return geojson.type;\n}\nexports.getType = getType;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bbox_1 = __importDefault(require(\"@turf/bbox\"));\nvar invariant_1 = require(\"@turf/invariant\");\nvar helpers_1 = require(\"@turf/helpers\");\nvar clone_1 = __importDefault(require(\"@turf/clone\"));\n/**\n * Converts (Multi)LineString(s) to Polygon(s).\n *\n * @name lineToPolygon\n * @param {FeatureCollection|Feature<LineString|MultiLineString>} lines Features to convert\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] translates GeoJSON properties to Feature\n * @param {boolean} [options.autoComplete=true] auto complete linestrings (matches first & last coordinates)\n * @param {boolean} [options.orderCoords=true] sorts linestrings to place outer ring at the first position of the coordinates\n * @param {boolean} [options.mutate=false] mutate the original linestring using autoComplete (matches first & last coordinates)\n * @returns {Feature<Polygon|MultiPolygon>} converted to Polygons\n * @example\n * var line = turf.lineString([[125, -30], [145, -30], [145, -20], [125, -20], [125, -30]]);\n *\n * var polygon = turf.lineToPolygon(line);\n *\n * //addToMap\n * var addToMap = [polygon];\n */\nfunction lineToPolygon(lines, options) {\n    if (options === void 0) { options = {}; }\n    var _a, _b, _c;\n    // Optional parameters\n    var properties = options.properties;\n    var autoComplete = (_a = options.autoComplete) !== null && _a !== void 0 ? _a : true;\n    var orderCoords = (_b = options.orderCoords) !== null && _b !== void 0 ? _b : true;\n    var mutate = (_c = options.mutate) !== null && _c !== void 0 ? _c : false;\n    if (!mutate) {\n        lines = clone_1.default(lines);\n    }\n    switch (lines.type) {\n        case \"FeatureCollection\":\n            var coords = [];\n            lines.features.forEach(function (line) {\n                coords.push(invariant_1.getCoords(lineStringToPolygon(line, {}, autoComplete, orderCoords)));\n            });\n            return helpers_1.multiPolygon(coords, properties);\n        default:\n            return lineStringToPolygon(lines, properties, autoComplete, orderCoords);\n    }\n}\n/**\n * LineString to Polygon\n *\n * @private\n * @param {Feature<LineString|MultiLineString>} line line\n * @param {Object} [properties] translates GeoJSON properties to Feature\n * @param {boolean} [autoComplete=true] auto complete linestrings\n * @param {boolean} [orderCoords=true] sorts linestrings to place outer ring at the first position of the coordinates\n * @returns {Feature<Polygon>} line converted to Polygon\n */\nfunction lineStringToPolygon(line, properties, autoComplete, orderCoords) {\n    properties = properties\n        ? properties\n        : line.type === \"Feature\"\n            ? line.properties\n            : {};\n    var geom = invariant_1.getGeom(line);\n    var coords = geom.coordinates;\n    var type = geom.type;\n    if (!coords.length)\n        throw new Error(\"line must contain coordinates\");\n    switch (type) {\n        case \"LineString\":\n            if (autoComplete)\n                coords = autoCompleteCoords(coords);\n            return helpers_1.polygon([coords], properties);\n        case \"MultiLineString\":\n            var multiCoords = [];\n            var largestArea = 0;\n            coords.forEach(function (coord) {\n                if (autoComplete)\n                    coord = autoCompleteCoords(coord);\n                // Largest LineString to be placed in the first position of the coordinates array\n                if (orderCoords) {\n                    var area = calculateArea(bbox_1.default(helpers_1.lineString(coord)));\n                    if (area > largestArea) {\n                        multiCoords.unshift(coord);\n                        largestArea = area;\n                    }\n                    else\n                        multiCoords.push(coord);\n                }\n                else {\n                    multiCoords.push(coord);\n                }\n            });\n            return helpers_1.polygon(multiCoords, properties);\n        default:\n            throw new Error(\"geometry type \" + type + \" is not supported\");\n    }\n}\n/**\n * Auto Complete Coords - matches first & last coordinates\n *\n * @private\n * @param {Array<Array<number>>} coords Coordinates\n * @returns {Array<Array<number>>} auto completed coordinates\n */\nfunction autoCompleteCoords(coords) {\n    var first = coords[0];\n    var x1 = first[0];\n    var y1 = first[1];\n    var last = coords[coords.length - 1];\n    var x2 = last[0];\n    var y2 = last[1];\n    if (x1 !== x2 || y1 !== y2) {\n        coords.push(first);\n    }\n    return coords;\n}\n/**\n * area - quick approximate area calculation (used to sort)\n *\n * @private\n * @param {Array<number>} bbox BBox [west, south, east, north]\n * @returns {number} very quick area calculation\n */\nfunction calculateArea(bbox) {\n    var west = bbox[0];\n    var south = bbox[1];\n    var east = bbox[2];\n    var north = bbox[3];\n    return Math.abs(west - east) * Math.abs(south - north);\n}\nexports.default = lineToPolygon;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\nvar clone = require('@turf/clone');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);\n\n/**\n * Takes input features and flips all of their coordinates from `[x, y]` to `[y, x]`.\n *\n * @name flip\n * @param {GeoJSON} geojson input features\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} a feature or set of features of the same type as `input` with flipped coordinates\n * @example\n * var serbia = turf.point([20.566406, 43.421008]);\n *\n * var saudiArabia = turf.flip(serbia);\n *\n * //addToMap\n * var addToMap = [serbia, saudiArabia];\n */\nfunction flip(geojson, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var mutate = options.mutate;\n\n  if (!geojson) throw new Error(\"geojson is required\");\n  // ensure that we don't modify features in-place and changes to the\n  // output do not change the previous feature, including changes to nested\n  // properties.\n  if (mutate === false || mutate === undefined) geojson = clone__default['default'](geojson);\n\n  meta.coordEach(geojson, function (coord) {\n    var x = coord[0];\n    var y = coord[1];\n    coord[0] = y;\n    coord[1] = x;\n  });\n  return geojson;\n}\n\nmodule.exports = flip;\nmodule.exports.default = flip;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\n// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule\n// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js\n// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n/**\n * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point\n * resides inside the polygon. The polygon can be convex or concave. The function accounts for holes.\n *\n * @name booleanPointInPolygon\n * @param {Coord} point input point\n * @param {Feature<Polygon|MultiPolygon>} polygon input polygon or multipolygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.ignoreBoundary=false] True if polygon boundary should be ignored when determining if\n * the point is inside the polygon otherwise false.\n * @returns {boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon\n * @example\n * var pt = turf.point([-77, 44]);\n * var poly = turf.polygon([[\n *   [-81, 41],\n *   [-81, 47],\n *   [-72, 47],\n *   [-72, 41],\n *   [-81, 41]\n * ]]);\n *\n * turf.booleanPointInPolygon(pt, poly);\n * //= true\n */\nfunction booleanPointInPolygon(point, polygon, options) {\n    if (options === void 0) { options = {}; }\n    // validation\n    if (!point) {\n        throw new Error(\"point is required\");\n    }\n    if (!polygon) {\n        throw new Error(\"polygon is required\");\n    }\n    var pt = invariant_1.getCoord(point);\n    var geom = invariant_1.getGeom(polygon);\n    var type = geom.type;\n    var bbox = polygon.bbox;\n    var polys = geom.coordinates;\n    // Quick elimination if point is not inside bbox\n    if (bbox && inBBox(pt, bbox) === false) {\n        return false;\n    }\n    // normalize to multipolygon\n    if (type === \"Polygon\") {\n        polys = [polys];\n    }\n    var insidePoly = false;\n    for (var i = 0; i < polys.length && !insidePoly; i++) {\n        // check if it is in the outer ring first\n        if (inRing(pt, polys[i][0], options.ignoreBoundary)) {\n            var inHole = false;\n            var k = 1;\n            // check for the point in any of the holes\n            while (k < polys[i].length && !inHole) {\n                if (inRing(pt, polys[i][k], !options.ignoreBoundary)) {\n                    inHole = true;\n                }\n                k++;\n            }\n            if (!inHole) {\n                insidePoly = true;\n            }\n        }\n    }\n    return insidePoly;\n}\nexports.default = booleanPointInPolygon;\n/**\n * inRing\n *\n * @private\n * @param {Array<number>} pt [x,y]\n * @param {Array<Array<number>>} ring [[x,y], [x,y],..]\n * @param {boolean} ignoreBoundary ignoreBoundary\n * @returns {boolean} inRing\n */\nfunction inRing(pt, ring, ignoreBoundary) {\n    var isInside = false;\n    if (ring[0][0] === ring[ring.length - 1][0] &&\n        ring[0][1] === ring[ring.length - 1][1]) {\n        ring = ring.slice(0, ring.length - 1);\n    }\n    for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) {\n        var xi = ring[i][0];\n        var yi = ring[i][1];\n        var xj = ring[j][0];\n        var yj = ring[j][1];\n        var onBoundary = pt[1] * (xi - xj) + yi * (xj - pt[0]) + yj * (pt[0] - xi) === 0 &&\n            (xi - pt[0]) * (xj - pt[0]) <= 0 &&\n            (yi - pt[1]) * (yj - pt[1]) <= 0;\n        if (onBoundary) {\n            return !ignoreBoundary;\n        }\n        var intersect = yi > pt[1] !== yj > pt[1] &&\n            pt[0] < ((xj - xi) * (pt[1] - yi)) / (yj - yi) + xi;\n        if (intersect) {\n            isInside = !isInside;\n        }\n    }\n    return isInside;\n}\n/**\n * inBBox\n *\n * @private\n * @param {Position} pt point [x,y]\n * @param {BBox} bbox BBox [west, south, east, north]\n * @returns {boolean} true/false if point is inside BBox\n */\nfunction inBBox(pt, bbox) {\n    return (bbox[0] <= pt[0] && bbox[1] <= pt[1] && bbox[2] >= pt[0] && bbox[3] >= pt[1]);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Combines a {@link FeatureCollection} of {@link Point}, {@link LineString}, or {@link Polygon} features\n * into {@link MultiPoint}, {@link MultiLineString}, or {@link MultiPolygon} features.\n *\n * @name combine\n * @param {FeatureCollection<Point|LineString|Polygon>} fc a FeatureCollection of any type\n * @returns {FeatureCollection<MultiPoint|MultiLineString|MultiPolygon>} a FeatureCollection of corresponding type to input\n * @example\n * var fc = turf.featureCollection([\n *   turf.point([19.026432, 47.49134]),\n *   turf.point([19.074497, 47.509548])\n * ]);\n *\n * var combined = turf.combine(fc);\n *\n * //addToMap\n * var addToMap = [combined]\n */\nfunction combine(fc) {\n    var groups = {\n        MultiPoint: {\n            coordinates: [],\n            properties: [],\n        },\n        MultiLineString: {\n            coordinates: [],\n            properties: [],\n        },\n        MultiPolygon: {\n            coordinates: [],\n            properties: [],\n        },\n    };\n    meta_1.featureEach(fc, function (feature) {\n        var _a, _b, _c;\n        var _d;\n        switch ((_d = feature.geometry) === null || _d === void 0 ? void 0 : _d.type) {\n            case \"Point\":\n                groups.MultiPoint.coordinates.push(feature.geometry.coordinates);\n                groups.MultiPoint.properties.push(feature.properties);\n                break;\n            case \"MultiPoint\":\n                (_a = groups.MultiPoint.coordinates).push.apply(_a, feature.geometry.coordinates);\n                groups.MultiPoint.properties.push(feature.properties);\n                break;\n            case \"LineString\":\n                groups.MultiLineString.coordinates.push(feature.geometry.coordinates);\n                groups.MultiLineString.properties.push(feature.properties);\n                break;\n            case \"MultiLineString\":\n                (_b = groups.MultiLineString.coordinates).push.apply(_b, feature.geometry.coordinates);\n                groups.MultiLineString.properties.push(feature.properties);\n                break;\n            case \"Polygon\":\n                groups.MultiPolygon.coordinates.push(feature.geometry.coordinates);\n                groups.MultiPolygon.properties.push(feature.properties);\n                break;\n            case \"MultiPolygon\":\n                (_c = groups.MultiPolygon.coordinates).push.apply(_c, feature.geometry.coordinates);\n                groups.MultiPolygon.properties.push(feature.properties);\n                break;\n            default:\n                break;\n        }\n    });\n    return helpers_1.featureCollection(Object.keys(groups)\n        .filter(function (key) {\n        return groups[key].coordinates.length;\n    })\n        .sort()\n        .map(function (key) {\n        var geometry = { type: key, coordinates: groups[key].coordinates };\n        var properties = { collectedProperties: groups[key].properties };\n        return helpers_1.feature(geometry, properties);\n    }));\n}\nexports.default = combine;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Taken from http://geomalgorithms.com/a02-_lines.html\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\nvar rhumb_distance_1 = __importDefault(require(\"@turf/rhumb-distance\"));\n/**\n * Returns the minimum distance between a {@link Point} and a {@link LineString}, being the distance from a line the\n * minimum distance between the point and any segment of the `LineString`.\n *\n * @name pointToLineDistance\n * @param {Feature<Point>|Array<number>} pt Feature or Geometry\n * @param {Feature<LineString>} line GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be anything supported by turf/convertLength\n * (ex: degrees, radians, miles, or kilometers)\n * @param {string} [options.method=\"geodesic\"] wether to calculate the distance based on geodesic (spheroid) or\n * planar (flat) method. Valid options are 'geodesic' or 'planar'.\n * @returns {number} distance between point and line\n * @example\n * var pt = turf.point([0, 0]);\n * var line = turf.lineString([[1, 1],[-1, 1]]);\n *\n * var distance = turf.pointToLineDistance(pt, line, {units: 'miles'});\n * //=69.11854715938406\n */\nfunction pointToLineDistance(pt, line, options) {\n    if (options === void 0) { options = {}; }\n    // Optional parameters\n    if (!options.method) {\n        options.method = \"geodesic\";\n    }\n    if (!options.units) {\n        options.units = \"kilometers\";\n    }\n    // validation\n    if (!pt) {\n        throw new Error(\"pt is required\");\n    }\n    if (Array.isArray(pt)) {\n        pt = helpers_1.point(pt);\n    }\n    else if (pt.type === \"Point\") {\n        pt = helpers_1.feature(pt);\n    }\n    else {\n        invariant_1.featureOf(pt, \"Point\", \"point\");\n    }\n    if (!line) {\n        throw new Error(\"line is required\");\n    }\n    if (Array.isArray(line)) {\n        line = helpers_1.lineString(line);\n    }\n    else if (line.type === \"LineString\") {\n        line = helpers_1.feature(line);\n    }\n    else {\n        invariant_1.featureOf(line, \"LineString\", \"line\");\n    }\n    var distance = Infinity;\n    var p = pt.geometry.coordinates;\n    meta_1.segmentEach(line, function (segment) {\n        var a = segment.geometry.coordinates[0];\n        var b = segment.geometry.coordinates[1];\n        var d = distanceToSegment(p, a, b, options);\n        if (d < distance) {\n            distance = d;\n        }\n    });\n    return helpers_1.convertLength(distance, \"degrees\", options.units);\n}\n/**\n * Returns the distance between a point P on a segment AB.\n *\n * @private\n * @param {Array<number>} p external point\n * @param {Array<number>} a first segment point\n * @param {Array<number>} b second segment point\n * @param {Object} [options={}] Optional parameters\n * @returns {number} distance\n */\nfunction distanceToSegment(p, a, b, options) {\n    var v = [b[0] - a[0], b[1] - a[1]];\n    var w = [p[0] - a[0], p[1] - a[1]];\n    var c1 = dot(w, v);\n    if (c1 <= 0) {\n        return calcDistance(p, a, { method: options.method, units: \"degrees\" });\n    }\n    var c2 = dot(v, v);\n    if (c2 <= c1) {\n        return calcDistance(p, b, { method: options.method, units: \"degrees\" });\n    }\n    var b2 = c1 / c2;\n    var Pb = [a[0] + b2 * v[0], a[1] + b2 * v[1]];\n    return calcDistance(p, Pb, { method: options.method, units: \"degrees\" });\n}\nfunction dot(u, v) {\n    return u[0] * v[0] + u[1] * v[1];\n}\nfunction calcDistance(a, b, options) {\n    return options.method === \"planar\"\n        ? rhumb_distance_1.default(a, b, options)\n        : distance_1.default(a, b, options);\n}\nexports.default = pointToLineDistance;\n","'use strict';\n\nvar meta = require('@turf/meta');\nvar helpers = require('@turf/helpers');\n\n/**\n * Takes a feature or set of features and returns all positions as {@link Point|points}.\n *\n * @name explode\n * @param {GeoJSON} geojson input features\n * @returns {FeatureCollection<point>} points representing the exploded input features\n * @throws {Error} if it encounters an unknown geometry type\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var explode = turf.explode(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, explode]\n */\nfunction explode(geojson) {\n  var points = [];\n  if (geojson.type === \"FeatureCollection\") {\n    meta.featureEach(geojson, function (feature) {\n      meta.coordEach(feature, function (coord) {\n        points.push(helpers.point(coord, feature.properties));\n      });\n    });\n  } else {\n    meta.coordEach(geojson, function (coord) {\n      points.push(helpers.point(coord, geojson.properties));\n    });\n  }\n  return helpers.featureCollection(points);\n}\n\nmodule.exports = explode;\nmodule.exports.default = explode;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar isolines = require('@turf/isolines');\nvar convex = require('@turf/convex');\nvar pointsWithinPolygon = require('@turf/points-within-polygon');\nvar concave = require('@turf/concave');\nvar collect = require('@turf/collect');\nvar flip = require('@turf/flip');\nvar simplify = require('@turf/simplify');\nvar bezierSpline = require('@turf/bezier-spline');\nvar tag = require('@turf/tag');\nvar sample = require('@turf/sample');\nvar envelope = require('@turf/envelope');\nvar square = require('@turf/square');\nvar circle = require('@turf/circle');\nvar midpoint = require('@turf/midpoint');\nvar center = require('@turf/center');\nvar centerOfMass = require('@turf/center-of-mass');\nvar centroid = require('@turf/centroid');\nvar combine = require('@turf/combine');\nvar distance = require('@turf/distance');\nvar explode = require('@turf/explode');\nvar bbox = require('@turf/bbox');\nvar tesselate = require('@turf/tesselate');\nvar bboxPolygon = require('@turf/bbox-polygon');\nvar booleanPointInPolygon = require('@turf/boolean-point-in-polygon');\nvar nearestPoint = require('@turf/nearest-point');\nvar nearestPointOnLine = require('@turf/nearest-point-on-line');\nvar nearestPointToLine = require('@turf/nearest-point-to-line');\nvar planepoint = require('@turf/planepoint');\nvar tin = require('@turf/tin');\nvar bearing = require('@turf/bearing');\nvar destination = require('@turf/destination');\nvar kinks = require('@turf/kinks');\nvar pointOnFeature = require('@turf/point-on-feature');\nvar area = require('@turf/area');\nvar along = require('@turf/along');\nvar length = require('@turf/length');\nvar lineSlice = require('@turf/line-slice');\nvar lineSliceAlong = require('@turf/line-slice-along');\nvar pointGrid = require('@turf/point-grid');\nvar truncate = require('@turf/truncate');\nvar flatten = require('@turf/flatten');\nvar lineIntersect = require('@turf/line-intersect');\nvar lineChunk = require('@turf/line-chunk');\nvar unkinkPolygon = require('@turf/unkink-polygon');\nvar greatCircle = require('@turf/great-circle');\nvar lineSegment = require('@turf/line-segment');\nvar lineSplit = require('@turf/line-split');\nvar lineArc = require('@turf/line-arc');\nvar polygonToLine = require('@turf/polygon-to-line');\nvar lineToPolygon = require('@turf/line-to-polygon');\nvar bboxClip = require('@turf/bbox-clip');\nvar lineOverlap = require('@turf/line-overlap');\nvar sector = require('@turf/sector');\nvar rhumbBearing = require('@turf/rhumb-bearing');\nvar rhumbDistance = require('@turf/rhumb-distance');\nvar rhumbDestination = require('@turf/rhumb-destination');\nvar polygonTangents = require('@turf/polygon-tangents');\nvar rewind = require('@turf/rewind');\nvar isobands = require('@turf/isobands');\nvar transformRotate = require('@turf/transform-rotate');\nvar transformScale = require('@turf/transform-scale');\nvar transformTranslate = require('@turf/transform-translate');\nvar lineOffset = require('@turf/line-offset');\nvar polygonize = require('@turf/polygonize');\nvar booleanDisjoint = require('@turf/boolean-disjoint');\nvar booleanContains = require('@turf/boolean-contains');\nvar booleanCrosses = require('@turf/boolean-crosses');\nvar booleanClockwise = require('@turf/boolean-clockwise');\nvar booleanOverlap = require('@turf/boolean-overlap');\nvar booleanPointOnLine = require('@turf/boolean-point-on-line');\nvar booleanEqual = require('@turf/boolean-equal');\nvar booleanWithin = require('@turf/boolean-within');\nvar booleanIntersects = require('@turf/boolean-intersects');\nvar clone = require('@turf/clone');\nvar cleanCoords = require('@turf/clean-coords');\nvar clustersDbscan = require('@turf/clusters-dbscan');\nvar clustersKmeans = require('@turf/clusters-kmeans');\nvar pointToLineDistance = require('@turf/point-to-line-distance');\nvar booleanParallel = require('@turf/boolean-parallel');\nvar shortestPath = require('@turf/shortest-path');\nvar voronoi = require('@turf/voronoi');\nvar ellipse = require('@turf/ellipse');\nvar centerMean = require('@turf/center-mean');\nvar centerMedian = require('@turf/center-median');\nvar standardDeviationalEllipse = require('@turf/standard-deviational-ellipse');\nvar angle = require('@turf/angle');\nvar polygonSmooth = require('@turf/polygon-smooth');\nvar moranIndex = require('@turf/moran-index');\nvar distanceWeight = require('@turf/distance-weight');\nvar projection = require('@turf/projection');\nvar random = require('@turf/random');\nvar clusters = require('@turf/clusters');\nvar helpers = require('@turf/helpers');\nvar invariant = require('@turf/invariant');\nvar meta = require('@turf/meta');\nvar difference = require('@turf/difference');\nvar buffer = require('@turf/buffer');\nvar union = require('@turf/union');\nvar intersect = require('@turf/intersect');\nvar dissolve = require('@turf/dissolve');\nvar hexGrid = require('@turf/hex-grid');\nvar mask = require('@turf/mask');\nvar squareGrid = require('@turf/square-grid');\nvar triangleGrid = require('@turf/triangle-grid');\nvar interpolate = require('@turf/interpolate');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nfunction _interopNamespace(e) {\n  if (e && e.__esModule) return e;\n  var n = Object.create(null);\n  if (e) {\n    Object.keys(e).forEach(function (k) {\n      if (k !== 'default') {\n        var d = Object.getOwnPropertyDescriptor(e, k);\n        Object.defineProperty(n, k, d.get ? d : {\n          enumerable: true,\n          get: function () {\n            return e[k];\n          }\n        });\n      }\n    });\n  }\n  n['default'] = e;\n  return Object.freeze(n);\n}\n\nvar isolines__default = /*#__PURE__*/_interopDefaultLegacy(isolines);\nvar convex__default = /*#__PURE__*/_interopDefaultLegacy(convex);\nvar pointsWithinPolygon__default = /*#__PURE__*/_interopDefaultLegacy(pointsWithinPolygon);\nvar concave__default = /*#__PURE__*/_interopDefaultLegacy(concave);\nvar collect__default = /*#__PURE__*/_interopDefaultLegacy(collect);\nvar flip__default = /*#__PURE__*/_interopDefaultLegacy(flip);\nvar simplify__default = /*#__PURE__*/_interopDefaultLegacy(simplify);\nvar bezierSpline__default = /*#__PURE__*/_interopDefaultLegacy(bezierSpline);\nvar tag__default = /*#__PURE__*/_interopDefaultLegacy(tag);\nvar sample__default = /*#__PURE__*/_interopDefaultLegacy(sample);\nvar envelope__default = /*#__PURE__*/_interopDefaultLegacy(envelope);\nvar square__default = /*#__PURE__*/_interopDefaultLegacy(square);\nvar circle__default = /*#__PURE__*/_interopDefaultLegacy(circle);\nvar midpoint__default = /*#__PURE__*/_interopDefaultLegacy(midpoint);\nvar center__default = /*#__PURE__*/_interopDefaultLegacy(center);\nvar centerOfMass__default = /*#__PURE__*/_interopDefaultLegacy(centerOfMass);\nvar centroid__default = /*#__PURE__*/_interopDefaultLegacy(centroid);\nvar combine__default = /*#__PURE__*/_interopDefaultLegacy(combine);\nvar distance__default = /*#__PURE__*/_interopDefaultLegacy(distance);\nvar explode__default = /*#__PURE__*/_interopDefaultLegacy(explode);\nvar bbox__default = /*#__PURE__*/_interopDefaultLegacy(bbox);\nvar tesselate__default = /*#__PURE__*/_interopDefaultLegacy(tesselate);\nvar bboxPolygon__default = /*#__PURE__*/_interopDefaultLegacy(bboxPolygon);\nvar booleanPointInPolygon__default = /*#__PURE__*/_interopDefaultLegacy(booleanPointInPolygon);\nvar nearestPoint__default = /*#__PURE__*/_interopDefaultLegacy(nearestPoint);\nvar nearestPointOnLine__default = /*#__PURE__*/_interopDefaultLegacy(nearestPointOnLine);\nvar nearestPointToLine__default = /*#__PURE__*/_interopDefaultLegacy(nearestPointToLine);\nvar planepoint__default = /*#__PURE__*/_interopDefaultLegacy(planepoint);\nvar tin__default = /*#__PURE__*/_interopDefaultLegacy(tin);\nvar bearing__default = /*#__PURE__*/_interopDefaultLegacy(bearing);\nvar destination__default = /*#__PURE__*/_interopDefaultLegacy(destination);\nvar kinks__default = /*#__PURE__*/_interopDefaultLegacy(kinks);\nvar pointOnFeature__default = /*#__PURE__*/_interopDefaultLegacy(pointOnFeature);\nvar area__default = /*#__PURE__*/_interopDefaultLegacy(area);\nvar along__default = /*#__PURE__*/_interopDefaultLegacy(along);\nvar length__default = /*#__PURE__*/_interopDefaultLegacy(length);\nvar lineSlice__default = /*#__PURE__*/_interopDefaultLegacy(lineSlice);\nvar lineSliceAlong__default = /*#__PURE__*/_interopDefaultLegacy(lineSliceAlong);\nvar pointGrid__default = /*#__PURE__*/_interopDefaultLegacy(pointGrid);\nvar truncate__default = /*#__PURE__*/_interopDefaultLegacy(truncate);\nvar flatten__default = /*#__PURE__*/_interopDefaultLegacy(flatten);\nvar lineIntersect__default = /*#__PURE__*/_interopDefaultLegacy(lineIntersect);\nvar lineChunk__default = /*#__PURE__*/_interopDefaultLegacy(lineChunk);\nvar unkinkPolygon__default = /*#__PURE__*/_interopDefaultLegacy(unkinkPolygon);\nvar greatCircle__default = /*#__PURE__*/_interopDefaultLegacy(greatCircle);\nvar lineSegment__default = /*#__PURE__*/_interopDefaultLegacy(lineSegment);\nvar lineSplit__default = /*#__PURE__*/_interopDefaultLegacy(lineSplit);\nvar lineArc__default = /*#__PURE__*/_interopDefaultLegacy(lineArc);\nvar polygonToLine__default = /*#__PURE__*/_interopDefaultLegacy(polygonToLine);\nvar lineToPolygon__default = /*#__PURE__*/_interopDefaultLegacy(lineToPolygon);\nvar bboxClip__default = /*#__PURE__*/_interopDefaultLegacy(bboxClip);\nvar lineOverlap__default = /*#__PURE__*/_interopDefaultLegacy(lineOverlap);\nvar sector__default = /*#__PURE__*/_interopDefaultLegacy(sector);\nvar rhumbBearing__default = /*#__PURE__*/_interopDefaultLegacy(rhumbBearing);\nvar rhumbDistance__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDistance);\nvar rhumbDestination__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDestination);\nvar polygonTangents__default = /*#__PURE__*/_interopDefaultLegacy(polygonTangents);\nvar rewind__default = /*#__PURE__*/_interopDefaultLegacy(rewind);\nvar isobands__default = /*#__PURE__*/_interopDefaultLegacy(isobands);\nvar transformRotate__default = /*#__PURE__*/_interopDefaultLegacy(transformRotate);\nvar transformScale__default = /*#__PURE__*/_interopDefaultLegacy(transformScale);\nvar transformTranslate__default = /*#__PURE__*/_interopDefaultLegacy(transformTranslate);\nvar lineOffset__default = /*#__PURE__*/_interopDefaultLegacy(lineOffset);\nvar polygonize__default = /*#__PURE__*/_interopDefaultLegacy(polygonize);\nvar booleanDisjoint__default = /*#__PURE__*/_interopDefaultLegacy(booleanDisjoint);\nvar booleanContains__default = /*#__PURE__*/_interopDefaultLegacy(booleanContains);\nvar booleanCrosses__default = /*#__PURE__*/_interopDefaultLegacy(booleanCrosses);\nvar booleanClockwise__default = /*#__PURE__*/_interopDefaultLegacy(booleanClockwise);\nvar booleanOverlap__default = /*#__PURE__*/_interopDefaultLegacy(booleanOverlap);\nvar booleanPointOnLine__default = /*#__PURE__*/_interopDefaultLegacy(booleanPointOnLine);\nvar booleanEqual__default = /*#__PURE__*/_interopDefaultLegacy(booleanEqual);\nvar booleanWithin__default = /*#__PURE__*/_interopDefaultLegacy(booleanWithin);\nvar booleanIntersects__default = /*#__PURE__*/_interopDefaultLegacy(booleanIntersects);\nvar clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);\nvar cleanCoords__default = /*#__PURE__*/_interopDefaultLegacy(cleanCoords);\nvar clustersDbscan__default = /*#__PURE__*/_interopDefaultLegacy(clustersDbscan);\nvar clustersKmeans__default = /*#__PURE__*/_interopDefaultLegacy(clustersKmeans);\nvar pointToLineDistance__default = /*#__PURE__*/_interopDefaultLegacy(pointToLineDistance);\nvar booleanParallel__default = /*#__PURE__*/_interopDefaultLegacy(booleanParallel);\nvar shortestPath__default = /*#__PURE__*/_interopDefaultLegacy(shortestPath);\nvar voronoi__default = /*#__PURE__*/_interopDefaultLegacy(voronoi);\nvar ellipse__default = /*#__PURE__*/_interopDefaultLegacy(ellipse);\nvar centerMean__default = /*#__PURE__*/_interopDefaultLegacy(centerMean);\nvar centerMedian__default = /*#__PURE__*/_interopDefaultLegacy(centerMedian);\nvar standardDeviationalEllipse__default = /*#__PURE__*/_interopDefaultLegacy(standardDeviationalEllipse);\nvar angle__default = /*#__PURE__*/_interopDefaultLegacy(angle);\nvar polygonSmooth__default = /*#__PURE__*/_interopDefaultLegacy(polygonSmooth);\nvar moranIndex__default = /*#__PURE__*/_interopDefaultLegacy(moranIndex);\nvar distanceWeight__default = /*#__PURE__*/_interopDefaultLegacy(distanceWeight);\nvar projection__namespace = /*#__PURE__*/_interopNamespace(projection);\nvar random__namespace = /*#__PURE__*/_interopNamespace(random);\nvar clusters__namespace = /*#__PURE__*/_interopNamespace(clusters);\nvar helpers__namespace = /*#__PURE__*/_interopNamespace(helpers);\nvar invariant__namespace = /*#__PURE__*/_interopNamespace(invariant);\nvar meta__namespace = /*#__PURE__*/_interopNamespace(meta);\nvar difference__default = /*#__PURE__*/_interopDefaultLegacy(difference);\nvar buffer__default = /*#__PURE__*/_interopDefaultLegacy(buffer);\nvar union__default = /*#__PURE__*/_interopDefaultLegacy(union);\nvar intersect__default = /*#__PURE__*/_interopDefaultLegacy(intersect);\nvar dissolve__default = /*#__PURE__*/_interopDefaultLegacy(dissolve);\nvar hexGrid__default = /*#__PURE__*/_interopDefaultLegacy(hexGrid);\nvar mask__default = /*#__PURE__*/_interopDefaultLegacy(mask);\nvar squareGrid__default = /*#__PURE__*/_interopDefaultLegacy(squareGrid);\nvar triangleGrid__default = /*#__PURE__*/_interopDefaultLegacy(triangleGrid);\nvar interpolate__default = /*#__PURE__*/_interopDefaultLegacy(interpolate);\n\n\n\nObject.keys(projection).forEach(function (k) {\n  if (k !== 'default') Object.defineProperty(exports, k, {\n    enumerable: true,\n    get: function () {\n      return projection[k];\n    }\n  });\n});\nObject.keys(random).forEach(function (k) {\n  if (k !== 'default') Object.defineProperty(exports, k, {\n    enumerable: true,\n    get: function () {\n      return random[k];\n    }\n  });\n});\nObject.keys(clusters).forEach(function (k) {\n  if (k !== 'default') Object.defineProperty(exports, k, {\n    enumerable: true,\n    get: function () {\n      return clusters[k];\n    }\n  });\n});\nObject.keys(helpers).forEach(function (k) {\n  if (k !== 'default') Object.defineProperty(exports, k, {\n    enumerable: true,\n    get: function () {\n      return helpers[k];\n    }\n  });\n});\nObject.keys(invariant).forEach(function (k) {\n  if (k !== 'default') Object.defineProperty(exports, k, {\n    enumerable: true,\n    get: function () {\n      return invariant[k];\n    }\n  });\n});\nObject.keys(meta).forEach(function (k) {\n  if (k !== 'default') Object.defineProperty(exports, k, {\n    enumerable: true,\n    get: function () {\n      return meta[k];\n    }\n  });\n});\nObject.defineProperty(exports, 'isolines', {\n  enumerable: true,\n  get: function () {\n    return isolines__default['default'];\n  }\n});\nObject.defineProperty(exports, 'convex', {\n  enumerable: true,\n  get: function () {\n    return convex__default['default'];\n  }\n});\nObject.defineProperty(exports, 'pointsWithinPolygon', {\n  enumerable: true,\n  get: function () {\n    return pointsWithinPolygon__default['default'];\n  }\n});\nObject.defineProperty(exports, 'within', {\n  enumerable: true,\n  get: function () {\n    return pointsWithinPolygon__default['default'];\n  }\n});\nObject.defineProperty(exports, 'concave', {\n  enumerable: true,\n  get: function () {\n    return concave__default['default'];\n  }\n});\nObject.defineProperty(exports, 'collect', {\n  enumerable: true,\n  get: function () {\n    return collect__default['default'];\n  }\n});\nObject.defineProperty(exports, 'flip', {\n  enumerable: true,\n  get: function () {\n    return flip__default['default'];\n  }\n});\nObject.defineProperty(exports, 'simplify', {\n  enumerable: true,\n  get: function () {\n    return simplify__default['default'];\n  }\n});\nObject.defineProperty(exports, 'bezier', {\n  enumerable: true,\n  get: function () {\n    return bezierSpline__default['default'];\n  }\n});\nObject.defineProperty(exports, 'bezierSpline', {\n  enumerable: true,\n  get: function () {\n    return bezierSpline__default['default'];\n  }\n});\nObject.defineProperty(exports, 'tag', {\n  enumerable: true,\n  get: function () {\n    return tag__default['default'];\n  }\n});\nObject.defineProperty(exports, 'sample', {\n  enumerable: true,\n  get: function () {\n    return sample__default['default'];\n  }\n});\nObject.defineProperty(exports, 'envelope', {\n  enumerable: true,\n  get: function () {\n    return envelope__default['default'];\n  }\n});\nObject.defineProperty(exports, 'square', {\n  enumerable: true,\n  get: function () {\n    return square__default['default'];\n  }\n});\nObject.defineProperty(exports, 'circle', {\n  enumerable: true,\n  get: function () {\n    return circle__default['default'];\n  }\n});\nObject.defineProperty(exports, 'midpoint', {\n  enumerable: true,\n  get: function () {\n    return midpoint__default['default'];\n  }\n});\nObject.defineProperty(exports, 'center', {\n  enumerable: true,\n  get: function () {\n    return center__default['default'];\n  }\n});\nObject.defineProperty(exports, 'centerOfMass', {\n  enumerable: true,\n  get: function () {\n    return centerOfMass__default['default'];\n  }\n});\nObject.defineProperty(exports, 'centroid', {\n  enumerable: true,\n  get: function () {\n    return centroid__default['default'];\n  }\n});\nObject.defineProperty(exports, 'combine', {\n  enumerable: true,\n  get: function () {\n    return combine__default['default'];\n  }\n});\nObject.defineProperty(exports, 'distance', {\n  enumerable: true,\n  get: function () {\n    return distance__default['default'];\n  }\n});\nObject.defineProperty(exports, 'explode', {\n  enumerable: true,\n  get: function () {\n    return explode__default['default'];\n  }\n});\nObject.defineProperty(exports, 'bbox', {\n  enumerable: true,\n  get: function () {\n    return bbox__default['default'];\n  }\n});\nObject.defineProperty(exports, 'tesselate', {\n  enumerable: true,\n  get: function () {\n    return tesselate__default['default'];\n  }\n});\nObject.defineProperty(exports, 'bboxPolygon', {\n  enumerable: true,\n  get: function () {\n    return bboxPolygon__default['default'];\n  }\n});\nObject.defineProperty(exports, 'booleanPointInPolygon', {\n  enumerable: true,\n  get: function () {\n    return booleanPointInPolygon__default['default'];\n  }\n});\nObject.defineProperty(exports, 'inside', {\n  enumerable: true,\n  get: function () {\n    return booleanPointInPolygon__default['default'];\n  }\n});\nObject.defineProperty(exports, 'nearest', {\n  enumerable: true,\n  get: function () {\n    return nearestPoint__default['default'];\n  }\n});\nObject.defineProperty(exports, 'nearestPoint', {\n  enumerable: true,\n  get: function () {\n    return nearestPoint__default['default'];\n  }\n});\nObject.defineProperty(exports, 'nearestPointOnLine', {\n  enumerable: true,\n  get: function () {\n    return nearestPointOnLine__default['default'];\n  }\n});\nObject.defineProperty(exports, 'pointOnLine', {\n  enumerable: true,\n  get: function () {\n    return nearestPointOnLine__default['default'];\n  }\n});\nObject.defineProperty(exports, 'nearestPointToLine', {\n  enumerable: true,\n  get: function () {\n    return nearestPointToLine__default['default'];\n  }\n});\nObject.defineProperty(exports, 'planepoint', {\n  enumerable: true,\n  get: function () {\n    return planepoint__default['default'];\n  }\n});\nObject.defineProperty(exports, 'tin', {\n  enumerable: true,\n  get: function () {\n    return tin__default['default'];\n  }\n});\nObject.defineProperty(exports, 'bearing', {\n  enumerable: true,\n  get: function () {\n    return bearing__default['default'];\n  }\n});\nObject.defineProperty(exports, 'destination', {\n  enumerable: true,\n  get: function () {\n    return destination__default['default'];\n  }\n});\nObject.defineProperty(exports, 'kinks', {\n  enumerable: true,\n  get: function () {\n    return kinks__default['default'];\n  }\n});\nObject.defineProperty(exports, 'pointOnFeature', {\n  enumerable: true,\n  get: function () {\n    return pointOnFeature__default['default'];\n  }\n});\nObject.defineProperty(exports, 'pointOnSurface', {\n  enumerable: true,\n  get: function () {\n    return pointOnFeature__default['default'];\n  }\n});\nObject.defineProperty(exports, 'area', {\n  enumerable: true,\n  get: function () {\n    return area__default['default'];\n  }\n});\nObject.defineProperty(exports, 'along', {\n  enumerable: true,\n  get: function () {\n    return along__default['default'];\n  }\n});\nObject.defineProperty(exports, 'length', {\n  enumerable: true,\n  get: function () {\n    return length__default['default'];\n  }\n});\nObject.defineProperty(exports, 'lineDistance', {\n  enumerable: true,\n  get: function () {\n    return length__default['default'];\n  }\n});\nObject.defineProperty(exports, 'lineSlice', {\n  enumerable: true,\n  get: function () {\n    return lineSlice__default['default'];\n  }\n});\nObject.defineProperty(exports, 'lineSliceAlong', {\n  enumerable: true,\n  get: function () {\n    return lineSliceAlong__default['default'];\n  }\n});\nObject.defineProperty(exports, 'pointGrid', {\n  enumerable: true,\n  get: function () {\n    return pointGrid__default['default'];\n  }\n});\nObject.defineProperty(exports, 'truncate', {\n  enumerable: true,\n  get: function () {\n    return truncate__default['default'];\n  }\n});\nObject.defineProperty(exports, 'flatten', {\n  enumerable: true,\n  get: function () {\n    return flatten__default['default'];\n  }\n});\nObject.defineProperty(exports, 'lineIntersect', {\n  enumerable: true,\n  get: function () {\n    return lineIntersect__default['default'];\n  }\n});\nObject.defineProperty(exports, 'lineChunk', {\n  enumerable: true,\n  get: function () {\n    return lineChunk__default['default'];\n  }\n});\nObject.defineProperty(exports, 'unkinkPolygon', {\n  enumerable: true,\n  get: function () {\n    return unkinkPolygon__default['default'];\n  }\n});\nObject.defineProperty(exports, 'greatCircle', {\n  enumerable: true,\n  get: function () {\n    return greatCircle__default['default'];\n  }\n});\nObject.defineProperty(exports, 'lineSegment', {\n  enumerable: true,\n  get: function () {\n    return lineSegment__default['default'];\n  }\n});\nObject.defineProperty(exports, 'lineSplit', {\n  enumerable: true,\n  get: function () {\n    return lineSplit__default['default'];\n  }\n});\nObject.defineProperty(exports, 'lineArc', {\n  enumerable: true,\n  get: function () {\n    return lineArc__default['default'];\n  }\n});\nObject.defineProperty(exports, 'polygonToLine', {\n  enumerable: true,\n  get: function () {\n    return polygonToLine__default['default'];\n  }\n});\nObject.defineProperty(exports, 'polygonToLineString', {\n  enumerable: true,\n  get: function () {\n    return polygonToLine__default['default'];\n  }\n});\nObject.defineProperty(exports, 'lineStringToPolygon', {\n  enumerable: true,\n  get: function () {\n    return lineToPolygon__default['default'];\n  }\n});\nObject.defineProperty(exports, 'lineToPolygon', {\n  enumerable: true,\n  get: function () {\n    return lineToPolygon__default['default'];\n  }\n});\nObject.defineProperty(exports, 'bboxClip', {\n  enumerable: true,\n  get: function () {\n    return bboxClip__default['default'];\n  }\n});\nObject.defineProperty(exports, 'lineOverlap', {\n  enumerable: true,\n  get: function () {\n    return lineOverlap__default['default'];\n  }\n});\nObject.defineProperty(exports, 'sector', {\n  enumerable: true,\n  get: function () {\n    return sector__default['default'];\n  }\n});\nObject.defineProperty(exports, 'rhumbBearing', {\n  enumerable: true,\n  get: function () {\n    return rhumbBearing__default['default'];\n  }\n});\nObject.defineProperty(exports, 'rhumbDistance', {\n  enumerable: true,\n  get: function () {\n    return rhumbDistance__default['default'];\n  }\n});\nObject.defineProperty(exports, 'rhumbDestination', {\n  enumerable: true,\n  get: function () {\n    return rhumbDestination__default['default'];\n  }\n});\nObject.defineProperty(exports, 'polygonTangents', {\n  enumerable: true,\n  get: function () {\n    return polygonTangents__default['default'];\n  }\n});\nObject.defineProperty(exports, 'rewind', {\n  enumerable: true,\n  get: function () {\n    return rewind__default['default'];\n  }\n});\nObject.defineProperty(exports, 'isobands', {\n  enumerable: true,\n  get: function () {\n    return isobands__default['default'];\n  }\n});\nObject.defineProperty(exports, 'transformRotate', {\n  enumerable: true,\n  get: function () {\n    return transformRotate__default['default'];\n  }\n});\nObject.defineProperty(exports, 'transformScale', {\n  enumerable: true,\n  get: function () {\n    return transformScale__default['default'];\n  }\n});\nObject.defineProperty(exports, 'transformTranslate', {\n  enumerable: true,\n  get: function () {\n    return transformTranslate__default['default'];\n  }\n});\nObject.defineProperty(exports, 'lineOffset', {\n  enumerable: true,\n  get: function () {\n    return lineOffset__default['default'];\n  }\n});\nObject.defineProperty(exports, 'polygonize', {\n  enumerable: true,\n  get: function () {\n    return polygonize__default['default'];\n  }\n});\nObject.defineProperty(exports, 'booleanDisjoint', {\n  enumerable: true,\n  get: function () {\n    return booleanDisjoint__default['default'];\n  }\n});\nObject.defineProperty(exports, 'booleanContains', {\n  enumerable: true,\n  get: function () {\n    return booleanContains__default['default'];\n  }\n});\nObject.defineProperty(exports, 'booleanCrosses', {\n  enumerable: true,\n  get: function () {\n    return booleanCrosses__default['default'];\n  }\n});\nObject.defineProperty(exports, 'booleanClockwise', {\n  enumerable: true,\n  get: function () {\n    return booleanClockwise__default['default'];\n  }\n});\nObject.defineProperty(exports, 'booleanOverlap', {\n  enumerable: true,\n  get: function () {\n    return booleanOverlap__default['default'];\n  }\n});\nObject.defineProperty(exports, 'booleanPointOnLine', {\n  enumerable: true,\n  get: function () {\n    return booleanPointOnLine__default['default'];\n  }\n});\nObject.defineProperty(exports, 'booleanEqual', {\n  enumerable: true,\n  get: function () {\n    return booleanEqual__default['default'];\n  }\n});\nObject.defineProperty(exports, 'booleanWithin', {\n  enumerable: true,\n  get: function () {\n    return booleanWithin__default['default'];\n  }\n});\nObject.defineProperty(exports, 'booleanIntersects', {\n  enumerable: true,\n  get: function () {\n    return booleanIntersects__default['default'];\n  }\n});\nObject.defineProperty(exports, 'clone', {\n  enumerable: true,\n  get: function () {\n    return clone__default['default'];\n  }\n});\nObject.defineProperty(exports, 'cleanCoords', {\n  enumerable: true,\n  get: function () {\n    return cleanCoords__default['default'];\n  }\n});\nObject.defineProperty(exports, 'clustersDbscan', {\n  enumerable: true,\n  get: function () {\n    return clustersDbscan__default['default'];\n  }\n});\nObject.defineProperty(exports, 'clustersKmeans', {\n  enumerable: true,\n  get: function () {\n    return clustersKmeans__default['default'];\n  }\n});\nObject.defineProperty(exports, 'pointToLineDistance', {\n  enumerable: true,\n  get: function () {\n    return pointToLineDistance__default['default'];\n  }\n});\nObject.defineProperty(exports, 'booleanParallel', {\n  enumerable: true,\n  get: function () {\n    return booleanParallel__default['default'];\n  }\n});\nObject.defineProperty(exports, 'shortestPath', {\n  enumerable: true,\n  get: function () {\n    return shortestPath__default['default'];\n  }\n});\nObject.defineProperty(exports, 'voronoi', {\n  enumerable: true,\n  get: function () {\n    return voronoi__default['default'];\n  }\n});\nObject.defineProperty(exports, 'ellipse', {\n  enumerable: true,\n  get: function () {\n    return ellipse__default['default'];\n  }\n});\nObject.defineProperty(exports, 'centerMean', {\n  enumerable: true,\n  get: function () {\n    return centerMean__default['default'];\n  }\n});\nObject.defineProperty(exports, 'centerMedian', {\n  enumerable: true,\n  get: function () {\n    return centerMedian__default['default'];\n  }\n});\nObject.defineProperty(exports, 'standardDeviationalEllipse', {\n  enumerable: true,\n  get: function () {\n    return standardDeviationalEllipse__default['default'];\n  }\n});\nObject.defineProperty(exports, 'angle', {\n  enumerable: true,\n  get: function () {\n    return angle__default['default'];\n  }\n});\nObject.defineProperty(exports, 'polygonSmooth', {\n  enumerable: true,\n  get: function () {\n    return polygonSmooth__default['default'];\n  }\n});\nObject.defineProperty(exports, 'moranIndex', {\n  enumerable: true,\n  get: function () {\n    return moranIndex__default['default'];\n  }\n});\nObject.defineProperty(exports, 'distanceWeight', {\n  enumerable: true,\n  get: function () {\n    return distanceWeight__default['default'];\n  }\n});\nexports.projection = projection__namespace;\nexports.random = random__namespace;\nexports.clusters = clusters__namespace;\nObject.defineProperty(exports, 'bearingToAngle', {\n  enumerable: true,\n  get: function () {\n    return helpers.bearingToAzimuth;\n  }\n});\nObject.defineProperty(exports, 'convertDistance', {\n  enumerable: true,\n  get: function () {\n    return helpers.convertLength;\n  }\n});\nObject.defineProperty(exports, 'degrees2radians', {\n  enumerable: true,\n  get: function () {\n    return helpers.degreesToRadians;\n  }\n});\nObject.defineProperty(exports, 'distanceToDegrees', {\n  enumerable: true,\n  get: function () {\n    return helpers.lengthToDegrees;\n  }\n});\nObject.defineProperty(exports, 'distanceToRadians', {\n  enumerable: true,\n  get: function () {\n    return helpers.lengthToRadians;\n  }\n});\nexports.helpers = helpers__namespace;\nObject.defineProperty(exports, 'radians2degrees', {\n  enumerable: true,\n  get: function () {\n    return helpers.radiansToDegrees;\n  }\n});\nObject.defineProperty(exports, 'radiansToDistance', {\n  enumerable: true,\n  get: function () {\n    return helpers.radiansToLength;\n  }\n});\nexports.invariant = invariant__namespace;\nexports.meta = meta__namespace;\nObject.defineProperty(exports, 'difference', {\n  enumerable: true,\n  get: function () {\n    return difference__default['default'];\n  }\n});\nObject.defineProperty(exports, 'buffer', {\n  enumerable: true,\n  get: function () {\n    return buffer__default['default'];\n  }\n});\nObject.defineProperty(exports, 'union', {\n  enumerable: true,\n  get: function () {\n    return union__default['default'];\n  }\n});\nObject.defineProperty(exports, 'intersect', {\n  enumerable: true,\n  get: function () {\n    return intersect__default['default'];\n  }\n});\nObject.defineProperty(exports, 'dissolve', {\n  enumerable: true,\n  get: function () {\n    return dissolve__default['default'];\n  }\n});\nObject.defineProperty(exports, 'hexGrid', {\n  enumerable: true,\n  get: function () {\n    return hexGrid__default['default'];\n  }\n});\nObject.defineProperty(exports, 'mask', {\n  enumerable: true,\n  get: function () {\n    return mask__default['default'];\n  }\n});\nObject.defineProperty(exports, 'squareGrid', {\n  enumerable: true,\n  get: function () {\n    return squareGrid__default['default'];\n  }\n});\nObject.defineProperty(exports, 'triangleGrid', {\n  enumerable: true,\n  get: function () {\n    return triangleGrid__default['default'];\n  }\n});\nObject.defineProperty(exports, 'interpolate', {\n  enumerable: true,\n  get: function () {\n    return interpolate__default['default'];\n  }\n});\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar clean_coords_1 = __importDefault(require(\"@turf/clean-coords\"));\nvar line_segment_1 = __importDefault(require(\"@turf/line-segment\"));\nvar rhumb_bearing_1 = __importDefault(require(\"@turf/rhumb-bearing\"));\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Boolean-Parallel returns True if each segment of `line1` is parallel to the correspondent segment of `line2`\n *\n * @name booleanParallel\n * @param {Geometry|Feature<LineString>} line1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<LineString>} line2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false if the lines are parallel\n * @example\n * var line1 = turf.lineString([[0, 0], [0, 1]]);\n * var line2 = turf.lineString([[1, 0], [1, 1]]);\n *\n * turf.booleanParallel(line1, line2);\n * //=true\n */\nfunction booleanParallel(line1, line2) {\n    // validation\n    if (!line1)\n        throw new Error(\"line1 is required\");\n    if (!line2)\n        throw new Error(\"line2 is required\");\n    var type1 = getType(line1, \"line1\");\n    if (type1 !== \"LineString\")\n        throw new Error(\"line1 must be a LineString\");\n    var type2 = getType(line2, \"line2\");\n    if (type2 !== \"LineString\")\n        throw new Error(\"line2 must be a LineString\");\n    var segments1 = line_segment_1.default(clean_coords_1.default(line1)).features;\n    var segments2 = line_segment_1.default(clean_coords_1.default(line2)).features;\n    for (var i = 0; i < segments1.length; i++) {\n        var segment1 = segments1[i].geometry.coordinates;\n        if (!segments2[i])\n            break;\n        var segment2 = segments2[i].geometry.coordinates;\n        if (!isParallel(segment1, segment2))\n            return false;\n    }\n    return true;\n}\n/**\n * Compares slopes and return result\n *\n * @private\n * @param {Geometry|Feature<LineString>} segment1 Geometry or Feature\n * @param {Geometry|Feature<LineString>} segment2 Geometry or Feature\n * @returns {boolean} if slopes are equal\n */\nfunction isParallel(segment1, segment2) {\n    var slope1 = helpers_1.bearingToAzimuth(rhumb_bearing_1.default(segment1[0], segment1[1]));\n    var slope2 = helpers_1.bearingToAzimuth(rhumb_bearing_1.default(segment2[0], segment2[1]));\n    return slope1 === slope2;\n}\n/**\n * Returns Feature's type\n *\n * @private\n * @param {Geometry|Feature<any>} geojson Geometry or Feature\n * @param {string} name of the variable\n * @returns {string} Feature's type\n */\nfunction getType(geojson, name) {\n    if (geojson.geometry && geojson.geometry.type)\n        return geojson.geometry.type;\n    if (geojson.type)\n        return geojson.type; // if GeoJSON geometry\n    throw new Error(\"Invalid GeoJSON object for \" + name);\n}\nexports.default = booleanParallel;\n","export default function sortProjects (item1, item2) {\n  const item1Type = (item1.subtype === 'default' || item1.subtype === 'external') ? 'project' : item1.subtype\n  const item2Type = (item2.subtype === 'default' || item2.subtype === 'external') ? 'project' : item2.subtype\n\n  const sortByPhase = (phase1, phase2, earliestFirst) => {\n    if (phase1 && phase2) {\n      const date1 = Date.parse(phase1)\n      const date2 = Date.parse(phase2)\n      if (earliestFirst) {\n        return date1 <= date2 ? -1 : 1\n      } else {\n        return date1 >= date2 ? -1 : 1\n      }\n    }\n    if (phase1 || phase2) {\n      return phase1 ? -1 : 1\n    }\n    return false\n  }\n\n  if (item1Type === item2Type) {\n    /* show\n       1. projects with active phase\n       2. projects with future phase\n       3. projects with past phase\n       4. projects without phase (can happen for external ones) */\n    if (item1Type === 'project') {\n      const active = sortByPhase(item1.active_phase[2], item2.active_phase[2], true)\n      if (active) {\n        return active\n      }\n      const future = sortByPhase(item1.future_phase, item2.future_phase, true)\n      if (future) {\n        return future\n      }\n      const past = sortByPhase(item1.past_phase, item2.past_phase, false)\n      if (past) {\n        return past\n      }\n    } else {\n      /* sort plans by modified */\n      return (new Date(item1.created_or_modified) >= new Date(item2.created_or_modified)) ? -1 : 1\n    }\n  } else {\n    /* show projects first, plans second */\n    switch (item1Type) {\n      case 'project':\n        return -1\n      case 'plan':\n        return 1\n    }\n  }\n}\n","'use strict';\n\nvar meta = require('@turf/meta');\nvar invariant = require('@turf/invariant');\nvar helpers = require('@turf/helpers');\nvar centerMean = require('@turf/center-mean');\nvar pointsWithinPolygon = require('@turf/points-within-polygon');\nvar ellipse = require('@turf/ellipse');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar centerMean__default = /*#__PURE__*/_interopDefaultLegacy(centerMean);\nvar pointsWithinPolygon__default = /*#__PURE__*/_interopDefaultLegacy(pointsWithinPolygon);\nvar ellipse__default = /*#__PURE__*/_interopDefaultLegacy(ellipse);\n\n/**\n * Takes a {@link FeatureCollection} and returns a standard deviational ellipse,\n * also known as a “directional distribution.” The standard deviational ellipse\n * aims to show the direction and the distribution of a dataset by drawing\n * an ellipse that contains about one standard deviation’s worth (~ 70%) of the\n * data.\n *\n * This module mirrors the functionality of [Directional Distribution](http://desktop.arcgis.com/en/arcmap/10.3/tools/spatial-statistics-toolbox/directional-distribution.htm)\n * in ArcGIS and the [QGIS Standard Deviational Ellipse Plugin](http://arken.nmbu.no/~havatv/gis/qgisplugins/SDEllipse/)\n *\n * **Bibliography**\n *\n * • Robert S. Yuill, “The Standard Deviational Ellipse; An Updated Tool for\n * Spatial Description,” _Geografiska Annaler_ 53, no. 1 (1971): 28–39,\n * doi:{@link https://doi.org/10.2307/490885|10.2307/490885}.\n *\n * • Paul Hanly Furfey, “A Note on Lefever’s “Standard Deviational Ellipse,”\n * _American Journal of Sociology_ 33, no. 1 (1927): 94—98,\n * doi:{@link https://doi.org/10.1086/214336|10.1086/214336}.\n *\n *\n * @name standardDeviationalEllipse\n * @param {FeatureCollection<Point>} points GeoJSON points\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.weight] the property name used to weight the center\n * @param {number} [options.steps=64] number of steps for the polygon\n * @param {Object} [options.properties={}] properties to pass to the resulting ellipse\n * @returns {Feature<Polygon>} an elliptical Polygon that includes approximately 1 SD of the dataset within it.\n * @example\n *\n * var bbox = [-74, 40.72, -73.98, 40.74];\n * var points = turf.randomPoint(400, {bbox: bbox});\n * var sdEllipse = turf.standardDeviationalEllipse(points);\n *\n * //addToMap\n * var addToMap = [points, sdEllipse];\n *\n */\nfunction standardDeviationalEllipse(points, options) {\n  // Optional params\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var steps = options.steps || 64;\n  var weightTerm = options.weight;\n  var properties = options.properties || {};\n\n  // Validation:\n  if (!helpers.isNumber(steps)) throw new Error(\"steps must be a number\");\n  if (!helpers.isObject(properties)) throw new Error(\"properties must be a number\");\n\n  // Calculate mean center & number of features:\n  var numberOfFeatures = meta.coordAll(points).length;\n  var meanCenter = centerMean__default['default'](points, { weight: weightTerm });\n\n  // Calculate angle of rotation:\n  // [X, Y] = mean center of all [x, y].\n  // theta = arctan( (A + B) / C )\n  // A = sum((x - X)^2) - sum((y - Y)^2)\n  // B = sqrt(A^2 + 4(sum((x - X)(y - Y))^2))\n  // C = 2(sum((x - X)(y - Y)))\n\n  var xDeviationSquaredSum = 0;\n  var yDeviationSquaredSum = 0;\n  var xyDeviationSum = 0;\n\n  meta.featureEach(points, function (point) {\n    var weight = point.properties[weightTerm] || 1;\n    var deviation = getDeviations(invariant.getCoords(point), invariant.getCoords(meanCenter));\n    xDeviationSquaredSum += Math.pow(deviation.x, 2) * weight;\n    yDeviationSquaredSum += Math.pow(deviation.y, 2) * weight;\n    xyDeviationSum += deviation.x * deviation.y * weight;\n  });\n\n  var bigA = xDeviationSquaredSum - yDeviationSquaredSum;\n  var bigB = Math.sqrt(Math.pow(bigA, 2) + 4 * Math.pow(xyDeviationSum, 2));\n  var bigC = 2 * xyDeviationSum;\n  var theta = Math.atan((bigA + bigB) / bigC);\n  var thetaDeg = (theta * 180) / Math.PI;\n\n  // Calculate axes:\n  // sigmaX = sqrt((1 / n - 2) * sum((((x - X) * cos(theta)) - ((y - Y) * sin(theta)))^2))\n  // sigmaY = sqrt((1 / n - 2) * sum((((x - X) * sin(theta)) - ((y - Y) * cos(theta)))^2))\n  var sigmaXsum = 0;\n  var sigmaYsum = 0;\n  var weightsum = 0;\n  meta.featureEach(points, function (point) {\n    var weight = point.properties[weightTerm] || 1;\n    var deviation = getDeviations(invariant.getCoords(point), invariant.getCoords(meanCenter));\n    sigmaXsum +=\n      Math.pow(\n        deviation.x * Math.cos(theta) - deviation.y * Math.sin(theta),\n        2\n      ) * weight;\n    sigmaYsum +=\n      Math.pow(\n        deviation.x * Math.sin(theta) + deviation.y * Math.cos(theta),\n        2\n      ) * weight;\n    weightsum += weight;\n  });\n\n  var sigmaX = Math.sqrt((2 * sigmaXsum) / weightsum);\n  var sigmaY = Math.sqrt((2 * sigmaYsum) / weightsum);\n\n  var theEllipse = ellipse__default['default'](meanCenter, sigmaX, sigmaY, {\n    units: \"degrees\",\n    angle: thetaDeg,\n    steps: steps,\n    properties: properties,\n  });\n  var pointsWithinEllipse = pointsWithinPolygon__default['default'](\n    points,\n    helpers.featureCollection([theEllipse])\n  );\n  var standardDeviationalEllipseProperties = {\n    meanCenterCoordinates: invariant.getCoords(meanCenter),\n    semiMajorAxis: sigmaX,\n    semiMinorAxis: sigmaY,\n    numberOfFeatures: numberOfFeatures,\n    angle: thetaDeg,\n    percentageWithinEllipse:\n      (100 * meta.coordAll(pointsWithinEllipse).length) / numberOfFeatures,\n  };\n  theEllipse.properties.standardDeviationalEllipse = standardDeviationalEllipseProperties;\n\n  return theEllipse;\n}\n\n/**\n * Get x_i - X and y_i - Y\n *\n * @private\n * @param {Array} coordinates Array of [x_i, y_i]\n * @param {Array} center Array of [X, Y]\n * @returns {Object} { x: n, y: m }\n */\nfunction getDeviations(coordinates, center) {\n  return {\n    x: coordinates[0] - center[0],\n    y: coordinates[1] - center[1],\n  };\n}\n\nmodule.exports = standardDeviationalEllipse;\nmodule.exports.default = standardDeviationalEllipse;\n","/**\n * react-router-dom v7.13.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// index.ts\nvar index_exports = {};\n__export(index_exports, {\n  HydratedRouter: () => import_dom.HydratedRouter,\n  RouterProvider: () => import_dom.RouterProvider\n});\nmodule.exports = __toCommonJS(index_exports);\nvar import_dom = require(\"react-router/dom\");\n__reExport(index_exports, require(\"react-router\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  HydratedRouter,\n  RouterProvider,\n  ...require(\"react-router\")\n});\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar clone_1 = __importDefault(require(\"@turf/clone\"));\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Merges all connected (non-forking, non-junctioning) line strings into single lineStrings.\n * [LineString] -> LineString|MultiLineString\n *\n * @param {FeatureCollection<LineString|MultiLineString>} geojson Lines to dissolve\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.mutate=false] Prevent input mutation\n * @returns {Feature<LineString|MultiLineString>} Dissolved lines\n */\nfunction lineDissolve(geojson, options) {\n    if (options === void 0) { options = {}; }\n    // Optional parameters\n    options = options || {};\n    if (!helpers_1.isObject(options)) {\n        throw new Error(\"options is invalid\");\n    }\n    var mutate = options.mutate;\n    // Validation\n    if (invariant_1.getType(geojson) !== \"FeatureCollection\") {\n        throw new Error(\"geojson must be a FeatureCollection\");\n    }\n    if (!geojson.features.length) {\n        throw new Error(\"geojson is empty\");\n    }\n    // Clone geojson to avoid side effects\n    if (mutate === false || mutate === undefined) {\n        geojson = clone_1.default(geojson);\n    }\n    var result = [];\n    var lastLine = meta_1.lineReduce(geojson, function (previousLine, currentLine) {\n        // Attempt to merge this LineString with the other LineStrings, updating\n        // the reference as it is merged with others and grows.\n        var merged = mergeLineStrings(previousLine, currentLine);\n        // Accumulate the merged LineString\n        if (merged) {\n            return merged;\n            // Put the unmerged LineString back into the list\n        }\n        else {\n            result.push(previousLine);\n            return currentLine;\n        }\n    });\n    // Append the last line\n    if (lastLine) {\n        result.push(lastLine);\n    }\n    // Return null if no lines were dissolved\n    if (!result.length) {\n        return null;\n        // Return LineString if only 1 line was dissolved\n    }\n    else if (result.length === 1) {\n        return result[0];\n        // Return MultiLineString if multiple lines were dissolved with gaps\n    }\n    else {\n        return helpers_1.multiLineString(result.map(function (line) {\n            return line.coordinates;\n        }));\n    }\n}\n// [Number, Number] -> String\nfunction coordId(coord) {\n    return coord[0].toString() + \",\" + coord[1].toString();\n}\n/**\n * LineString, LineString -> LineString\n *\n * @private\n * @param {Feature<LineString>} a line1\n * @param {Feature<LineString>} b line2\n * @returns {Feature<LineString>|null} Merged LineString\n */\nfunction mergeLineStrings(a, b) {\n    var coords1 = a.geometry.coordinates;\n    var coords2 = b.geometry.coordinates;\n    var s1 = coordId(coords1[0]);\n    var e1 = coordId(coords1[coords1.length - 1]);\n    var s2 = coordId(coords2[0]);\n    var e2 = coordId(coords2[coords2.length - 1]);\n    // TODO: handle case where more than one of these is true!\n    var coords;\n    if (s1 === e2) {\n        coords = coords2.concat(coords1.slice(1));\n    }\n    else if (s2 === e1) {\n        coords = coords1.concat(coords2.slice(1));\n    }\n    else if (s1 === s2) {\n        coords = coords1.slice(1).reverse().concat(coords2);\n    }\n    else if (e1 === e2) {\n        coords = coords1.concat(coords2.reverse().slice(1));\n    }\n    else {\n        return null;\n    }\n    return helpers_1.lineString(coords);\n}\nexports.default = lineDissolve;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Returns true if a point is on a line. Accepts a optional parameter to ignore the\n * start and end vertices of the linestring.\n *\n * @name booleanPointOnLine\n * @param {Coord} pt GeoJSON Point\n * @param {Feature<LineString>} line GeoJSON LineString\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.ignoreEndVertices=false] whether to ignore the start and end vertices.\n * @param {number} [options.epsilon] Fractional number to compare with the cross product result. Useful for dealing with floating points such as lng/lat points\n * @returns {boolean} true/false\n * @example\n * var pt = turf.point([0, 0]);\n * var line = turf.lineString([[-1, -1],[1, 1],[1.5, 2.2]]);\n * var isPointOnLine = turf.booleanPointOnLine(pt, line);\n * //=true\n */\nfunction booleanPointOnLine(pt, line, options) {\n    if (options === void 0) { options = {}; }\n    // Normalize inputs\n    var ptCoords = invariant_1.getCoord(pt);\n    var lineCoords = invariant_1.getCoords(line);\n    // Main\n    for (var i = 0; i < lineCoords.length - 1; i++) {\n        var ignoreBoundary = false;\n        if (options.ignoreEndVertices) {\n            if (i === 0) {\n                ignoreBoundary = \"start\";\n            }\n            if (i === lineCoords.length - 2) {\n                ignoreBoundary = \"end\";\n            }\n            if (i === 0 && i + 1 === lineCoords.length - 1) {\n                ignoreBoundary = \"both\";\n            }\n        }\n        if (isPointOnLineSegment(lineCoords[i], lineCoords[i + 1], ptCoords, ignoreBoundary, typeof options.epsilon === \"undefined\" ? null : options.epsilon)) {\n            return true;\n        }\n    }\n    return false;\n}\n// See http://stackoverflow.com/a/4833823/1979085\n// See https://stackoverflow.com/a/328122/1048847\n/**\n * @private\n * @param {Position} lineSegmentStart coord pair of start of line\n * @param {Position} lineSegmentEnd coord pair of end of line\n * @param {Position} pt coord pair of point to check\n * @param {boolean|string} excludeBoundary whether the point is allowed to fall on the line ends.\n * @param {number} epsilon Fractional number to compare with the cross product result. Useful for dealing with floating points such as lng/lat points\n * If true which end to ignore.\n * @returns {boolean} true/false\n */\nfunction isPointOnLineSegment(lineSegmentStart, lineSegmentEnd, pt, excludeBoundary, epsilon) {\n    var x = pt[0];\n    var y = pt[1];\n    var x1 = lineSegmentStart[0];\n    var y1 = lineSegmentStart[1];\n    var x2 = lineSegmentEnd[0];\n    var y2 = lineSegmentEnd[1];\n    var dxc = pt[0] - x1;\n    var dyc = pt[1] - y1;\n    var dxl = x2 - x1;\n    var dyl = y2 - y1;\n    var cross = dxc * dyl - dyc * dxl;\n    if (epsilon !== null) {\n        if (Math.abs(cross) > epsilon) {\n            return false;\n        }\n    }\n    else if (cross !== 0) {\n        return false;\n    }\n    if (!excludeBoundary) {\n        if (Math.abs(dxl) >= Math.abs(dyl)) {\n            return dxl > 0 ? x1 <= x && x <= x2 : x2 <= x && x <= x1;\n        }\n        return dyl > 0 ? y1 <= y && y <= y2 : y2 <= y && y <= y1;\n    }\n    else if (excludeBoundary === \"start\") {\n        if (Math.abs(dxl) >= Math.abs(dyl)) {\n            return dxl > 0 ? x1 < x && x <= x2 : x2 <= x && x < x1;\n        }\n        return dyl > 0 ? y1 < y && y <= y2 : y2 <= y && y < y1;\n    }\n    else if (excludeBoundary === \"end\") {\n        if (Math.abs(dxl) >= Math.abs(dyl)) {\n            return dxl > 0 ? x1 <= x && x < x2 : x2 < x && x <= x1;\n        }\n        return dyl > 0 ? y1 <= y && y < y2 : y2 < y && y <= y1;\n    }\n    else if (excludeBoundary === \"both\") {\n        if (Math.abs(dxl) >= Math.abs(dyl)) {\n            return dxl > 0 ? x1 < x && x < x2 : x2 < x && x < x1;\n        }\n        return dyl > 0 ? y1 < y && y < y2 : y2 < y && y < y1;\n    }\n    return false;\n}\nexports.default = booleanPointOnLine;\n","export default function(x) {\n  return x;\n}\n","import identity from \"./identity.js\";\n\nexport default function(transform) {\n  if (transform == null) return identity;\n  var x0,\n      y0,\n      kx = transform.scale[0],\n      ky = transform.scale[1],\n      dx = transform.translate[0],\n      dy = transform.translate[1];\n  return function(input, i) {\n    if (!i) x0 = y0 = 0;\n    var j = 2, n = input.length, output = new Array(n);\n    output[0] = (x0 += input[0]) * kx + dx;\n    output[1] = (y0 += input[1]) * ky + dy;\n    while (j < n) output[j] = input[j], ++j;\n    return output;\n  };\n}\n","import transform from \"./transform.js\";\n\nexport default function(topology) {\n  var t = transform(topology.transform), key,\n      x0 = Infinity, y0 = x0, x1 = -x0, y1 = -x0;\n\n  function bboxPoint(p) {\n    p = t(p);\n    if (p[0] < x0) x0 = p[0];\n    if (p[0] > x1) x1 = p[0];\n    if (p[1] < y0) y0 = p[1];\n    if (p[1] > y1) y1 = p[1];\n  }\n\n  function bboxGeometry(o) {\n    switch (o.type) {\n      case \"GeometryCollection\": o.geometries.forEach(bboxGeometry); break;\n      case \"Point\": bboxPoint(o.coordinates); break;\n      case \"MultiPoint\": o.coordinates.forEach(bboxPoint); break;\n    }\n  }\n\n  topology.arcs.forEach(function(arc) {\n    var i = -1, n = arc.length, p;\n    while (++i < n) {\n      p = t(arc[i], i);\n      if (p[0] < x0) x0 = p[0];\n      if (p[0] > x1) x1 = p[0];\n      if (p[1] < y0) y0 = p[1];\n      if (p[1] > y1) y1 = p[1];\n    }\n  });\n\n  for (key in topology.objects) {\n    bboxGeometry(topology.objects[key]);\n  }\n\n  return [x0, y0, x1, y1];\n}\n","import reverse from \"./reverse.js\";\nimport transform from \"./transform.js\";\n\nexport default function(topology, o) {\n  if (typeof o === \"string\") o = topology.objects[o];\n  return o.type === \"GeometryCollection\"\n      ? {type: \"FeatureCollection\", features: o.geometries.map(function(o) { return feature(topology, o); })}\n      : feature(topology, o);\n}\n\nfunction feature(topology, o) {\n  var id = o.id,\n      bbox = o.bbox,\n      properties = o.properties == null ? {} : o.properties,\n      geometry = object(topology, o);\n  return id == null && bbox == null ? {type: \"Feature\", properties: properties, geometry: geometry}\n      : bbox == null ? {type: \"Feature\", id: id, properties: properties, geometry: geometry}\n      : {type: \"Feature\", id: id, bbox: bbox, properties: properties, geometry: geometry};\n}\n\nexport function object(topology, o) {\n  var transformPoint = transform(topology.transform),\n      arcs = topology.arcs;\n\n  function arc(i, points) {\n    if (points.length) points.pop();\n    for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n      points.push(transformPoint(a[k], k));\n    }\n    if (i < 0) reverse(points, n);\n  }\n\n  function point(p) {\n    return transformPoint(p);\n  }\n\n  function line(arcs) {\n    var points = [];\n    for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n    if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n    return points;\n  }\n\n  function ring(arcs) {\n    var points = line(arcs);\n    while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n    return points;\n  }\n\n  function polygon(arcs) {\n    return arcs.map(ring);\n  }\n\n  function geometry(o) {\n    var type = o.type, coordinates;\n    switch (type) {\n      case \"GeometryCollection\": return {type: type, geometries: o.geometries.map(geometry)};\n      case \"Point\": coordinates = point(o.coordinates); break;\n      case \"MultiPoint\": coordinates = o.coordinates.map(point); break;\n      case \"LineString\": coordinates = line(o.arcs); break;\n      case \"MultiLineString\": coordinates = o.arcs.map(line); break;\n      case \"Polygon\": coordinates = polygon(o.arcs); break;\n      case \"MultiPolygon\": coordinates = o.arcs.map(polygon); break;\n      default: return null;\n    }\n    return {type: type, coordinates: coordinates};\n  }\n\n  return geometry(o);\n}\n","export default function(array, n) {\n  var t, j = array.length, i = j - n;\n  while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n","export default function(topology, arcs) {\n  var stitchedArcs = {},\n      fragmentByStart = {},\n      fragmentByEnd = {},\n      fragments = [],\n      emptyIndex = -1;\n\n  // Stitch empty arcs first, since they may be subsumed by other arcs.\n  arcs.forEach(function(i, j) {\n    var arc = topology.arcs[i < 0 ? ~i : i], t;\n    if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n      t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n    }\n  });\n\n  arcs.forEach(function(i) {\n    var e = ends(i),\n        start = e[0],\n        end = e[1],\n        f, g;\n\n    if (f = fragmentByEnd[start]) {\n      delete fragmentByEnd[f.end];\n      f.push(i);\n      f.end = end;\n      if (g = fragmentByStart[end]) {\n        delete fragmentByStart[g.start];\n        var fg = g === f ? f : f.concat(g);\n        fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n      } else {\n        fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n      }\n    } else if (f = fragmentByStart[end]) {\n      delete fragmentByStart[f.start];\n      f.unshift(i);\n      f.start = start;\n      if (g = fragmentByEnd[start]) {\n        delete fragmentByEnd[g.end];\n        var gf = g === f ? f : g.concat(f);\n        fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n      } else {\n        fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n      }\n    } else {\n      f = [i];\n      fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n    }\n  });\n\n  function ends(i) {\n    var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n    if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n    else p1 = arc[arc.length - 1];\n    return i < 0 ? [p1, p0] : [p0, p1];\n  }\n\n  function flush(fragmentByEnd, fragmentByStart) {\n    for (var k in fragmentByEnd) {\n      var f = fragmentByEnd[k];\n      delete fragmentByStart[f.start];\n      delete f.start;\n      delete f.end;\n      f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n      fragments.push(f);\n    }\n  }\n\n  flush(fragmentByEnd, fragmentByStart);\n  flush(fragmentByStart, fragmentByEnd);\n  arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n  return fragments;\n}\n","import {object} from \"./feature.js\";\nimport stitch from \"./stitch.js\";\n\nexport default function(topology) {\n  return object(topology, meshArcs.apply(this, arguments));\n}\n\nexport function meshArcs(topology, object, filter) {\n  var arcs, i, n;\n  if (arguments.length > 1) arcs = extractArcs(topology, object, filter);\n  else for (i = 0, arcs = new Array(n = topology.arcs.length); i < n; ++i) arcs[i] = i;\n  return {type: \"MultiLineString\", arcs: stitch(topology, arcs)};\n}\n\nfunction extractArcs(topology, object, filter) {\n  var arcs = [],\n      geomsByArc = [],\n      geom;\n\n  function extract0(i) {\n    var j = i < 0 ? ~i : i;\n    (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n  }\n\n  function extract1(arcs) {\n    arcs.forEach(extract0);\n  }\n\n  function extract2(arcs) {\n    arcs.forEach(extract1);\n  }\n\n  function extract3(arcs) {\n    arcs.forEach(extract2);\n  }\n\n  function geometry(o) {\n    switch (geom = o, o.type) {\n      case \"GeometryCollection\": o.geometries.forEach(geometry); break;\n      case \"LineString\": extract1(o.arcs); break;\n      case \"MultiLineString\": case \"Polygon\": extract2(o.arcs); break;\n      case \"MultiPolygon\": extract3(o.arcs); break;\n    }\n  }\n\n  geometry(object);\n\n  geomsByArc.forEach(filter == null\n      ? function(geoms) { arcs.push(geoms[0].i); }\n      : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n\n  return arcs;\n}\n","import {object} from \"./feature.js\";\nimport stitch from \"./stitch.js\";\n\nfunction planarRingArea(ring) {\n  var i = -1, n = ring.length, a, b = ring[n - 1], area = 0;\n  while (++i < n) a = b, b = ring[i], area += a[0] * b[1] - a[1] * b[0];\n  return Math.abs(area); // Note: doubled area!\n}\n\nexport default function(topology) {\n  return object(topology, mergeArcs.apply(this, arguments));\n}\n\nexport function mergeArcs(topology, objects) {\n  var polygonsByArc = {},\n      polygons = [],\n      groups = [];\n\n  objects.forEach(geometry);\n\n  function geometry(o) {\n    switch (o.type) {\n      case \"GeometryCollection\": o.geometries.forEach(geometry); break;\n      case \"Polygon\": extract(o.arcs); break;\n      case \"MultiPolygon\": o.arcs.forEach(extract); break;\n    }\n  }\n\n  function extract(polygon) {\n    polygon.forEach(function(ring) {\n      ring.forEach(function(arc) {\n        (polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);\n      });\n    });\n    polygons.push(polygon);\n  }\n\n  function area(ring) {\n    return planarRingArea(object(topology, {type: \"Polygon\", arcs: [ring]}).coordinates[0]);\n  }\n\n  polygons.forEach(function(polygon) {\n    if (!polygon._) {\n      var group = [],\n          neighbors = [polygon];\n      polygon._ = 1;\n      groups.push(group);\n      while (polygon = neighbors.pop()) {\n        group.push(polygon);\n        polygon.forEach(function(ring) {\n          ring.forEach(function(arc) {\n            polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {\n              if (!polygon._) {\n                polygon._ = 1;\n                neighbors.push(polygon);\n              }\n            });\n          });\n        });\n      }\n    }\n  });\n\n  polygons.forEach(function(polygon) {\n    delete polygon._;\n  });\n\n  return {\n    type: \"MultiPolygon\",\n    arcs: groups.map(function(polygons) {\n      var arcs = [], n;\n\n      // Extract the exterior (unique) arcs.\n      polygons.forEach(function(polygon) {\n        polygon.forEach(function(ring) {\n          ring.forEach(function(arc) {\n            if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {\n              arcs.push(arc);\n            }\n          });\n        });\n      });\n\n      // Stitch the arcs into one or more rings.\n      arcs = stitch(topology, arcs);\n\n      // If more than one ring is returned,\n      // at most one of these rings can be the exterior;\n      // choose the one with the greatest absolute area.\n      if ((n = arcs.length) > 1) {\n        for (var i = 1, k = area(arcs[0]), ki, t; i < n; ++i) {\n          if ((ki = area(arcs[i])) > k) {\n            t = arcs[0], arcs[0] = arcs[i], arcs[i] = t, k = ki;\n          }\n        }\n      }\n\n      return arcs;\n    }).filter(function(arcs) {\n      return arcs.length > 0;\n    })\n  };\n}\n","export default function(a, x) {\n  var lo = 0, hi = a.length;\n  while (lo < hi) {\n    var mid = lo + hi >>> 1;\n    if (a[mid] < x) lo = mid + 1;\n    else hi = mid;\n  }\n  return lo;\n}\n","import bisect from \"./bisect.js\";\n\nexport default function(objects) {\n  var indexesByArc = {}, // arc index -> array of object indexes\n      neighbors = objects.map(function() { return []; });\n\n  function line(arcs, i) {\n    arcs.forEach(function(a) {\n      if (a < 0) a = ~a;\n      var o = indexesByArc[a];\n      if (o) o.push(i);\n      else indexesByArc[a] = [i];\n    });\n  }\n\n  function polygon(arcs, i) {\n    arcs.forEach(function(arc) { line(arc, i); });\n  }\n\n  function geometry(o, i) {\n    if (o.type === \"GeometryCollection\") o.geometries.forEach(function(o) { geometry(o, i); });\n    else if (o.type in geometryType) geometryType[o.type](o.arcs, i);\n  }\n\n  var geometryType = {\n    LineString: line,\n    MultiLineString: polygon,\n    Polygon: polygon,\n    MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); }\n  };\n\n  objects.forEach(geometry);\n\n  for (var i in indexesByArc) {\n    for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) {\n      for (var k = j + 1; k < m; ++k) {\n        var ij = indexes[j], ik = indexes[k], n;\n        if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik);\n        if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij);\n      }\n    }\n  }\n\n  return neighbors;\n}\n","import identity from \"./identity.js\";\n\nexport default function(transform) {\n  if (transform == null) return identity;\n  var x0,\n      y0,\n      kx = transform.scale[0],\n      ky = transform.scale[1],\n      dx = transform.translate[0],\n      dy = transform.translate[1];\n  return function(input, i) {\n    if (!i) x0 = y0 = 0;\n    var j = 2,\n        n = input.length,\n        output = new Array(n),\n        x1 = Math.round((input[0] - dx) / kx),\n        y1 = Math.round((input[1] - dy) / ky);\n    output[0] = x1 - x0, x0 = x1;\n    output[1] = y1 - y0, y0 = y1;\n    while (j < n) output[j] = input[j], ++j;\n    return output;\n  };\n}\n","import bbox from \"./bbox.js\";\nimport untransform from \"./untransform.js\";\n\nexport default function(topology, transform) {\n  if (topology.transform) throw new Error(\"already quantized\");\n\n  if (!transform || !transform.scale) {\n    if (!((n = Math.floor(transform)) >= 2)) throw new Error(\"n must be ≥2\");\n    box = topology.bbox || bbox(topology);\n    var x0 = box[0], y0 = box[1], x1 = box[2], y1 = box[3], n;\n    transform = {scale: [x1 - x0 ? (x1 - x0) / (n - 1) : 1, y1 - y0 ? (y1 - y0) / (n - 1) : 1], translate: [x0, y0]};\n  } else {\n    box = topology.bbox;\n  }\n\n  var t = untransform(transform), box, key, inputs = topology.objects, outputs = {};\n\n  function quantizePoint(point) {\n    return t(point);\n  }\n\n  function quantizeGeometry(input) {\n    var output;\n    switch (input.type) {\n      case \"GeometryCollection\": output = {type: \"GeometryCollection\", geometries: input.geometries.map(quantizeGeometry)}; break;\n      case \"Point\": output = {type: \"Point\", coordinates: quantizePoint(input.coordinates)}; break;\n      case \"MultiPoint\": output = {type: \"MultiPoint\", coordinates: input.coordinates.map(quantizePoint)}; break;\n      default: return input;\n    }\n    if (input.id != null) output.id = input.id;\n    if (input.bbox != null) output.bbox = input.bbox;\n    if (input.properties != null) output.properties = input.properties;\n    return output;\n  }\n\n  function quantizeArc(input) {\n    var i = 0, j = 1, n = input.length, p, output = new Array(n); // pessimistic\n    output[0] = t(input[0], 0);\n    while (++i < n) if ((p = t(input[i], i))[0] || p[1]) output[j++] = p; // non-coincident points\n    if (j === 1) output[j++] = [0, 0]; // an arc must have at least two points\n    output.length = j;\n    return output;\n  }\n\n  for (key in inputs) outputs[key] = quantizeGeometry(inputs[key]);\n\n  return {\n    type: \"Topology\",\n    bbox: box,\n    transform: transform,\n    objects: outputs,\n    arcs: topology.arcs.map(quantizeArc)\n  };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar clone_1 = __importDefault(require(\"@turf/clone\"));\nvar meta_1 = require(\"@turf/meta\");\nvar skmeans_1 = __importDefault(require(\"skmeans\"));\n/**\n * Takes a set of {@link Point|points} and partition them into clusters using the k-mean .\n * It uses the [k-means algorithm](https://en.wikipedia.org/wiki/K-means_clustering)\n *\n * @name clustersKmeans\n * @param {FeatureCollection<Point>} points to be clustered\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.numberOfClusters=Math.sqrt(numberOfPoints/2)] numberOfClusters that will be generated\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {FeatureCollection<Point>} Clustered Points with an additional two properties associated to each Feature:\n * - {number} cluster - the associated clusterId\n * - {[number, number]} centroid - Centroid of the cluster [Longitude, Latitude]\n * @example\n * // create random points with random z-values in their properties\n * var points = turf.randomPoint(100, {bbox: [0, 30, 20, 50]});\n * var options = {numberOfClusters: 7};\n * var clustered = turf.clustersKmeans(points, options);\n *\n * //addToMap\n * var addToMap = [clustered];\n */\nfunction clustersKmeans(points, options) {\n    if (options === void 0) { options = {}; }\n    // Default Params\n    var count = points.features.length;\n    options.numberOfClusters =\n        options.numberOfClusters || Math.round(Math.sqrt(count / 2));\n    // numberOfClusters can't be greater than the number of points\n    // fallbacks to count\n    if (options.numberOfClusters > count)\n        options.numberOfClusters = count;\n    // Clone points to prevent any mutations (enabled by default)\n    if (options.mutate !== true)\n        points = clone_1.default(points);\n    // collect points coordinates\n    var data = meta_1.coordAll(points);\n    // create seed to avoid skmeans to drift\n    var initialCentroids = data.slice(0, options.numberOfClusters);\n    // create skmeans clusters\n    var skmeansResult = skmeans_1.default(data, options.numberOfClusters, initialCentroids);\n    // store centroids {clusterId: [number, number]}\n    var centroids = {};\n    skmeansResult.centroids.forEach(function (coord, idx) {\n        centroids[idx] = coord;\n    });\n    // add associated cluster number\n    meta_1.featureEach(points, function (point, index) {\n        var clusterId = skmeansResult.idxs[index];\n        point.properties.cluster = clusterId;\n        point.properties.centroid = centroids[clusterId];\n    });\n    return points;\n}\nexports.default = clustersKmeans;\n","'use strict';\n\nvar centroid = require('@turf/centroid');\nvar rhumbBearing = require('@turf/rhumb-bearing');\nvar rhumbDistance = require('@turf/rhumb-distance');\nvar rhumbDestination = require('@turf/rhumb-destination');\nvar clone = require('@turf/clone');\nvar meta = require('@turf/meta');\nvar invariant = require('@turf/invariant');\nvar helpers = require('@turf/helpers');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar centroid__default = /*#__PURE__*/_interopDefaultLegacy(centroid);\nvar rhumbBearing__default = /*#__PURE__*/_interopDefaultLegacy(rhumbBearing);\nvar rhumbDistance__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDistance);\nvar rhumbDestination__default = /*#__PURE__*/_interopDefaultLegacy(rhumbDestination);\nvar clone__default = /*#__PURE__*/_interopDefaultLegacy(clone);\n\n/**\n * Rotates any geojson Feature or Geometry of a specified angle, around its `centroid` or a given `pivot` point.\n *\n * @name transformRotate\n * @param {GeoJSON} geojson object to be rotated\n * @param {number} angle of rotation in decimal degrees, positive clockwise\n * @param {Object} [options={}] Optional parameters\n * @param {Coord} [options.pivot='centroid'] point around which the rotation will be performed\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} the rotated GeoJSON feature\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var options = {pivot: [0, 25]};\n * var rotatedPoly = turf.transformRotate(poly, 10, options);\n *\n * //addToMap\n * var addToMap = [poly, rotatedPoly];\n * rotatedPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */\nfunction transformRotate(geojson, angle, options) {\n  // Optional parameters\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var pivot = options.pivot;\n  var mutate = options.mutate;\n\n  // Input validation\n  if (!geojson) throw new Error(\"geojson is required\");\n  if (angle === undefined || angle === null || isNaN(angle))\n    throw new Error(\"angle is required\");\n\n  // Shortcut no-rotation\n  if (angle === 0) return geojson;\n\n  // Use centroid of GeoJSON if pivot is not provided\n  if (!pivot) pivot = centroid__default['default'](geojson);\n\n  // Clone geojson to avoid side effects\n  if (mutate === false || mutate === undefined) geojson = clone__default['default'](geojson);\n\n  // Rotate each coordinate\n  meta.coordEach(geojson, function (pointCoords) {\n    var initialAngle = rhumbBearing__default['default'](pivot, pointCoords);\n    var finalAngle = initialAngle + angle;\n    var distance = rhumbDistance__default['default'](pivot, pointCoords);\n    var newCoords = invariant.getCoords(rhumbDestination__default['default'](pivot, distance, finalAngle));\n    pointCoords[0] = newCoords[0];\n    pointCoords[1] = newCoords[1];\n  });\n  return geojson;\n}\n\nmodule.exports = transformRotate;\nmodule.exports.default = transformRotate;\n","//index.js\nvar deepEqual = require('deep-equal');\n\nvar Equality = function(opt) {\n  this.precision = opt && opt.precision ? opt.precision : 17;\n  this.direction = opt && opt.direction ? opt.direction : false;\n  this.pseudoNode = opt && opt.pseudoNode ? opt.pseudoNode : false;\n  this.objectComparator = opt && opt.objectComparator ? opt.objectComparator : objectComparator;\n};\n\nEquality.prototype.compare = function(g1,g2) {\n  if (g1.type !== g2.type || !sameLength(g1,g2)) return false;\n\n  switch(g1.type) {\n  case 'Point':\n    return this.compareCoord(g1.coordinates, g2.coordinates);\n    break;\n  case 'LineString':\n    return this.compareLine(g1.coordinates, g2.coordinates,0,false);\n    break;\n  case 'Polygon':\n    return this.comparePolygon(g1,g2);\n    break;\n  case 'Feature':\n    return this.compareFeature(g1, g2);\n  default:\n    if (g1.type.indexOf('Multi') === 0) {\n      var context = this;\n      var g1s = explode(g1);\n      var g2s = explode(g2);\n      return g1s.every(function(g1part) {\n        return this.some(function(g2part) {\n          return context.compare(g1part,g2part);\n        });\n      },g2s);\n    }\n  }\n  return false;\n};\n\nfunction explode(g) {\n  return g.coordinates.map(function(part) {\n    return {\n      type: g.type.replace('Multi', ''),\n      coordinates: part}\n  });\n}\n//compare length of coordinates/array\nfunction sameLength(g1,g2) {\n   return g1.hasOwnProperty('coordinates') ?\n    g1.coordinates.length === g2.coordinates.length\n    : g1.length === g2.length;\n}\n\n// compare the two coordinates [x,y]\nEquality.prototype.compareCoord = function(c1,c2) {\n  if (c1.length !== c2.length) {\n    return false;\n  }\n\n  for (var i=0; i < c1.length; i++) {\n    if (c1[i].toFixed(this.precision) !== c2[i].toFixed(this.precision)) {\n      return false;\n    }\n  }\n  return true;\n};\n\nEquality.prototype.compareLine = function(path1,path2,ind,isPoly) {\n  if (!sameLength(path1,path2)) return false;\n  var p1 = this.pseudoNode ? path1 : this.removePseudo(path1);\n  var p2 = this.pseudoNode ? path2 : this.removePseudo(path2);\n  if (isPoly && !this.compareCoord(p1[0],p2[0])) {\n    // fix start index of both to same point\n    p2 = this.fixStartIndex(p2,p1);\n    if(!p2) return;\n  }\n  // for linestring ind =0 and for polygon ind =1\n  var sameDirection = this.compareCoord(p1[ind],p2[ind]);\n  if (this.direction || sameDirection\n  ) {\n    return this.comparePath(p1, p2);\n  } else {\n    if (this.compareCoord(p1[ind],p2[p2.length - (1+ind)])\n    ) {\n      return this.comparePath(p1.slice().reverse(), p2);\n    }\n    return false;\n  }\n};\nEquality.prototype.fixStartIndex = function(sourcePath,targetPath) {\n  //make sourcePath first point same as of targetPath\n  var correctPath,ind = -1;\n  for (var i=0; i< sourcePath.length; i++) {\n    if(this.compareCoord(sourcePath[i],targetPath[0])) {\n      ind = i;\n      break;\n    }\n  }\n  if (ind >= 0) {\n    correctPath = [].concat(\n      sourcePath.slice(ind,sourcePath.length),\n      sourcePath.slice(1,ind+1));\n  }\n  return correctPath;\n};\nEquality.prototype.comparePath = function (p1,p2) {\n  var cont = this;\n  return p1.every(function(c,i) {\n    return cont.compareCoord(c,this[i]);\n  },p2);\n};\n\nEquality.prototype.comparePolygon = function(g1,g2) {\n  if (this.compareLine(g1.coordinates[0],g2.coordinates[0],1,true)) {\n    var holes1 = g1.coordinates.slice(1,g1.coordinates.length);\n    var holes2 = g2.coordinates.slice(1,g2.coordinates.length);\n    var cont = this;\n    return holes1.every(function(h1) {\n      return this.some(function(h2) {\n        return cont.compareLine(h1,h2,1,true);\n      });\n    },holes2);\n  } else {\n    return false;\n  }\n};\n\nEquality.prototype.compareFeature = function(g1,g2) {\n  if (\n    g1.id !== g2.id ||\n    !this.objectComparator(g1.properties, g2.properties) ||\n    !this.compareBBox(g1,g2)\n  ) {\n    return false;\n  }\n  return this.compare(g1.geometry, g2.geometry);\n};\n\nEquality.prototype.compareBBox = function(g1,g2) {\n  if (\n    (!g1.bbox && !g2.bbox) || \n    (\n      g1.bbox && g2.bbox &&\n      this.compareCoord(g1.bbox, g2.bbox)\n    )\n  )  {\n    return true;\n  }\n  return false;\n};\nEquality.prototype.removePseudo = function(path) {\n  //TODO to be implement\n  return path;\n};\n\nfunction objectComparator(obj1, obj2) {\n  return deepEqual(obj1, obj2, {strict: true});\n}\n\nmodule.exports = Equality;\n","'use strict';\n\nvar bearing = require('@turf/bearing');\nvar destination = require('@turf/destination');\nvar distance = require('@turf/distance');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bearing__default = /*#__PURE__*/_interopDefaultLegacy(bearing);\nvar destination__default = /*#__PURE__*/_interopDefaultLegacy(destination);\nvar distance__default = /*#__PURE__*/_interopDefaultLegacy(distance);\n\n/**\n * Takes two {@link Point|points} and returns a point midway between them.\n * The midpoint is calculated geodesically, meaning the curvature of the earth is taken into account.\n *\n * @name midpoint\n * @param {Coord} point1 first point\n * @param {Coord} point2 second point\n * @returns {Feature<Point>} a point midway between `pt1` and `pt2`\n * @example\n * var point1 = turf.point([144.834823, -37.771257]);\n * var point2 = turf.point([145.14244, -37.830937]);\n *\n * var midpoint = turf.midpoint(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2, midpoint];\n * midpoint.properties['marker-color'] = '#f00';\n */\nfunction midpoint(point1, point2) {\n  var dist = distance__default['default'](point1, point2);\n  var heading = bearing__default['default'](point1, point2);\n  var midpoint = destination__default['default'](point1, dist / 2, heading);\n\n  return midpoint;\n}\n\nmodule.exports = midpoint;\nmodule.exports.default = midpoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Takes a {@link GeoJSON} and measures its length in the specified units, {@link (Multi)Point}'s distance are ignored.\n *\n * @name length\n * @param {Feature<LineString|MultiLineString>} geojson GeoJSON to measure\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units=kilometers] can be degrees, radians, miles, or kilometers\n * @returns {number} length of GeoJSON\n * @example\n * var line = turf.lineString([[115, -32], [131, -22], [143, -25], [150, -34]]);\n * var length = turf.length(line, {units: 'miles'});\n *\n * //addToMap\n * var addToMap = [line];\n * line.properties.distance = length;\n */\nfunction length(geojson, options) {\n    if (options === void 0) { options = {}; }\n    // Calculate distance from 2-vertex line segments\n    return meta_1.segmentReduce(geojson, function (previousValue, segment) {\n        var coords = segment.geometry.coordinates;\n        return previousValue + distance_1.default(coords[0], coords[1], options);\n    }, 0);\n}\nexports.default = length;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n    centimeters: exports.earthRadius * 100,\n    centimetres: exports.earthRadius * 100,\n    degrees: exports.earthRadius / 111325,\n    feet: exports.earthRadius * 3.28084,\n    inches: exports.earthRadius * 39.37,\n    kilometers: exports.earthRadius / 1000,\n    kilometres: exports.earthRadius / 1000,\n    meters: exports.earthRadius,\n    metres: exports.earthRadius,\n    miles: exports.earthRadius / 1609.344,\n    millimeters: exports.earthRadius * 1000,\n    millimetres: exports.earthRadius * 1000,\n    nauticalmiles: exports.earthRadius / 1852,\n    radians: 1,\n    yards: exports.earthRadius * 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n    centimeters: 100,\n    centimetres: 100,\n    degrees: 1 / 111325,\n    feet: 3.28084,\n    inches: 39.37,\n    kilometers: 1 / 1000,\n    kilometres: 1 / 1000,\n    meters: 1,\n    metres: 1,\n    miles: 1 / 1609.344,\n    millimeters: 1000,\n    millimetres: 1000,\n    nauticalmiles: 1 / 1852,\n    radians: 1 / exports.earthRadius,\n    yards: 1.0936133,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n    acres: 0.000247105,\n    centimeters: 10000,\n    centimetres: 10000,\n    feet: 10.763910417,\n    hectares: 0.0001,\n    inches: 1550.003100006,\n    kilometers: 0.000001,\n    kilometres: 0.000001,\n    meters: 1,\n    metres: 1,\n    miles: 3.86e-7,\n    millimeters: 1000000,\n    millimetres: 1000000,\n    yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n *   \"type\": \"Point\",\n *   \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n    if (options === void 0) { options = {}; }\n    var feat = { type: \"Feature\" };\n    if (options.id === 0 || options.id) {\n        feat.id = options.id;\n    }\n    if (options.bbox) {\n        feat.bbox = options.bbox;\n    }\n    feat.properties = properties || {};\n    feat.geometry = geom;\n    return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, _options) {\n    if (_options === void 0) { _options = {}; }\n    switch (type) {\n        case \"Point\":\n            return point(coordinates).geometry;\n        case \"LineString\":\n            return lineString(coordinates).geometry;\n        case \"Polygon\":\n            return polygon(coordinates).geometry;\n        case \"MultiPoint\":\n            return multiPoint(coordinates).geometry;\n        case \"MultiLineString\":\n            return multiLineString(coordinates).geometry;\n        case \"MultiPolygon\":\n            return multiPolygon(coordinates).geometry;\n        default:\n            throw new Error(type + \" is invalid\");\n    }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (!coordinates) {\n        throw new Error(\"coordinates is required\");\n    }\n    if (!Array.isArray(coordinates)) {\n        throw new Error(\"coordinates must be an Array\");\n    }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be at least 2 numbers long\");\n    }\n    if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n        throw new Error(\"coordinates must contain numbers\");\n    }\n    var geom = {\n        type: \"Point\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n *   [-75, 39],\n *   [-80, 45],\n *   [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return point(coords, properties);\n    }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n        var ring = coordinates_1[_i];\n        if (ring.length < 4) {\n            throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n        }\n        for (var j = 0; j < ring[ring.length - 1].length; j++) {\n            // Check if first point of Polygon contains two numbers\n            if (ring[ring.length - 1][j] !== ring[0][j]) {\n                throw new Error(\"First and last Position are not equivalent.\");\n            }\n        }\n    }\n    var geom = {\n        type: \"Polygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n *   [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n *   [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return polygon(coords, properties);\n    }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    if (coordinates.length < 2) {\n        throw new Error(\"coordinates must be an array of two or more positions\");\n    }\n    var geom = {\n        type: \"LineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n *   [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n *   [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    return featureCollection(coordinates.map(function (coords) {\n        return lineString(coords, properties);\n    }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n *   locationA,\n *   locationB,\n *   locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n    if (options === void 0) { options = {}; }\n    var fc = { type: \"FeatureCollection\" };\n    if (options.id) {\n        fc.id = options.id;\n    }\n    if (options.bbox) {\n        fc.bbox = options.bbox;\n    }\n    fc.features = features;\n    return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiLineString\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPoint\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"MultiPolygon\",\n        coordinates: coordinates,\n    };\n    return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n    if (options === void 0) { options = {}; }\n    var geom = {\n        type: \"GeometryCollection\",\n        geometries: geometries,\n    };\n    return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n    if (precision === void 0) { precision = 0; }\n    if (precision && !(precision >= 0)) {\n        throw new Error(\"precision must be a positive number\");\n    }\n    var multiplier = Math.pow(10, precision || 0);\n    return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n    if (units === void 0) { units = \"kilometers\"; }\n    var factor = exports.factors[units];\n    if (!factor) {\n        throw new Error(units + \" units is invalid\");\n    }\n    return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n    return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n    var angle = bearing % 360;\n    if (angle < 0) {\n        angle += 360;\n    }\n    return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n    var degrees = radians % (2 * Math.PI);\n    return (degrees * 180) / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n    var radians = degrees % 360;\n    return (radians * Math.PI) / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(length >= 0)) {\n        throw new Error(\"length must be a positive number\");\n    }\n    return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches, hectares\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted area\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n    if (originalUnit === void 0) { originalUnit = \"meters\"; }\n    if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n    if (!(area >= 0)) {\n        throw new Error(\"area must be a positive number\");\n    }\n    var startFactor = exports.areaFactors[originalUnit];\n    if (!startFactor) {\n        throw new Error(\"invalid original units\");\n    }\n    var finalFactor = exports.areaFactors[finalUnit];\n    if (!finalFactor) {\n        throw new Error(\"invalid final units\");\n    }\n    return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n    return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n    return !!input && input.constructor === Object;\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n    if (!bbox) {\n        throw new Error(\"bbox is required\");\n    }\n    if (!Array.isArray(bbox)) {\n        throw new Error(\"bbox must be an Array\");\n    }\n    if (bbox.length !== 4 && bbox.length !== 6) {\n        throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n    }\n    bbox.forEach(function (num) {\n        if (!isNumber(num)) {\n            throw new Error(\"bbox must only contain numbers\");\n        }\n    });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n    if (!id) {\n        throw new Error(\"id is required\");\n    }\n    if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n        throw new Error(\"id must be a number or a string\");\n    }\n}\nexports.validateId = validateId;\n","/* global django */\n\nconst remainingStr = django.gettext('remaining')\nconst moreThanStr = django.gettext('More than 1 year remaining')\n\nfunction getTimespan (item) {\n  const timeRemaining = item.active_phase[1].split(' ')\n  const daysRemaining = parseInt(timeRemaining[0])\n  if (daysRemaining > 365) {\n    return (moreThanStr)\n  } else {\n    return (\n      remainingStr + ' ' + item.active_phase[1]\n    )\n  }\n}\n\nexport default getTimespan\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar bearing_1 = __importDefault(require(\"@turf/bearing\"));\nvar destination_1 = __importDefault(require(\"@turf/destination\"));\nvar distance_1 = __importDefault(require(\"@turf/distance\"));\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Takes a {@link LineString} and returns a {@link Point} at a specified distance along the line.\n *\n * @name along\n * @param {Feature<LineString>} line input line\n * @param {number} distance distance along the line\n * @param {Object} [options] Optional parameters\n * @param {string} [options.units=\"kilometers\"] can be degrees, radians, miles, or kilometers\n * @returns {Feature<Point>} Point `distance` `units` along the line\n * @example\n * var line = turf.lineString([[-83, 30], [-84, 36], [-78, 41]]);\n * var options = {units: 'miles'};\n *\n * var along = turf.along(line, 200, options);\n *\n * //addToMap\n * var addToMap = [along, line]\n */\nfunction along(line, distance, options) {\n    if (options === void 0) { options = {}; }\n    // Get Coords\n    var geom = invariant_1.getGeom(line);\n    var coords = geom.coordinates;\n    var travelled = 0;\n    for (var i = 0; i < coords.length; i++) {\n        if (distance >= travelled && i === coords.length - 1) {\n            break;\n        }\n        else if (travelled >= distance) {\n            var overshot = distance - travelled;\n            if (!overshot) {\n                return helpers_1.point(coords[i]);\n            }\n            else {\n                var direction = bearing_1.default(coords[i], coords[i - 1]) - 180;\n                var interpolated = destination_1.default(coords[i], overshot, direction, options);\n                return interpolated;\n            }\n        }\n        else {\n            travelled += distance_1.default(coords[i], coords[i + 1], options);\n        }\n    }\n    return helpers_1.point(coords[coords.length - 1]);\n}\nexports.default = along;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar meta_1 = require(\"@turf/meta\");\nvar concaveman_1 = __importDefault(require(\"concaveman\"));\n/**\n * Takes a {@link Feature} or a {@link FeatureCollection} and returns a convex hull {@link Polygon}.\n *\n * Internally this uses\n * the [convex-hull](https://github.com/mikolalysenko/convex-hull) module that implements a\n * [monotone chain hull](http://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain).\n *\n * @name convex\n * @param {GeoJSON} geojson input Feature or FeatureCollection\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.concavity=Infinity] 1 - thin shape. Infinity - convex hull.\n * @param {Object} [options.properties={}] Translate Properties to Feature\n * @returns {Feature<Polygon>} a convex hull\n * @example\n * var points = turf.featureCollection([\n *   turf.point([10.195312, 43.755225]),\n *   turf.point([10.404052, 43.8424511]),\n *   turf.point([10.579833, 43.659924]),\n *   turf.point([10.360107, 43.516688]),\n *   turf.point([10.14038, 43.588348]),\n *   turf.point([10.195312, 43.755225])\n * ]);\n *\n * var hull = turf.convex(points);\n *\n * //addToMap\n * var addToMap = [points, hull]\n */\nfunction convex(geojson, options) {\n    if (options === void 0) { options = {}; }\n    // Default parameters\n    options.concavity = options.concavity || Infinity;\n    // Container\n    var points = [];\n    // Convert all points to flat 2D coordinate Array\n    meta_1.coordEach(geojson, function (coord) {\n        points.push([coord[0], coord[1]]);\n    });\n    if (!points.length) {\n        return null;\n    }\n    var convexHull = concaveman_1.default(points, options.concavity);\n    // Convex hull should have at least 3 different vertices in order to create a valid polygon\n    if (convexHull.length > 3) {\n        return helpers_1.polygon([convexHull]);\n    }\n    return null;\n}\nexports.default = convex;\n","'use strict';\n\nvar helpers = require('@turf/helpers');\nvar invariant = require('@turf/invariant');\nvar d3voronoi = require('d3-voronoi');\n\n/**\n * @private\n * @param {Array<Array<number>>} coords representing a polygon\n * @returns {Feature<Polygon>} polygon\n */\nfunction coordsToPolygon(coords) {\n  coords = coords.slice();\n  coords.push(coords[0]);\n  return helpers.polygon([coords]);\n}\n\n/**\n * Takes a FeatureCollection of points, and a bounding box, and returns a FeatureCollection\n * of Voronoi polygons.\n *\n * The Voronoi algorithim used comes from the d3-voronoi package.\n *\n * @name voronoi\n * @param {FeatureCollection<Point>} points to find the Voronoi polygons around.\n * @param {Object} [options={}] Optional parameters\n * @param {number[]} [options.bbox=[-180, -85, 180, -85]] clipping rectangle, in [minX, minY, maxX, MaxY] order.\n * @returns {FeatureCollection<Polygon>} a set of polygons, one per input point.\n * @example\n * var options = {\n *   bbox: [-70, 40, -60, 60]\n * };\n * var points = turf.randomPoint(100, options);\n * var voronoiPolygons = turf.voronoi(points, options);\n *\n * //addToMap\n * var addToMap = [voronoiPolygons, points];\n */\nfunction voronoi(points, options) {\n  // Optional params\n  options = options || {};\n  if (!helpers.isObject(options)) throw new Error(\"options is invalid\");\n  var bbox = options.bbox || [-180, -85, 180, 85];\n\n  // Input Validation\n  if (!points) throw new Error(\"points is required\");\n  if (!Array.isArray(bbox)) throw new Error(\"bbox is invalid\");\n  invariant.collectionOf(points, \"Point\", \"points\");\n\n  // Main\n  return helpers.featureCollection(\n    d3voronoi.voronoi()\n      .x(function (feature) {\n        return feature.geometry.coordinates[0];\n      })\n      .y(function (feature) {\n        return feature.geometry.coordinates[1];\n      })\n      .extent([\n        [bbox[0], bbox[1]],\n        [bbox[2], bbox[3]],\n      ])\n      .polygons(points.features)\n      .map(coordsToPolygon)\n  );\n}\n\nmodule.exports = voronoi;\nmodule.exports.default = voronoi;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// http://en.wikipedia.org/wiki/Delaunay_triangulation\n// https://github.com/ironwallaby/delaunay\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Takes a set of {@link Point|points} and creates a\n * [Triangulated Irregular Network](http://en.wikipedia.org/wiki/Triangulated_irregular_network),\n * or a TIN for short, returned as a collection of Polygons. These are often used\n * for developing elevation contour maps or stepped heat visualizations.\n *\n * If an optional z-value property is provided then it is added as properties called `a`, `b`,\n * and `c` representing its value at each of the points that represent the corners of the\n * triangle.\n *\n * @name tin\n * @param {FeatureCollection<Point>} points input points\n * @param {String} [z] name of the property from which to pull z values\n * This is optional: if not given, then there will be no extra data added to the derived triangles.\n * @returns {FeatureCollection<Polygon>} TIN output\n * @example\n * // generate some random point data\n * var points = turf.randomPoint(30, {bbox: [50, 30, 70, 50]});\n *\n * // add a random property to each point between 0 and 9\n * for (var i = 0; i < points.features.length; i++) {\n *   points.features[i].properties.z = ~~(Math.random() * 9);\n * }\n * var tin = turf.tin(points, 'z');\n *\n * //addToMap\n * var addToMap = [tin, points]\n * for (var i = 0; i < tin.features.length; i++) {\n *   var properties  = tin.features[i].properties;\n *   properties.fill = '#' + properties.a + properties.b + properties.c;\n * }\n */\nfunction tin(points, z) {\n    // break down points\n    var isPointZ = false;\n    return helpers_1.featureCollection(triangulate(points.features.map(function (p) {\n        var point = {\n            x: p.geometry.coordinates[0],\n            y: p.geometry.coordinates[1],\n        };\n        if (z) {\n            point.z = p.properties[z];\n        }\n        else if (p.geometry.coordinates.length === 3) {\n            isPointZ = true;\n            point.z = p.geometry.coordinates[2];\n        }\n        return point;\n    })).map(function (triangle) {\n        var a = [triangle.a.x, triangle.a.y];\n        var b = [triangle.b.x, triangle.b.y];\n        var c = [triangle.c.x, triangle.c.y];\n        var properties = {};\n        // Add z coordinates to triangle points if user passed\n        // them in that way otherwise add it as a property.\n        if (isPointZ) {\n            a.push(triangle.a.z);\n            b.push(triangle.b.z);\n            c.push(triangle.c.z);\n        }\n        else {\n            properties = {\n                a: triangle.a.z,\n                b: triangle.b.z,\n                c: triangle.c.z,\n            };\n        }\n        return helpers_1.polygon([[a, b, c, a]], properties);\n    }));\n}\nexports.default = tin;\nvar Triangle = /** @class */ (function () {\n    function Triangle(a, b, c) {\n        this.a = a;\n        this.b = b;\n        this.c = c;\n        var A = b.x - a.x;\n        var B = b.y - a.y;\n        var C = c.x - a.x;\n        var D = c.y - a.y;\n        var E = A * (a.x + b.x) + B * (a.y + b.y);\n        var F = C * (a.x + c.x) + D * (a.y + c.y);\n        var G = 2 * (A * (c.y - b.y) - B * (c.x - b.x));\n        var dx;\n        var dy;\n        // If the points of the triangle are collinear, then just find the\n        // extremes and use the midpoint as the center of the circumcircle.\n        this.x = (D * E - B * F) / G;\n        this.y = (A * F - C * E) / G;\n        dx = this.x - a.x;\n        dy = this.y - a.y;\n        this.r = dx * dx + dy * dy;\n    }\n    return Triangle;\n}());\nfunction byX(a, b) {\n    return b.x - a.x;\n}\nfunction dedup(edges) {\n    var j = edges.length;\n    var a;\n    var b;\n    var i;\n    var m;\n    var n;\n    outer: while (j) {\n        b = edges[--j];\n        a = edges[--j];\n        i = j;\n        while (i) {\n            n = edges[--i];\n            m = edges[--i];\n            if ((a === m && b === n) || (a === n && b === m)) {\n                edges.splice(j, 2);\n                edges.splice(i, 2);\n                j -= 2;\n                continue outer;\n            }\n        }\n    }\n}\nfunction triangulate(vertices) {\n    // Bail if there aren't enough vertices to form any triangles.\n    if (vertices.length < 3) {\n        return [];\n    }\n    // Ensure the vertex array is in order of descending X coordinate\n    // (which is needed to ensure a subquadratic runtime), and then find\n    // the bounding box around the points.\n    vertices.sort(byX);\n    var i = vertices.length - 1;\n    var xmin = vertices[i].x;\n    var xmax = vertices[0].x;\n    var ymin = vertices[i].y;\n    var ymax = ymin;\n    var epsilon = 1e-12;\n    var a;\n    var b;\n    var c;\n    var A;\n    var B;\n    var G;\n    while (i--) {\n        if (vertices[i].y < ymin) {\n            ymin = vertices[i].y;\n        }\n        if (vertices[i].y > ymax) {\n            ymax = vertices[i].y;\n        }\n    }\n    // Find a supertriangle, which is a triangle that surrounds all the\n    // vertices. This is used like something of a sentinel value to remove\n    // cases in the main algorithm, and is removed before we return any\n    // results.\n    // Once found, put it in the \"open\" list. (The \"open\" list is for\n    // triangles who may still need to be considered; the \"closed\" list is\n    // for triangles which do not.)\n    var dx = xmax - xmin;\n    var dy = ymax - ymin;\n    var dmax = dx > dy ? dx : dy;\n    var xmid = (xmax + xmin) * 0.5;\n    var ymid = (ymax + ymin) * 0.5;\n    var open = [\n        new Triangle({\n            __sentinel: true,\n            x: xmid - 20 * dmax,\n            y: ymid - dmax,\n        }, {\n            __sentinel: true,\n            x: xmid,\n            y: ymid + 20 * dmax,\n        }, {\n            __sentinel: true,\n            x: xmid + 20 * dmax,\n            y: ymid - dmax,\n        }),\n    ];\n    var closed = [];\n    var edges = [];\n    var j;\n    // Incrementally add each vertex to the mesh.\n    i = vertices.length;\n    while (i--) {\n        // For each open triangle, check to see if the current point is\n        // inside it's circumcircle. If it is, remove the triangle and add\n        // it's edges to an edge list.\n        edges.length = 0;\n        j = open.length;\n        while (j--) {\n            // If this point is to the right of this triangle's circumcircle,\n            // then this triangle should never get checked again. Remove it\n            // from the open list, add it to the closed list, and skip.\n            dx = vertices[i].x - open[j].x;\n            if (dx > 0 && dx * dx > open[j].r) {\n                closed.push(open[j]);\n                open.splice(j, 1);\n                continue;\n            }\n            // If not, skip this triangle.\n            dy = vertices[i].y - open[j].y;\n            if (dx * dx + dy * dy > open[j].r) {\n                continue;\n            }\n            // Remove the triangle and add it's edges to the edge list.\n            edges.push(open[j].a, open[j].b, open[j].b, open[j].c, open[j].c, open[j].a);\n            open.splice(j, 1);\n        }\n        // Remove any doubled edges.\n        dedup(edges);\n        // Add a new triangle for each edge.\n        j = edges.length;\n        while (j) {\n            b = edges[--j];\n            a = edges[--j];\n            c = vertices[i];\n            // Avoid adding colinear triangles (which have error-prone\n            // circumcircles)\n            A = b.x - a.x;\n            B = b.y - a.y;\n            G = 2 * (A * (c.y - b.y) - B * (c.x - b.x));\n            if (Math.abs(G) > epsilon) {\n                open.push(new Triangle(a, b, c));\n            }\n        }\n    }\n    // Copy any remaining open triangles to the closed list, and then\n    // remove any triangles that share a vertex with the supertriangle.\n    Array.prototype.push.apply(closed, open);\n    i = closed.length;\n    while (i--) {\n        if (closed[i].a.__sentinel ||\n            closed[i].b.__sentinel ||\n            closed[i].c.__sentinel) {\n            closed.splice(i, 1);\n        }\n    }\n    return closed;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://en.wikipedia.org/wiki/Rhumb_line\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Takes two {@link Point|points} and finds the bearing angle between them along a Rhumb line\n * i.e. the angle measured in degrees start the north line (0 degrees)\n *\n * @name rhumbBearing\n * @param {Coord} start starting Point\n * @param {Coord} end ending Point\n * @param {Object} [options] Optional parameters\n * @param {boolean} [options.final=false] calculates the final bearing if true\n * @returns {number} bearing from north in decimal degrees, between -180 and 180 degrees (positive clockwise)\n * @example\n * var point1 = turf.point([-75.343, 39.984], {\"marker-color\": \"#F00\"});\n * var point2 = turf.point([-75.534, 39.123], {\"marker-color\": \"#00F\"});\n *\n * var bearing = turf.rhumbBearing(point1, point2);\n *\n * //addToMap\n * var addToMap = [point1, point2];\n * point1.properties.bearing = bearing;\n * point2.properties.bearing = bearing;\n */\nfunction rhumbBearing(start, end, options) {\n    if (options === void 0) { options = {}; }\n    var bear360;\n    if (options.final) {\n        bear360 = calculateRhumbBearing(invariant_1.getCoord(end), invariant_1.getCoord(start));\n    }\n    else {\n        bear360 = calculateRhumbBearing(invariant_1.getCoord(start), invariant_1.getCoord(end));\n    }\n    var bear180 = bear360 > 180 ? -(360 - bear360) : bear360;\n    return bear180;\n}\n/**\n * Returns the bearing from ‘this’ point to destination point along a rhumb line.\n * Adapted from Geodesy: https://github.com/chrisveness/geodesy/blob/master/latlon-spherical.js\n *\n * @private\n * @param   {Array<number>} from - origin point.\n * @param   {Array<number>} to - destination point.\n * @returns {number} Bearing in degrees from north.\n * @example\n * var p1 = new LatLon(51.127, 1.338);\n * var p2 = new LatLon(50.964, 1.853);\n * var d = p1.rhumbBearingTo(p2); // 116.7 m\n */\nfunction calculateRhumbBearing(from, to) {\n    // φ => phi\n    // Δλ => deltaLambda\n    // Δψ => deltaPsi\n    // θ => theta\n    var phi1 = helpers_1.degreesToRadians(from[1]);\n    var phi2 = helpers_1.degreesToRadians(to[1]);\n    var deltaLambda = helpers_1.degreesToRadians(to[0] - from[0]);\n    // if deltaLambdaon over 180° take shorter rhumb line across the anti-meridian:\n    if (deltaLambda > Math.PI) {\n        deltaLambda -= 2 * Math.PI;\n    }\n    if (deltaLambda < -Math.PI) {\n        deltaLambda += 2 * Math.PI;\n    }\n    var deltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n    var theta = Math.atan2(deltaLambda, deltaPsi);\n    return (helpers_1.radiansToDegrees(theta) + 360) % 360;\n}\nexports.default = rhumbBearing;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Returns a random position within a {@link bounding box}.\n *\n * @name randomPosition\n * @param {Array<number>} [bbox=[-180, -90, 180, 90]] a bounding box inside of which positions are placed.\n * @returns {Array<number>} Position [longitude, latitude]\n * @example\n * var position = turf.randomPosition([-180, -90, 180, 90])\n * // => position\n */\nfunction randomPosition(bbox) {\n    if (Array.isArray(bbox)) {\n        return coordInBBox(bbox);\n    }\n    if (bbox && bbox.bbox) {\n        return coordInBBox(bbox.bbox);\n    }\n    return [lon(), lat()];\n}\nexports.randomPosition = randomPosition;\n/**\n * Returns a random {@link point}.\n *\n * @name randomPoint\n * @param {number} [count=1] how many geometries will be generated\n * @param {Object} [options={}] Optional parameters\n * @param {Array<number>} [options.bbox=[-180, -90, 180, 90]] a bounding box inside of which geometries are placed.\n * @returns {FeatureCollection<Point>} GeoJSON FeatureCollection of points\n * @example\n * var points = turf.randomPoint(25, {bbox: [-180, -90, 180, 90]})\n * // => points\n */\nfunction randomPoint(count, options) {\n    if (options === void 0) { options = {}; }\n    if (count === undefined || count === null) {\n        count = 1;\n    }\n    var features = [];\n    for (var i = 0; i < count; i++) {\n        features.push(helpers_1.point(randomPosition(options.bbox)));\n    }\n    return helpers_1.featureCollection(features);\n}\nexports.randomPoint = randomPoint;\n/**\n * Returns a random {@link polygon}.\n *\n * @name randomPolygon\n * @param {number} [count=1] how many geometries will be generated\n * @param {Object} [options={}] Optional parameters\n * @param {Array<number>} [options.bbox=[-180, -90, 180, 90]] a bounding box inside of which geometries are placed.\n * @param {number} [options.num_vertices=10] is how many coordinates each LineString will contain.\n * @param {number} [options.max_radial_length=10] is the maximum number of decimal degrees latitude or longitude that a\n * vertex can reach out of the center of the Polygon.\n * @returns {FeatureCollection<Polygon>} GeoJSON FeatureCollection of polygons\n * @example\n * var polygons = turf.randomPolygon(25, {bbox: [-180, -90, 180, 90]})\n * // => polygons\n */\nfunction randomPolygon(count, options) {\n    if (options === void 0) { options = {}; }\n    // Default param\n    if (count === undefined || count === null) {\n        count = 1;\n    }\n    if (!helpers_1.isNumber(options.num_vertices) || options.num_vertices === undefined) {\n        options.num_vertices = 10;\n    }\n    if (!helpers_1.isNumber(options.max_radial_length) ||\n        options.max_radial_length === undefined) {\n        options.max_radial_length = 10;\n    }\n    var features = [];\n    var _loop_1 = function (i) {\n        var vertices = [];\n        var circleOffsets = __spreadArrays(Array(options.num_vertices + 1)).map(Math.random);\n        // Sum Offsets\n        circleOffsets.forEach(function (cur, index, arr) {\n            arr[index] = index > 0 ? cur + arr[index - 1] : cur;\n        });\n        // scaleOffsets\n        circleOffsets.forEach(function (cur) {\n            cur = (cur * 2 * Math.PI) / circleOffsets[circleOffsets.length - 1];\n            var radialScaler = Math.random();\n            vertices.push([\n                radialScaler * (options.max_radial_length || 10) * Math.sin(cur),\n                radialScaler * (options.max_radial_length || 10) * Math.cos(cur),\n            ]);\n        });\n        vertices[vertices.length - 1] = vertices[0]; // close the ring\n        // center the polygon around something\n        vertices = vertices.map(vertexToCoordinate(randomPosition(options.bbox)));\n        features.push(helpers_1.polygon([vertices]));\n    };\n    for (var i = 0; i < count; i++) {\n        _loop_1(i);\n    }\n    return helpers_1.featureCollection(features);\n}\nexports.randomPolygon = randomPolygon;\n/**\n * Returns a random {@link linestring}.\n *\n * @name randomLineString\n * @param {number} [count=1] how many geometries will be generated\n * @param {Object} [options={}] Optional parameters\n * @param {Array<number>} [options.bbox=[-180, -90, 180, 90]] a bounding box inside of which geometries are placed.\n * @param {number} [options.num_vertices=10] is how many coordinates each LineString will contain.\n * @param {number} [options.max_length=0.0001] is the maximum number of decimal degrees that a\n * vertex can be from its predecessor\n * @param {number} [options.max_rotation=Math.PI / 8] is the maximum number of radians that a\n * line segment can turn from the previous segment.\n * @returns {FeatureCollection<LineString>} GeoJSON FeatureCollection of linestrings\n * @example\n * var lineStrings = turf.randomLineString(25, {bbox: [-180, -90, 180, 90]})\n * // => lineStrings\n */\nfunction randomLineString(count, options) {\n    if (options === void 0) { options = {}; }\n    // Optional parameters\n    options = options || {};\n    if (!helpers_1.isObject(options)) {\n        throw new Error(\"options is invalid\");\n    }\n    var bbox = options.bbox;\n    var num_vertices = options.num_vertices;\n    var max_length = options.max_length;\n    var max_rotation = options.max_rotation;\n    if (count === undefined || count === null) {\n        count = 1;\n    }\n    // Default parameters\n    if (!helpers_1.isNumber(num_vertices) ||\n        num_vertices === undefined ||\n        num_vertices < 2) {\n        num_vertices = 10;\n    }\n    if (!helpers_1.isNumber(max_length) || max_length === undefined) {\n        max_length = 0.0001;\n    }\n    if (!helpers_1.isNumber(max_rotation) || max_rotation === undefined) {\n        max_rotation = Math.PI / 8;\n    }\n    var features = [];\n    for (var i = 0; i < count; i++) {\n        var startingPoint = randomPosition(bbox);\n        var vertices = [startingPoint];\n        for (var j = 0; j < num_vertices - 1; j++) {\n            var priorAngle = j === 0\n                ? Math.random() * 2 * Math.PI\n                : Math.tan((vertices[j][1] - vertices[j - 1][1]) /\n                    (vertices[j][0] - vertices[j - 1][0]));\n            var angle = priorAngle + (Math.random() - 0.5) * max_rotation * 2;\n            var distance = Math.random() * max_length;\n            vertices.push([\n                vertices[j][0] + distance * Math.cos(angle),\n                vertices[j][1] + distance * Math.sin(angle),\n            ]);\n        }\n        features.push(helpers_1.lineString(vertices));\n    }\n    return helpers_1.featureCollection(features);\n}\nexports.randomLineString = randomLineString;\nfunction vertexToCoordinate(hub) {\n    return function (cur) {\n        return [cur[0] + hub[0], cur[1] + hub[1]];\n    };\n}\nfunction rnd() {\n    return Math.random() - 0.5;\n}\nfunction lon() {\n    return rnd() * 360;\n}\nfunction lat() {\n    return rnd() * 180;\n}\nfunction coordInBBox(bbox) {\n    return [\n        Math.random() * (bbox[2] - bbox[0]) + bbox[0],\n        Math.random() * (bbox[3] - bbox[1]) + bbox[1],\n    ];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"./util\");\n/**\n * Node\n */\nvar Node = /** @class */ (function () {\n    function Node(coordinates) {\n        this.id = Node.buildId(coordinates);\n        this.coordinates = coordinates; //< {Number[]}\n        this.innerEdges = []; //< {Edge[]}\n        // We wil store to (out) edges in an CCW order as geos::planargraph::DirectedEdgeStar does\n        this.outerEdges = []; //< {Edge[]}\n        this.outerEdgesSorted = false; //< {Boolean} flag that stores if the outer Edges had been sorted\n    }\n    Node.buildId = function (coordinates) {\n        return coordinates.join(\",\");\n    };\n    Node.prototype.removeInnerEdge = function (edge) {\n        this.innerEdges = this.innerEdges.filter(function (e) { return e.from.id !== edge.from.id; });\n    };\n    Node.prototype.removeOuterEdge = function (edge) {\n        this.outerEdges = this.outerEdges.filter(function (e) { return e.to.id !== edge.to.id; });\n    };\n    /**\n     * Outer edges are stored CCW order.\n     *\n     * @memberof Node\n     * @param {Edge} edge - Edge to add as an outerEdge.\n     */\n    Node.prototype.addOuterEdge = function (edge) {\n        this.outerEdges.push(edge);\n        this.outerEdgesSorted = false;\n    };\n    /**\n     * Sorts outer edges in CCW way.\n     *\n     * @memberof Node\n     * @private\n     */\n    Node.prototype.sortOuterEdges = function () {\n        var _this = this;\n        if (!this.outerEdgesSorted) {\n            //this.outerEdges.sort((a, b) => a.compareTo(b));\n            // Using this comparator in order to be deterministic\n            this.outerEdges.sort(function (a, b) {\n                var aNode = a.to, bNode = b.to;\n                if (aNode.coordinates[0] - _this.coordinates[0] >= 0 &&\n                    bNode.coordinates[0] - _this.coordinates[0] < 0)\n                    return 1;\n                if (aNode.coordinates[0] - _this.coordinates[0] < 0 &&\n                    bNode.coordinates[0] - _this.coordinates[0] >= 0)\n                    return -1;\n                if (aNode.coordinates[0] - _this.coordinates[0] === 0 &&\n                    bNode.coordinates[0] - _this.coordinates[0] === 0) {\n                    if (aNode.coordinates[1] - _this.coordinates[1] >= 0 ||\n                        bNode.coordinates[1] - _this.coordinates[1] >= 0)\n                        return aNode.coordinates[1] - bNode.coordinates[1];\n                    return bNode.coordinates[1] - aNode.coordinates[1];\n                }\n                var det = util_1.orientationIndex(_this.coordinates, aNode.coordinates, bNode.coordinates);\n                if (det < 0)\n                    return 1;\n                if (det > 0)\n                    return -1;\n                var d1 = Math.pow(aNode.coordinates[0] - _this.coordinates[0], 2) +\n                    Math.pow(aNode.coordinates[1] - _this.coordinates[1], 2), d2 = Math.pow(bNode.coordinates[0] - _this.coordinates[0], 2) +\n                    Math.pow(bNode.coordinates[1] - _this.coordinates[1], 2);\n                return d1 - d2;\n            });\n            this.outerEdgesSorted = true;\n        }\n    };\n    /**\n     * Retrieves outer edges.\n     *\n     * They are sorted if they aren't in the CCW order.\n     *\n     * @memberof Node\n     * @returns {Edge[]} - List of outer edges sorted in a CCW order.\n     */\n    Node.prototype.getOuterEdges = function () {\n        this.sortOuterEdges();\n        return this.outerEdges;\n    };\n    Node.prototype.getOuterEdge = function (i) {\n        this.sortOuterEdges();\n        return this.outerEdges[i];\n    };\n    Node.prototype.addInnerEdge = function (edge) {\n        this.innerEdges.push(edge);\n    };\n    return Node;\n}());\nexports.default = Node;\n","\"use strict\";\n\nmodule.exports = {\n\t/**\n  * Euclidean distance\n  */\n\teudist: function eudist(v1, v2, sqrt) {\n\t\tvar len = v1.length;\n\t\tvar sum = 0;\n\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar d = (v1[i] || 0) - (v2[i] || 0);\n\t\t\tsum += d * d;\n\t\t}\n\t\t// Square root not really needed\n\t\treturn sqrt ? Math.sqrt(sum) : sum;\n\t},\n\tmandist: function mandist(v1, v2, sqrt) {\n\t\tvar len = v1.length;\n\t\tvar sum = 0;\n\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tsum += Math.abs((v1[i] || 0) - (v2[i] || 0));\n\t\t}\n\n\t\t// Square root not really needed\n\t\treturn sqrt ? Math.sqrt(sum) : sum;\n\t},\n\n\n\t/**\n  * Unidimensional distance\n  */\n\tdist: function dist(v1, v2, sqrt) {\n\t\tvar d = Math.abs(v1 - v2);\n\t\treturn sqrt ? d : d * d;\n\t}\n};\n//# sourceMappingURL=distance.js.map\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar helpers_1 = require(\"@turf/helpers\");\nvar invariant_1 = require(\"@turf/invariant\");\nvar meta_1 = require(\"@turf/meta\");\n/**\n * Creates a {@link FeatureCollection} of 2-vertex {@link LineString} segments from a\n * {@link LineString|(Multi)LineString} or {@link Polygon|(Multi)Polygon}.\n *\n * @name lineSegment\n * @param {GeoJSON} geojson GeoJSON Polygon or LineString\n * @returns {FeatureCollection<LineString>} 2-vertex line segments\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n * var segments = turf.lineSegment(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, segments]\n */\nfunction lineSegment(geojson) {\n    if (!geojson) {\n        throw new Error(\"geojson is required\");\n    }\n    var results = [];\n    meta_1.flattenEach(geojson, function (feature) {\n        lineSegmentFeature(feature, results);\n    });\n    return helpers_1.featureCollection(results);\n}\n/**\n * Line Segment\n *\n * @private\n * @param {Feature<LineString|Polygon>} geojson Line or polygon feature\n * @param {Array} results push to results\n * @returns {void}\n */\nfunction lineSegmentFeature(geojson, results) {\n    var coords = [];\n    var geometry = geojson.geometry;\n    if (geometry !== null) {\n        switch (geometry.type) {\n            case \"Polygon\":\n                coords = invariant_1.getCoords(geometry);\n                break;\n            case \"LineString\":\n                coords = [invariant_1.getCoords(geometry)];\n        }\n        coords.forEach(function (coord) {\n            var segments = createSegments(coord, geojson.properties);\n            segments.forEach(function (segment) {\n                segment.id = results.length;\n                results.push(segment);\n            });\n        });\n    }\n}\n/**\n * Create Segments from LineString coordinates\n *\n * @private\n * @param {Array<Array<number>>} coords LineString coordinates\n * @param {*} properties GeoJSON properties\n * @returns {Array<Feature<LineString>>} line segments\n */\nfunction createSegments(coords, properties) {\n    var segments = [];\n    coords.reduce(function (previousCoords, currentCoords) {\n        var segment = helpers_1.lineString([previousCoords, currentCoords], properties);\n        segment.bbox = bbox(previousCoords, currentCoords);\n        segments.push(segment);\n        return currentCoords;\n    });\n    return segments;\n}\n/**\n * Create BBox between two coordinates (faster than @turf/bbox)\n *\n * @private\n * @param {Array<number>} coords1 Point coordinate\n * @param {Array<number>} coords2 Point coordinate\n * @returns {BBox} [west, south, east, north]\n */\nfunction bbox(coords1, coords2) {\n    var x1 = coords1[0];\n    var y1 = coords1[1];\n    var x2 = coords2[0];\n    var y2 = coords2[1];\n    var west = x1 < x2 ? x1 : x2;\n    var south = y1 < y2 ? y1 : y2;\n    var east = x1 > x2 ? x1 : x2;\n    var north = y1 > y2 ? y1 : y2;\n    return [west, south, east, north];\n}\nexports.default = lineSegment;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar geojson_equality_1 = __importDefault(require(\"geojson-equality\"));\nvar clean_coords_1 = __importDefault(require(\"@turf/clean-coords\"));\nvar invariant_1 = require(\"@turf/invariant\");\n/**\n * Determine whether two geometries of the same type have identical X,Y coordinate values.\n * See http://edndoc.esri.com/arcsde/9.0/general_topics/understand_spatial_relations.htm\n *\n * @name booleanEqual\n * @param {Geometry|Feature} feature1 GeoJSON input\n * @param {Geometry|Feature} feature2 GeoJSON input\n * @returns {boolean} true if the objects are equal, false otherwise\n * @example\n * var pt1 = turf.point([0, 0]);\n * var pt2 = turf.point([0, 0]);\n * var pt3 = turf.point([1, 1]);\n *\n * turf.booleanEqual(pt1, pt2);\n * //= true\n * turf.booleanEqual(pt2, pt3);\n * //= false\n */\nfunction booleanEqual(feature1, feature2) {\n    var type1 = invariant_1.getGeom(feature1).type;\n    var type2 = invariant_1.getGeom(feature2).type;\n    if (type1 !== type2)\n        return false;\n    var equality = new geojson_equality_1.default({ precision: 6 });\n    return equality.compare(clean_coords_1.default(feature1), clean_coords_1.default(feature2));\n}\nexports.default = booleanEqual;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar line_intersect_1 = __importDefault(require(\"@turf/line-intersect\"));\nvar polygon_to_line_1 = require(\"@turf/polygon-to-line\");\nvar boolean_point_in_polygon_1 = __importDefault(require(\"@turf/boolean-point-in-polygon\"));\nvar invariant_1 = require(\"@turf/invariant\");\nvar helpers_1 = require(\"@turf/helpers\");\n/**\n * Boolean-Crosses returns True if the intersection results in a geometry whose dimension is one less than\n * the maximum dimension of the two source geometries and the intersection set is interior to\n * both source geometries.\n *\n * Boolean-Crosses returns t (TRUE) for only multipoint/polygon, multipoint/linestring, linestring/linestring, linestring/polygon, and linestring/multipolygon comparisons.\n *\n * @name booleanCrosses\n * @param {Geometry|Feature<any>} feature1 GeoJSON Feature or Geometry\n * @param {Geometry|Feature<any>} feature2 GeoJSON Feature or Geometry\n * @returns {boolean} true/false\n * @example\n * var line1 = turf.lineString([[-2, 2], [4, 2]]);\n * var line2 = turf.lineString([[1, 1], [1, 2], [1, 3], [1, 4]]);\n *\n * var cross = turf.booleanCrosses(line1, line2);\n * //=true\n */\nfunction booleanCrosses(feature1, feature2) {\n    var geom1 = invariant_1.getGeom(feature1);\n    var geom2 = invariant_1.getGeom(feature2);\n    var type1 = geom1.type;\n    var type2 = geom2.type;\n    switch (type1) {\n        case \"MultiPoint\":\n            switch (type2) {\n                case \"LineString\":\n                    return doMultiPointAndLineStringCross(geom1, geom2);\n                case \"Polygon\":\n                    return doesMultiPointCrossPoly(geom1, geom2);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        case \"LineString\":\n            switch (type2) {\n                case \"MultiPoint\": // An inverse operation\n                    return doMultiPointAndLineStringCross(geom2, geom1);\n                case \"LineString\":\n                    return doLineStringsCross(geom1, geom2);\n                case \"Polygon\":\n                    return doLineStringAndPolygonCross(geom1, geom2);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        case \"Polygon\":\n            switch (type2) {\n                case \"MultiPoint\": // An inverse operation\n                    return doesMultiPointCrossPoly(geom2, geom1);\n                case \"LineString\": // An inverse operation\n                    return doLineStringAndPolygonCross(geom2, geom1);\n                default:\n                    throw new Error(\"feature2 \" + type2 + \" geometry not supported\");\n            }\n        default:\n            throw new Error(\"feature1 \" + type1 + \" geometry not supported\");\n    }\n}\nfunction doMultiPointAndLineStringCross(multiPoint, lineString) {\n    var foundIntPoint = false;\n    var foundExtPoint = false;\n    var pointLength = multiPoint.coordinates.length;\n    var i = 0;\n    while (i < pointLength && !foundIntPoint && !foundExtPoint) {\n        for (var i2 = 0; i2 < lineString.coordinates.length - 1; i2++) {\n            var incEndVertices = true;\n            if (i2 === 0 || i2 === lineString.coordinates.length - 2) {\n                incEndVertices = false;\n            }\n            if (isPointOnLineSegment(lineString.coordinates[i2], lineString.coordinates[i2 + 1], multiPoint.coordinates[i], incEndVertices)) {\n                foundIntPoint = true;\n            }\n            else {\n                foundExtPoint = true;\n            }\n        }\n        i++;\n    }\n    return foundIntPoint && foundExtPoint;\n}\nfunction doLineStringsCross(lineString1, lineString2) {\n    var doLinesIntersect = line_intersect_1.default(lineString1, lineString2);\n    if (doLinesIntersect.features.length > 0) {\n        for (var i = 0; i < lineString1.coordinates.length - 1; i++) {\n            for (var i2 = 0; i2 < lineString2.coordinates.length - 1; i2++) {\n                var incEndVertices = true;\n                if (i2 === 0 || i2 === lineString2.coordinates.length - 2) {\n                    incEndVertices = false;\n                }\n                if (isPointOnLineSegment(lineString1.coordinates[i], lineString1.coordinates[i + 1], lineString2.coordinates[i2], incEndVertices)) {\n                    return true;\n                }\n            }\n        }\n    }\n    return false;\n}\nfunction doLineStringAndPolygonCross(lineString, polygon) {\n    var line = polygon_to_line_1.polygonToLine(polygon);\n    var doLinesIntersect = line_intersect_1.default(lineString, line);\n    if (doLinesIntersect.features.length > 0) {\n        return true;\n    }\n    return false;\n}\nfunction doesMultiPointCrossPoly(multiPoint, polygon) {\n    var foundIntPoint = false;\n    var foundExtPoint = false;\n    var pointLength = multiPoint.coordinates.length;\n    for (var i = 0; i < pointLength && (!foundIntPoint || !foundExtPoint); i++) {\n        if (boolean_point_in_polygon_1.default(helpers_1.point(multiPoint.coordinates[i]), polygon)) {\n            foundIntPoint = true;\n        }\n        else {\n            foundExtPoint = true;\n        }\n    }\n    return foundExtPoint && foundIntPoint;\n}\n/**\n * Is a point on a line segment\n * Only takes into account outer rings\n * See http://stackoverflow.com/a/4833823/1979085\n *\n * @private\n * @param {number[]} lineSegmentStart coord pair of start of line\n * @param {number[]} lineSegmentEnd coord pair of end of line\n * @param {number[]} pt coord pair of point to check\n * @param {boolean} incEnd whether the point is allowed to fall on the line ends\n * @returns {boolean} true/false\n */\nfunction isPointOnLineSegment(lineSegmentStart, lineSegmentEnd, pt, incEnd) {\n    var dxc = pt[0] - lineSegmentStart[0];\n    var dyc = pt[1] - lineSegmentStart[1];\n    var dxl = lineSegmentEnd[0] - lineSegmentStart[0];\n    var dyl = lineSegmentEnd[1] - lineSegmentStart[1];\n    var cross = dxc * dyl - dyc * dxl;\n    if (cross !== 0) {\n        return false;\n    }\n    if (incEnd) {\n        if (Math.abs(dxl) >= Math.abs(dyl)) {\n            return dxl > 0\n                ? lineSegmentStart[0] <= pt[0] && pt[0] <= lineSegmentEnd[0]\n                : lineSegmentEnd[0] <= pt[0] && pt[0] <= lineSegmentStart[0];\n        }\n        return dyl > 0\n            ? lineSegmentStart[1] <= pt[1] && pt[1] <= lineSegmentEnd[1]\n            : lineSegmentEnd[1] <= pt[1] && pt[1] <= lineSegmentStart[1];\n    }\n    else {\n        if (Math.abs(dxl) >= Math.abs(dyl)) {\n            return dxl > 0\n                ? lineSegmentStart[0] < pt[0] && pt[0] < lineSegmentEnd[0]\n                : lineSegmentEnd[0] < pt[0] && pt[0] < lineSegmentStart[0];\n        }\n        return dyl > 0\n            ? lineSegmentStart[1] < pt[1] && pt[1] < lineSegmentEnd[1]\n            : lineSegmentEnd[1] < pt[1] && pt[1] < lineSegmentStart[1];\n    }\n}\nexports.default = booleanCrosses;\n","'use strict';\n\nvar helpers = require('@turf/helpers');\n\n// http://stackoverflow.com/questions/11935175/sampling-a-random-subset-from-an-array\n\n/**\n * Takes a {@link FeatureCollection} and returns a FeatureCollection with given number of {@link Feature|features} at random.\n *\n * @name sample\n * @param {FeatureCollection} featurecollection set of input features\n * @param {number} num number of features to select\n * @returns {FeatureCollection} a FeatureCollection with `n` features\n * @example\n * var points = turf.randomPoint(100, {bbox: [-80, 30, -60, 60]});\n *\n * var sample = turf.sample(points, 5);\n *\n * //addToMap\n * var addToMap = [points, sample]\n * turf.featureEach(sample, function (currentFeature) {\n *   currentFeature.properties['marker-size'] = 'large';\n *   currentFeature.properties['marker-color'] = '#000';\n * });\n */\nfunction sample(featurecollection, num) {\n  if (!featurecollection) throw new Error(\"featurecollection is required\");\n  if (num === null || num === undefined) throw new Error(\"num is required\");\n  if (typeof num !== \"number\") throw new Error(\"num must be a number\");\n\n  var outFC = helpers.featureCollection(\n    getRandomSubarray(featurecollection.features, num)\n  );\n  return outFC;\n}\n\nfunction getRandomSubarray(arr, size) {\n  var shuffled = arr.slice(0),\n    i = arr.length,\n    min = i - size,\n    temp,\n    index;\n  while (i-- > min) {\n    index = Math.floor((i + 1) * Math.random());\n    temp = shuffled[index];\n    shuffled[index] = shuffled[i];\n    shuffled[i] = temp;\n  }\n  return shuffled.slice(min);\n}\n\nmodule.exports = sample;\nmodule.exports.default = sample;\n","import React from 'react'\nimport { classNames } from 'adhocracy4'\n\nexport const ToggleSwitch = ({\n  switchStr,\n  uniqueId,\n  toggleSwitch,\n  defaultChecked,\n  checked,\n  className,\n  labelLeft = true,\n  size = 'large',\n  ariaLabelledBy\n}) => (\n  <div className={classNames('toggle-switch form-check', className)}>\n    {labelLeft && switchStr && !ariaLabelledBy && <label className=\"toggle-switch__label\" htmlFor={uniqueId}>{switchStr}</label>}\n    <input\n      type=\"checkbox\"\n      name={uniqueId}\n      id={uniqueId}\n      className=\"toggle-switch__input\"\n      onChange={toggleSwitch}\n      defaultChecked={defaultChecked}\n      checked={checked}\n      aria-labelledby={ariaLabelledBy || (labelLeft && switchStr ? undefined : uniqueId + '-label')}\n    />\n    <span className={classNames('toggle-switch__display', size === 'small' && 'toggle-switch__display--small')} hidden>\n      <i className=\"bicon bicon-check toggle-switch__icon toggle-switch__icon--on\" aria-hidden=\"true\" />\n      <i className=\"bicon bicon-times toggle-switch__icon toggle-switch__icon--off\" aria-hidden=\"true\" />\n    </span>\n    {!labelLeft && !ariaLabelledBy && switchStr && (\n      <label id={uniqueId + '-label'} className={classNames('toggle-switch__label', size !== 'small' && 'toggle-switch__label--right', size === 'small' && 'toggle-switch__label--small')} htmlFor={uniqueId}>{switchStr}</label>\n    )}\n  </div>\n)\n"],"names":["_react","_interopRequireDefault","require","_reactLeaflet","_excluded","exports","_ref","feature","className","children","rest","_objectWithoutProperties2","default","_className","createElement","Popup","_extends2","closeButton","style","backgroundImage","properties","image","__importDefault","this","mod","__esModule","Object","defineProperty","value","circle_1","destination_1","helpers_1","convertAngleTo360","alfa","beta","center","radius","bearing1","bearing2","options","steps","angle1","angle2","Array","isArray","type","lineString","geometry","coordinates","arcStartDegree","arcEndDegree","i","push","toStr","prototype","toString","module","str","call","isArgs","length","callee","cleanCoords","clone","meta","helpers","_interopDefaultLegacy","e","cleanCoords__default","clone__default","getSqDist","p1","p2","dx","x","dy","y","getSqSegDist","p","t","simplifyDPStep","points","first","last","sqTolerance","simplified","index","maxSqDist","sqDist","simplifyDouglasPeucker","simplify","tolerance","highestQuality","undefined","point","prevPoint","newPoints","len","simplifyRadialDist","simplify$1","geojson","isObject","Error","highQuality","mutate","geomEach","geom","simplifyLine","map","lines","simplifyPolygon","rings","simplifyGeom","coord","z","coords","ring","pts","simpleRing","checkValidity","slice","origKeys","keys","keysShim","o","originalKeys","shim","keysWorksWithArguments","args","arguments","object","_django","_Pill","translated","filterRemove","django","gettext","getFilterRemoveText","label","interpolate","_filters","filters","onRemove","filter","f","choices","find","choice","Pill","key","pillClass","onClick","title","PriorityQueue","elements","priorities","sorting","_queue","_priorities","_sorting","_init","insert","ele","priority","indexToInsert","priority2","_insertAt","remove","splice","forEach","func","getElements","getElementPriority","getPriorities","getElementsWithPriorities","result","l","circle","lineArc","invariant","circle__default","lineArc__default","sector","getCoords","arc","sliceCoords","coordEach","currentCoords","polygon","bbox","bboxPolygon","bbox__default","bboxPolygon__default","envelope","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","props","propName","componentName","location","propFullName","secret","err","name","getShim","isRequired","ReactPropTypes","array","bigint","bool","number","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","_map","__typeError","msg","TypeError","__accessCheck","obj","member","has","__privateGet","getter","get","__privateAdd","WeakSet","add","set","__privateSet","setter","Action","Action2","PopStateEventType","isLocation","createMemoryHistory","entries","initialEntries","initialIndex","v5Compat","entry","index2","createMemoryLocation","state","mask","clampIndex","action","listener","n","Math","min","max","getCurrentLocation","to","createLocation","pathname","warning","charAt","JSON","stringify","createHref2","createPath","createHref","createURL","URL","encodeLocation","path","parsePath","search","hash","nextLocation","delta","replace","go","nextIndex","listen","fn","createBrowserHistory","getUrlBasedHistory","window2","globalHistory","maskedLocation","masked","usr","createHashHistory","substring","startsWith","base","document","querySelector","href","getAttribute","url","hashIndex","indexOf","message","cond","console","warn","getHistoryState","idx","current","random","parsedPath","searchIndex","getLocation","validateLocation","window","defaultView","history","getIndex","handlePop","createBrowserURLImpl","replaceState","addEventListener","removeEventListener","historyState","pushState","error","DOMException","assign","isAbsolute","origin","createContext","defaultValue","RouterContextProvider","constructor","init","Map","context","WeakMap","unsupportedLazyRouteObjectKeys","Set","unsupportedLazyRouteFunctionKeys","isUnsupportedLazyRouteFunctionKey","convertRoutesToDataRoutes","routes","mapRouteProperties2","parentPath","manifest","allowInPlaceMutations","route","treePath","String","id","join","isIndexRoute","indexRoute","mergeRouteUpdates","pathOrLayoutRoute","updates","lazy","matchRoutes","locationArg","basename","matchRoutesImpl","allowPartial","precomputedBranches","stripBasename","branches","flattenAndRankRoutes","matches","decoded","decodePath","matchRouteBranch","convertRouteMatchToUiMatch","match","loaderData","params","data","handle","flattenRoutes","sort","a","b","score","siblings","every","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","parentsMeta","_hasParentOptionalSegments","flattenRoute","hasParentOptionalSegments","relativePath","caseSensitive","joinPaths","concat","computeScore","includes","exploded","explodeOptionalSegments","segments","split","isOptional","endsWith","required","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","s","initialScore","some","reduce","segment","test","branch","matchedParams","matchedPathname","end","remainingPathname","matchPath","pathnameBase","normalizePathname","generatePath","originalPath","prefix","stringify2","keyMatch","optional","suffix","param","encodeURIComponent","pattern","matcher","compiledParams","compilePath","captureGroups","memo2","paramName","splatValue","regexpSource","nextChar","RegExp","v","decodeURIComponent","toLowerCase","startIndex","ABSOLUTE_URL_REGEX","isAbsoluteUrl","resolvePath","fromPathname","toPathname","removeDoubleSlashes","resolvePathname","normalizeSearch","normalizeHash","removeTrailingSlash","pop","getInvalidPathError","char","field","dest","getPathContributingMatches","getResolveToMatches","pathMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","from","isEmptyPath","routePathnameIndex","toSegments","shift","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","DataWithResponseInit","data2","status","redirect","responseInit","headers","Headers","Response","redirectDocument","response","ErrorResponseImpl","statusText","internal","isRouteErrorResponse","getRoutePattern","parts","m","Boolean","isBrowser","parseToInfo","_to","absoluteURL","isExternal","currentUrl","targetUrl","protocol","UninstrumentedSymbol","Symbol","getRouteInstrumentationUpdates","fns","aggregated","middleware","loader","instrument","instrumented","wrapImpl","lazyObject","lazyFn","instrumentations","handler","original","getHandlerInfo","hydrate","instrumentHandler","request","instrumentedHandler","getReadonlyRequest","getReadonlyContext","impls","getInfo","async","recurseRight","info","impl","handlerPromise","callHandler","getRouterInfo","router","opts","formMethod","formEncType","formData","body","method","thing","proto","getPrototypeOf","getOwnPropertyNames","objectProtoNames","isPlainObject","frozen","freeze","ctx","_routes","_branches","_hmrRoutes","_hmrBranches","validMutationMethodsArr","validMutationMethods","validRequestMethodsArr","validRequestMethods","redirectStatusCodes","redirectPreserveMethodStatusCodes","IDLE_NAVIGATION","historyAction","formAction","json","text","IDLE_FETCHER","IDLE_BLOCKER","proceed","reset","defaultMapRouteProperties","hasErrorBoundary","TRANSITIONS_STORAGE_KEY","ResetLoaderDataSymbol","DataRoutes","stableRoutes","activeRoutes","hasHMRRoutes","setRoutes","setHmrRoutes","commitHmrRoutes","createRouter","routerWindow","isBrowser3","hydrationRouteProperties2","hydrationRouteProperties","_mapRouteProperties","mapRouteProperties","dataRoutes","initialized","renderFallback","dataStrategyImpl","dataStrategy","defaultDataStrategyWithMiddleware","future","unlistenHistory","subscribers","bufferedInitialStateUpdate","savedScrollPositions2","getScrollRestorationKey2","getScrollPosition","initialScrollRestored","hydrationData","initialMatches","initialMatchesIsFOW","initialErrors","patchRoutesOnNavigation","checkFogOfWar","active","routeHasLoaderOrMiddleware","errors","relevantMatches","findIndex","getRouteHydrationStatus","shouldLoad","fogOfWar","getInternalRouterError","getShortCircuitMatches","pendingNavigationController","unblockBlockerHistoryUpdate","navigation","restoreScrollPosition","preventScrollReset","revalidation","actionData","fetchers","blockers","pendingAction","pendingPopstateNavigationDfd","pendingPreventScrollReset","pendingViewTransitionEnabled","appliedViewTransitions","removePageHideEventListener","isUninterruptedRevalidation","isRevalidationRequired","cancelledFetcherLoads","fetchControllers","incrementingLoadId","pendingNavigationLoadId","fetchReloadIds","fetchRedirectIds","fetchLoadMatches","activeFetchers","fetchersQueuedForDeletion","blockerFunctions","pendingRevalidationDfd","updateState","newState","matchRoute","errorElement","hydrateFallbackElement","unmountedFetchers","mountedFetchers","fetcher","size","newErrors","subscriber","deletedFetchers","viewTransitionOpts","flushSync","deleteFetcher","delete","completeNavigation","isActionReload","isMutationMethod","_isRedirect","mergeLoaderData","_","k","getSavedScrollPosition","priorPaths","currentLocation","toPaths","resolve","startNavigation","abort","startUninterruptedRevalidation","getScrollKey","saveScrollPosition","enableViewTransition","routesToUse","initialHydration","isHashChangeOnly","submission","notFoundMatches","handleNavigational404","loadingNavigation","overrideNavigation","AbortController","pendingActionResult","createClientSideRequest","signal","scopedContext","getContext","pendingError","findNearestBoundary","actionResult","isFogOfWar","interruptActiveLoads","getSubmittingNavigation","discoverResult","discoverRoutes","shortCircuited","partialMatches","matches2","boundaryId","actionMatch","getTargetMatch","dsMatches","getTargetedDataStrategyMatches","results","callDataStrategy","aborted","routeId","isRedirectResult","replace2","normalizeRedirectLocation","startRedirectNavigation","isErrorResult","boundaryMatch","handleAction","getLoadingNavigation","updatedMatches","workingFetchers","fetcherSubmission","callSiteDefaultShouldRevalidate","activeSubmission","getSubmissionFromNavigation","shouldUpdateNavigationState","getUpdatedActionData","revalidatingFetchers","getMatchesToLoad","workingFetchers2","didUpdateFetcherRedirects2","markFetchRedirectsDone","getActionDataForCommit","rf","revalidatingFetcher","getLoadingFetcher","getUpdatedRevalidatingFetchers","abortFetcher","controller","abortPendingFetchRevalidations","loaderResults","fetcherResults","callLoadersAndMaybeResolveData","redirect2","findRedirect","processLoaderData","didUpdateFetcherRedirects","didAbortFetchLoads","abortStaleFetchLoads","shouldUpdateFetchers","handleLoaders","isNavigation","redirectLocation","isDocumentReload","redirectNavigationType","fetcherKey","dataResults","callDataStrategyImpl","hasOwnProperty","shouldCallHandler","isRedirectDataStrategyResult","normalizeRelativeRoutingRedirectResponse","convertDataStrategyResultToDataResult","fetchersToLoad","loaderResultsPromise","fetcherResultsPromise","Promise","all","acc","r","updateFetcherState","setFetcherError","reason","markFetchersDone","doneFetcher","getDoneFetcher","doneKeys","didUpdateFetchers","landedId","yeetedKeys","deleteBlocker","updateBlocker","newBlocker","blocker","shouldBlockNavigation","blockerKey","blockerFunction","activeBranches","localManifest","patch","patchRoutesImpl","newMatches","newPartialMatches","compareMatches","initialize","nextHistoryUpdatePromise","then","_window","transitions","sessionPositions","sessionStorage","getItem","parse","restoreAppliedTransitions","_saveAppliedTransitions","setItem","persistAppliedTransitions","subscribe","enableScrollRestoration","positions","getPosition","getKey","navigate","createDeferred","promise","maskPath","normalizedPath","normalizeTo","fromRouteId","relative","normalizeNavigateOptions","userReplace","viewTransition","defaultShouldRevalidate","fetch","requestMatches","existingFetcher","getSubmittingFetcher","abortController","fetchRequest","originatingLoadId","fetchMatches","actionResults","match2","revalidationRequest","loadId","loadFetcher","staleKey","existingFetcher2","fetcherIsMounted","getRedirectStateWithDoneFetcher","finalFetchers","handleFetcherAction","handleFetcherLoader","revalidate","getFetcher","resetFetcher","count","dispose","clear","getBlocker","patchRoutes","unstable_allowElementMutations","_internalFetchControllers","_internalSetRoutes","newRoutes","_internalSetStateDoNotUseOrYouWillBreakYourApp","instrumentedNavigate","fetch2","instrumentedFetch","instrumentClientSideRouter","createStaticHandler","routeBranches","queryImpl","requestContext","skipLoaderErrorBubbling","routeMatch","filterMatchesToLoad","skipRevalidation","result2","isRouteRequest","throwStaticHandlerAbortedError","Location","statusCode","loaderHeaders","actionHeaders","loaderRequest","Request","loadRouteData","handlerContext","submit","isResponse","isDataStrategyResult","isRedirectResponse","maxIdx","getDataStrategyMatch","processRouteLoaderData","defaultDataStrategy","isDataWithResponseInit","dataWithResponseInitToResponse","_internalRouteBranches","query","generateMiddlewareResponse","normalizePath","normalizePathImpl","defaultNormalizePath","isValidMethod","methodNotAllowedMatches","staticContext","renderedStaticContext","loadLazyMiddlewareForMatches","runServerMiddlewarePipeline","createDataFunctionUrl","opts2","parseResponseBody","dataWithResponseInitToErrorResponse","getStaticContextFromError","boundaryRouteId","queryRoute","innerRequest","processed","handleQueryResult","values","errorBoundaryId","_deepestRenderedBoundaryId","contextualMatches","activeRouteMatch","nakedIndex","hasNakedIndexQuery","URLSearchParams","indexValues","getAll","append","qs","prependBasename","isFetcher","isSubmissionNavigation","searchParams","getInvalidBodyError","toUpperCase","stripHashFromPath","FormData","convertFormDataToSearchParams","convertSearchParamsToFormData","lazyRoutePropertiesToSkip","hasPatchRoutesOnNavigation","nextUrl","actionStatus","shouldSkipRevalidation","baseShouldRevalidateArgs","currentParams","nextParams","forceShouldLoad","shouldLoad2","currentLoaderData","currentMatch","isNew","isMissingData","isNewLoader","currentPath","isNewRouteInstance","shouldRevalidateArgs","shouldRevalidateLoader","isMidInitialLoad","fetcherMatches","fetcherMatch","fetchController","fetcherDsMatches","hasData","hasError","loaderMatch","arg","shouldRevalidate","routeChoice","allowElementMutations","childrenToPatch","uniqueChildren","existingChildren","newRoute","existingRoute","existingRoute2","isSameRoute","existingRouteTyped","newRouteTyped","aChild","bChild","lazyRoutePropertyCache","loadLazyRouteProperty","routeToUpdate","cache","cachedPromise","propertyPromise","isUnsupported","isUnsupportedLazyRouteObjectKey","isStaticallyDefined","lazyRouteFunctionCache","isNonNullable","promises","matchesToLoad","keyedResults","runClientMiddlewarePipeline","errorHandler","runMiddlewarePipeline","isDataStrategyResults","nextResult","maxBoundaryIdx","processResult","isResult","dataFnArgs","tuples","flatMap","callRouteMiddleware","middlewares","tuple","next","getDataStrategyMatchLazyPromises","lazyMiddlewarePromise","lazyRoutePromises","lazyRoutePromise","lazyHandlerPromise","lazyRoutePromise2","lazyRoute","routeUpdates","lazyRouteProperty","lazyValue","catch","lazyKeys","lazyPropertyPromises","loadLazyRoute","isUsingNewApi","_lazyPromises","handlerOverride","isMiddlewareOnlyRoute","onReject","isAction","runHandler","reject","abortPromise","actualHandler","race","handlerError","handler2","callLoaderOrAction","targetMatch","isStaticHandler","dataStrategyArgs","runClientMiddleware","cb","typedDataStrategyArgs","contentType","dataStrategyResult","trimmedMatches","invalidProtocols","historyInstance","normalizedLocation","isSameBasename","parsed","foundError","newLoaderData","mergedLoaderData","merged","reverse","errorMessage","isRedirectStatusCode","res","rej","val","DataRouterContext","displayName","DataRouterStateContext","RSCRouterContext","useIsRSCRouterContext","ViewTransitionContext","isTransitioning","FetchersContext","AwaitContext","AwaitContextProvider","Provider","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","ENABLE_DEV_WARNINGS","ERROR_DIGEST_BASE","ERROR_DIGEST_REDIRECT","ERROR_DIGEST_ROUTE_ERROR_RESPONSE","decodeRedirectErrorDigest","digest","reloadDocument","decodeRouteErrorResponseDigest","useHref","useInRouterContext","navigator","useResolvedPath","joinedPathname","useLocation","useNavigationType","navigationType","useMatch","navigateEffectWarning","useIsomorphicLayoutEffect","static","useNavigate","useDataRouterContext","useCurrentRouteId","activeRef","useNavigateStable","dataRouterContext","routePathnamesJson","useNavigateUnstable","OutletContext","useOutletContext","useOutlet","useParams","useRoutes","useRoutesImpl","dataRouterOpts","parentMatches","parentParams","parentPathname","parentPathnameBase","parentRoute","warningOnce","locationFromContext","parsedLocationArg","parentSegments","Component","renderedMatches","_renderMatches","DefaultErrorComponent","useRouteError","stack","lightgrey","preStyles","padding","backgroundColor","codeStyles","devInfo","fontStyle","defaultErrorElement","RenderErrorBoundary","super","getDerivedStateFromError","getDerivedStateFromProps","componentDidCatch","errorInfo","onError","render","routeContext","component","RSCErrorHandler","contextType","errorRedirectHandledMap","existingRedirect","redirectPromise","__reactRouterDataRouter","httpEquiv","content","RenderedRoute","ErrorBoundary","dataRouterState","errorIndex","fallbackIndex","HydrateFallback","errors2","needsToRunLoader","isStatic","onErrorHandler","reduceRight","shouldRenderHydrateFallback","getChildren","getDataRouterConsoleError","hookName","useDataRouterState","useRouteContext","thisRoute","useNavigation","useRevalidator","useMatches","useLoaderData","useRouteLoaderData","useActionData","useAsyncValue","_data","useAsyncError","_error","blockerId","useBlocker","shouldBlock","setBlockerKey","alreadyWarned","useRoute","currentRouteId","route2","toRouterStateMatch","useRouterState","pending","shared","alreadyWarned2","warnOnce","condition","useOptimisticImpl","stableUseOptimisticSetter","createMemoryRouter","Deferred","RouterProvider","reactDomFlushSyncImpl","useTransitions","unstable_rsc","_state","setStateImpl","setOptimisticState","pendingState","setPendingState","vtContext","setVtContext","renderDfd","setRenderDfd","transition","setTransition","interruption","setInterruption","fetcherData","setState","isViewTransitionAvailable","startViewTransition","skipTransition","finished","finally","getOptimisticRouterState","renderPromise","transition2","state2","Router","MemoizedDataRoutes","currentState","DataRoutes2","MemoryRouter","historyRef","Navigate","jsonPath","Outlet","Route","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","createRoutesFromChildren","Await","dataRouterStateContext","AwaitErrorBoundary","ResolveAwait","renderError","_tracked","toRender","apply","createRoutesFromElements","renderMatches","useRouteComponentProps","WithComponentProps","withComponentProps","Component4","useHydrateFallbackProps","WithHydrateFallbackProps","withHydrateFallbackProps","useErrorBoundaryProps","WithErrorBoundaryProps","withErrorBoundaryProps","defaultMethod","defaultEncType","isHtmlElement","HTMLElement","createSearchParams","_formDataSupportsSubmitter","supportedFormEncTypes","getFormEncType","encType","getFormSubmissionInfo","target","tagName","attr","isButtonElement","isInputElement","form","isFormDataSubmitterSupported","HOLE","NAN","NEGATIVE_INFINITY","NEGATIVE_ZERO","NULL","POSITIVE_INFINITY","UNDEFINED","TYPE_BIGINT","TYPE_DATE","TYPE_ERROR","TYPE_MAP","TYPE_NULL_OBJECT","TYPE_PROMISE","TYPE_REGEXP","TYPE_SET","TYPE_SYMBOL","TYPE_URL","TYPE_PREVIOUS_RESOLVED","SUPPORTED_ERROR_TYPES","Deferred2","TIME_LIMIT_MS","getNow","Date","now","yieldToMain","setTimeout","flatten","input","indices","existing","Number","isNaN","deferred","plugins","postPlugins","stringified","lastYieldTime","flattenValue","partsForObj","keyFor","pluginHandled","plugin","pluginResult","pluginIdentifier","i2","dateTime","getTime","source","flags","isPlainObject2","objectProtoNames2","globalObj","globalThis","unflatten","hydrated","SyntaxError","postRun","NaN","Infinity","c","BigInt","for","newSet","create","d","errorType","vals","v2","decode","readable","done","reader","pipeThrough","decoder","TextDecoder","leftover","TransformStream","transform","chunk","stream","part","enqueue","flush","createLineSplittingTransform","getReader","decodeInitial","donePromise","decodeDeferred","closed","read","line","colonIndex","deferredId","lineData","jsonLine","encode","onComplete","encoder","textEncoder","TextEncoder","lastSentIndex","ReadableStream","start","seenPromises","processingChain","raceDone","racePromise","rejectPromise","event","resolved","id2","close","createRequestInit","ESCAPE_LOOKUP","ESCAPE_REGEX","escapeHtml","html","invariant2","_isPreloadSupported","SingleFetchRedirectSymbol","SingleFetchNoResultError","SINGLE_FETCH_REDIRECT_STATUS","NO_BODY_STATUS_CODES","StreamTransfer","identifier","textDecoder","nonce","renderMeta","didRenderScripts","streamCache","scriptTag","dangerouslySetInnerHTML","__html","getTurboStreamSingleFetchDataStrategy","getRouter","routeModules","ssr","trailingSlashAware","getSingleFetchDataStrategyImpl","manifestRoute","hasLoader","hasClientLoader","fetchAndDecodeViaTurboStream","getRouteInfo","fetchAndDecode","shouldAllowOptOut","unwrapSingleFetchResult","singleFetchActionStrategy","foundRevalidatingServerLoader","singleFetchLoaderFetcherStrategy","routesParams","foundOptOutRoute","routeDfds","createDeferred2","singleFetchDfd","resolvePromise","isInitialLoad","__reactRouterHdrActive","targetRoutes","singleFetchPromise","middlewareError","fetchedData","routeResult","bubbleMiddlewareErrors","singleFetchLoaderNavigationStrategy","nonSsrStrategy","stripIndexParam","indexValuesToKeep","indexValue","toKeep","singleFetchUrl","reqUrl","extension","reload","decodeViaTurboStream","typed","global","Constructor","loadRouteModule","routeModulesCache","routeModule","import","__reactRouterContext","isSpaMode","getRouteCssDescriptors","css","rel","prefetchStyleLinks","links","el","relList","supports","isPreloadSupported","descriptors","styleLinks","descriptor","isPageLinkDescriptor","as","prefetchStyleLink","media","matchMedia","link","removeLink","head","contains","removeChild","onload","onerror","appendChild","page","isHtmlLinkDescriptor","imageSrcSet","imageSizes","getNewMatchesForLinks","nextMatches","currentMatches","mode","matchPathChanged","getModuleLinkHrefs","includeHydrateFallback","hrefs","clientActionModule","clientLoaderModule","hydrateFallbackModule","imports","flat","dedupeLinkDescriptors","preloads","preloadsSet","deduped","sorted","sortKeys","RemixRootDefaultHydrateFallback","BoundaryShell","renderScripts","groupRoutesByParentId","parentId","getRouteComponents","getRouteModuleComponent","RemixRootDefaultErrorBoundary","Layout","createServerRoutes","routesByParentId","spaModeLazyPromise","dataRoute","createClientRoutesWithHMRRevalidationOptOut","needsRevalidation","initialState","createClientRoutes","preventInvalidServerHandlerCall","hasAction","noActionDefinedError","article","fetchServerHandler","singleFetch","fetchServerLoader","fetchServerAction","prefetchModule","modulePath","prefetchRouteModuleChunks","prefetchStylesAndCallHandler","cachedModule","linkPrefetchPromise","clientMiddleware","getShouldRevalidateFunction","hasInitialData","initialData","hasInitialError","initialError","isHydrationRequest","clientLoader","_isHydrationRequest","serverLoader","shouldHydrateRouteLoader","clientAction","serverAction","getLazyRoute","routeModulePromise","prefetchRouteCssPromise","prefetchRouteCss","loadRouteModuleWithBlockingLinks","hasClientAction","clientActionPromise","hasClientMiddleware","clientMiddlewareModule","routeShouldRevalidate","handledRevalidation","wrapShouldRevalidateForHdr","myParams","didParamsChange","nextPaths","discoveredPathsMaxSize","discoveredPaths","URL_LIMIT","isFogOfWarEnabled","routeDiscovery","getPatchRoutesOnNavigationFunction","fetchAndApplyManifestPatches","manifestPath","useFogOFWarDiscovery","connection","saveData","registerElement","fetchPatches","querySelectorAll","lazyPaths","debouncedFetchPatches","callback","wait","timeoutId","clearTimeout","debounce","observer","MutationObserver","observe","documentElement","subtree","childList","attributes","attributeFilter","disconnect","getManifestPath","_manifestPath","MANIFEST_VERSION_STORAGE_KEY","errorReloadPath","version","serverPatches","ok","removeItem","knownRoutes","patches","queue","addToFifoQueue","parentIds","useDataRouterContext2","useDataRouterStateContext","FrameworkContext","useFrameworkContext","composeEventHandlers","theirHandler","ourHandler","defaultPrevented","getActiveMatches","isHydrated","errorIdx","CRITICAL_CSS_DATA_ATTRIBUTE","Links","crossOrigin","criticalCss","routerMatches","keyedLinks","getKeyedLinksForMatches","PrefetchPageLinks","linkProps","rsc","RSCPrefetchPageLinksImpl","PrefetchPageLinksImpl","useKeyedPrefetchLinks","keyedPrefetchLinks","setKeyedPrefetchLinks","interrupted","getKeyedPrefetchLinks","dataHrefs","unstable_trailingSlashAwareDataRequests","hasSomeRoutesWithShouldRevalidate","newMatchesForData","newMatchesForAssets","m2","moduleHrefs","Meta","_matches","leafMeta","_match","routeMeta","metaProps","isValidMetaTag","Comp","charSet","charset","setIsHydrated","Scripts","scriptProps","serverHandoffString","isRSCRouterContext","enableFogOfWar","initialScripts","contextScript","routeModulesScript","hmr","runtime","routeIndex","routeVarName","manifestEntry","chunks","varName","sri","routeIds","initialRoutes","getPartialManifest","suppressHydrationWarning","integrity","mergeRefs","refs","ref","RemixErrorBoundary","isOutsideRemixApp","errorInstance","heyDeveloper","fontSize","errorString","background","color","overflow","root","lang","fontFamily","isBrowser2","__reactRouterVersion","createBrowserRouter","parseHydrationData","createHashRouter","__staticRouterHydrationData","deserializeErrors","serialized","__type","__subType","ErrorConstructor","BrowserRouter","HashRouter","HistoryRouter","ABSOLUTE_URL_REGEX2","Link","discover","prefetch","forwardedRef","maskedHref","shouldPrefetch","prefetchRef","prefetchHandlers","theirElementProps","frameworkContext","maybePrefetch","setMaybePrefetch","setShouldPrefetch","onFocus","onBlur","onMouseEnter","onMouseLeave","onTouchStart","IntersectionObserver","isIntersecting","threshold","setIntent","cancelIntent","usePrefetchBehavior","internalOnClick","useLinkClickHandler","isSpaLink","NavLink","ariaCurrentProp","classNameProp","styleProp","routerState","useViewTransitionState","nextLocationPathname","endSlashPosition","isActive","isPending","renderProps","ariaCurrent","Form","onSubmit","useSubmit","useFormAction","preventDefault","submitter","nativeEvent","submitMethod","doSubmit","currentTarget","ScrollRestoration","storageKey","remixContext","useScrollRestoration","ssrKey","userKey","getScrollRestorationKey","restoreScroll","storageKey2","restoreKey","storedY","scrollTo","SCROLL_RESTORATION_STORAGE_KEY","getDataRouterConsoleError2","useDataRouterContext3","useDataRouterState2","replaceProp","button","metaKey","altKey","ctrlKey","shiftKey","isModifiedEvent","shouldProcessLinkClick","doNavigate","useSearchParams","defaultInit","defaultSearchParamsRef","hasSetSearchParamsRef","locationSearch","defaultSearchParams","setSearchParams","nextInit","navigateOptions","newSearchParams","fetcherId","getUniqueFetcherId","routerFetch","routerNavigate","useFetcher","defaultKey","setFetcherKey","load","submitImpl","FetcherForm","FetcherForm2","useFetchers","savedScrollPositions","scrollRestoration","capture","usePageHide","scrollY","disableScrollRestoration","location2","getElementById","scrollIntoView","useBeforeUnload","usePrompt","when","confirm","nextPath","StaticRouter","staticNavigator","getStatelessNavigator","StaticRouterProvider","hydrate2","fetchersContext","hydrateScript","serializeErrors","back","forward","createStaticHandler2","createStaticRouter","v8_middleware","v8_passThroughRequests","encoded","ABSOLUTE_URL_REGEX3","RedBlackTree","RedBlackNode","U","C","L","R","P","N","RedBlackRotateLeft","tree","q","parent","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","sibling","red","left","right","createEdge","v0","v1","edge","edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","x0","y0","x1","y1","ax","ay","t0","t1","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","cellHalfedgeAngle","cell","site","va","vb","atan2","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","cy","attachCircle","lArc","rArc","lSite","cSite","rSite","bx","by","cx","epsilon2","ha","hc","sqrt","before","circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","previous","disappearing","abs","epsilon","unshift","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","Diagram","sites","extent","j","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","cover","d2","dc","v00","v01","v11","v10","clipCells","voronoi","round","polygons","triangles","constant","s0","e1","s1","i0","that","i1","_found","vx","vy","vs","inside","xi","yi","xj","yj","flattenEach","featureCollection","geojson_rbush_1","line_segment_1","nearest_point_on_line_1","boolean_point_on_line_1","invariant_1","meta_1","deep_equal_1","concatSegment","lineCoords","line1","line2","overlapSegment","features","segmentEach","doesOverlaps","featureEach","coordsSegment","coordsMatch","dist","TinyQueue","compare","_down","item","_up","top","bottom","peek","pos","halfLength","bestChild","elen","flen","h","Q","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","vec","Float64Array","ccwerrboundA","ccwerrboundB","ccwerrboundC","B","C1","C2","D","u","orient2d","detleft","detright","det","detsum","acxtail","acytail","bcxtail","bcytail","ahi","alo","bhi","blo","_i","_j","_0","u3","acx","bcx","acy","bcy","errbound","C1len","C2len","Dlen","orient2dadapt","concaveman","concavity","lengthThreshold","hull","cull","filtered","compareByX","lower","cross","upper","ii","convexHull","fastConvexHull","toBBox","minX","minY","maxX","maxY","compareMinX","compareMinY","insertNode","segTree","updateBBox","sqConcavity","sqLenThreshold","sqLen","maxSqLen","findCandidate","prev","concave","maxDist","compareDist","child","leaf","sqSegDist","sqSegBoxDist","d0","d1","noIntersections","sqSegSegDist","d3","d4","intersects","p3","q1","q2","x2","y2","x3","y3","ux","uy","wx","wy","sN","tN","sD","tD","sc","tc","rbush","turfBBox","geojsonRbush","maxEntries","equals","collides","toJSON","fromJSON","bearing","distance","destination","bearing__default","distance__default","destination__default","lineSliceAlong","startDist","stopDist","overshot","direction","interpolated","origCoordsLength","travelled","objectKeys","isArguments","is","isRegex","isDate","deepEqual","actual","expected","strict","isUndefinedOrNull","aIsRegex","bIsRegex","aIsBuffer","isBuffer","bIsBuffer","ka","kb","objEquiv","copy","Distance","eudist","kmrand","ks","multi","floor","kmpp","dists","lk","dsum","prs","_dist","_i2","pr","cs","_i3","rnd","__proto__","_typeof","_t","getOwnPropertyDescriptor","_interopRequireWildcard","_TypeaheadField","_MultiSelect","_adhocracy","_ControlBarFilterPills","_SaveSearchProfile","_GroupMultiSelect","ownKeys","getOwnPropertySymbols","enumerable","_objectSpread","_defineProperty2","getOwnPropertyDescriptors","defineProperties","showFilters","hideFilters","districtsKieze","allDistrictsKieze","savedKieze","createKiez","districts","topics","allTopics","participations","allParticipation","projectState","projectStatePlaceholder","organisation","onlyShow","plans","nav","searchFor","searchProfileCreatedTitle","searchProfileCreatedText","searchProfileLimitExceededTitle","searchProfileLimitExceededText","statusNames","past","plansOnly","kiezradars","_ref2","organisations","participationChoices","topicChoices","appliedFilters","onFiltered","onResetClick","onAlert","hasContainer","initialSearchProfile","searchProfile","searchProfilesApiUrl","searchProfilesUrl","initialSearchProfilesCount","searchProfilesCount","setParams","syncTrigger","isAuthenticated","projectStatus","_useState","useState","_useState2","_slicedToArray2","expandFilters","setExpandFilters","_useState3","_useState4","setFilters","onFilterChange","alteredFilters","topicCode","code","participationId","getAlteredFilters","_useState5","_useState6","setSearchProfile","_useState7","_useState8","setSearchProfilesCount","filtersContainerRef","useRef","isFiltersInitialState","useEffect","focus","classNames","newFilters","htmlFor","placeholder","searchPlaceholder","autoComplete","onChange","GroupMultiSelect","groups","_toConsumableArray2","selectedKiezradars","kiezradar","selectedDistricts","district","hasKiezradarsChanged","hasDistrictsChanged","MultiSelect","topic","tabIndex","_ref3","_ref4","TypeaheadField","typeaheadHeading","uniqueId","onTypeaheadChange","typeaheadOptions","typeaheadSelected","multipleBoolean","checked","ControlBarFilterPills","onSearchProfileCreate","limitExceeded","hasProtoAccessor","callBind","gOPD","desc","$Object","$getPrototypeOf","boolean_within_1","distance_1","cellSide","units","west","south","east","north","cellWidth","cellHeight","bboxWidth","bboxHeight","columns","deltaY","currentX","currentY","cellPt","intersect_1","hexagon","cosines","sines","vertices","hexTriangles","clonedProperties","centerY","centerX","hex_width","hex_height","box_width","box_height","x_interval","y_interval","x_span","x_count","x_adjust","y_count","y_adjust","hasOffsetY","angle","PI","cos","sin","isOdd","center_x","center_y","triangle","hex","planepoint","getCoord","outer","getGeom","z1","z2","z3","line_overlap_1","line_intersect_1","geojson_equality_1","feature1","feature2","geom1","geom2","type1","type2","precision","overlap","coord1","coord2","segment1","segment2","rhumbDestination","rhumbDestination__default","transformTranslate","zTranslation","pointCoords","newCoords","clone_1","topojson_client_1","topojson_server_1","getType","geoms","topo","topology","geometryCollection","merge","objects","geometries","coordinates1","coordinates2","dLat","degreesToRadians","dLon","lat1","lat2","pow","radiansToLength","implementation","distanceInMeters","earthRadius","phi1","phi2","DeltaPhi","DeltaLambda","DeltaPsi","log","tan","calculateRhumbDistance","convertLength","Function","$hasOwn","bind","setFunctionLength","$defineProperty","callBindBasic","applyBind","originalFunction","adjustedLength","_ProjectTile","_Spinner","_regenerator","iterator","toStringTag","Generator","_regeneratorDefine2","G","return","GeneratorFunction","GeneratorFunctionPrototype","setPrototypeOf","w","_invoke","configurable","writable","showCompletedProjectsHeading","showCompletedProjectsBody","showCompletedProjectsButton","showingProjects","ngettext","noProjectsFound","initialProjects","projects","projectsUrl","isHorizontal","showMap","searchCompletedProjects","showSearchCompletedProjectsButton","visibleProjects","_React$useState","React","_React$useState2","setProjects","_React$useState3","_React$useState4","loading","setLoading","_React$useState5","_React$useState6","announcement","setAnnouncement","fetchData","_asyncToGenerator2","_callee","_context","projectsToShow","displayProjects","Fragment","role","project","booleanClockwise","booleanClockwise__default","rewind","rewindFeature","rewindLineString","rewindPolygon","$apply","actualApply","length__default","lineSliceAlong__default","lineChunk","segmentLength","lineLength","numberOfSegments","isInteger","sliceLineSegments","$call","$reflectApply","lowLeft","topLeft","topRight","lowRight","bbox_1","boolean_point_in_polygon_1","isPointInMultiPoint","multiPoint","pt","output","compareCoords","isMultiPointInMultiPoint","multiPoint1","multiPoint2","_a","matchFound","_b","_c","isMultiPointOnLine","haveFoundInteriorPoint","ignoreEndVertices","isMultiPointInPoly","ignoreBoundary","isLineOnLine","lineString1","lineString2","isLineInPoly","linestring","doBBoxOverlap","midPoint","getMidpoint","isPolyInPoly","coords_1","ring_1","bbox1","bbox2","pair1","pair2","coords1","coords2","turf","_MarkerClusterLayer","_ControlWrapper","_Map","_ProjectMarker","_ProjectsMapInfo","FitToSelection","selectionBbox","useMap","_selectionBbox","southWest","northEast","fitBounds","MapEventHandler","items","onVisibleMarkersChange","updateVisibleMarkers","useCallback","bounds","getBounds","latLng","lat","lng","on","off","Markers","activeProject","setActiveProject","Image","src","markers","useMemo","onOpen","onClose","position","_node$scrollIntoView","behavior","block","isMapTile","ProjectsMap","forwardRef","_ref4$districtPolygon","districtPolygons","_ref4$activeDistricts","activeDistricts","_ref4$kiezradars","_ref4$activeKiezradar","activeKiezradars","mapRef","useImperativeHandle","setView","newBounds","_districtPolygons$len","_kiezradars$length","districtPolygonsCount","kiezradarsCount","activeDistrictFeatures","normalise","trim","activeSet","activeKiezradarFeatures","kiez","_useMemo","greyedOutArea","selectedDistrictFeatures","selectedKiezFeatures","buffer","selectedFeatures","selectionCollection","worldFeature","nextMask","difference","featureBbox","featureCount","maskKey","zoomControl","maxZoom","minHeight","height","SearchAndShowAddress","apiUrl","ZoomControl","GeoJSON","weight","fill","fillColor","fillOpacity","_kiez$point$geometry$","pathOptions","callBound","hasToStringTag","hasOwn","$exec","isRegexMarker","throwRegexMarker","badStringifier","valueOf","toPrimitive","$toString","ServerRouter","staticHandlerContext","serializeError","serverHandoffStream","createRoutesStub","routerRef","frameworkContextRef","patched","processRoutes","mw","entryRoute","unsign","cookie","lastIndexOf","createKey","signature","byteString","Uint8Array","charCodeAt","byteStringToUint8Array","atob","crypto","subtle","verify","usages","importKey","createCookie","cookieOptions","secrets","sameSite","expires","warnOnceAboutExpiresCookie","isSigned","maxAge","cookieHeader","parseOptions","cookies","unsignedValue","decodeData","decodeCookieValue","serialize","serializeOptions","btoa","chr","exec","fromCharCode","parseInt","myUnescape","encodeData","sign","encodeCookieValue","isCookie","myEscape","createEntryRouteModules","memo","ServerMode","ServerMode2","sanitizeError","serverMode","sanitized","sanitizeErrors","matchServerRoutes","callRouteHandler","stripRoutesParam","duplex","globalDevServerHooksKey","setDevServerHooks","devServerHooks","getDevServerHooks","getBuildTimeHeader","headerName","process","env","IS_RR_BUILD_REQUEST","createStaticHandlerDataRoutes","commonRoute","preRenderedData","decodeURI","uint8array","g","createServerHandoffString","serverHandoff","getDocumentHeaders","build","getRouteHeadersFn","_defaultHeaders","errorHeaders","boundaryIdx","defaultHeaders","parentHeaders","includeErrorHeaders","includeErrorCookies","headersFn","headers2","prependCookies","getDocumentHeadersImpl","childHeaders","parentSetCookieString","splitCookiesString","childCookies","getSetCookie","throwIfPotentialCSRFAttack","allowedActionOrigins","originHeader","originDomain","host","forwardedHostHeader","forwardedHostValue","hostHeader","parseHostHeader","allowedOrigin","domain","domainParts","patternParts","patternPart","domainPart","matchWildcardDomain","isAllowedOrigin","getNormalizedPath","SERVER_NO_BODY_STATUS_CODES","singleFetchAction","staticHandler","handlerUrl","loadContext","handleError","handleQueryError","handlerRequest","singleFetchResult","generateSingleFetchResponse","staticContextToResponse","singleFetchLoaders","routesParam","loadRouteIds","loadedMatches","resultHeaders","encodeViaTurboStream","streamTimeout","generateSingleFetchRedirectResponse","redirectResponse","getSingleFetchRedirect","requestSignal","cleanupCallbacks","abortControllerOnRequestAbort","data3","fromEntries","derive","requestHandler","initialContext","processRequestError","returnLastResortErrorResponse","requestUrl","normalizedPathname","decodedPath","strippedPath","prerender","manifestUrl","assets","partialPath","handleManifestRequest","handleSingleFetchRequest","handleDataRequest","handleQueryRouteResult","handleQueryRouteError","errorResponse","errorResponseToJson","newError","handleResourceRequest","unstable_getCriticalCss","getCriticalCss","innerResult","renderHtml","isSpaMode2","baseServerHandoff","entryContext","handleDocumentRequestFunction","errorForSecondRender","unwrapResponse","error2","handleDocumentRequest","createRequestHandler","_build","_requestHandler","derived","flash","createSession","flashName","unset","isSession","createSessionStorage","cookieArg","createData","readData","updateData","deleteData","warnOnceAboutSigningSessionCookie","getSession","commitSession","session","destroySession","createCookieSessionStorage","serializedCookie","_session","createMemorySessionStorage","trimTrailingSplat","questionMark","encoder2","trailer","injectRSCPayload","rscStream","resolveFlightDataPromise","flightDataPromise","startedRSC","buffered","timeout","flushBufferedChunks","buf","fatal","writeChunk","fromCodePoint","releaseLock","remaining","writeRSCStream","script","RSCRouterGlobalErrorBoundary","RSCDefaultRootErrorBoundaryImpl","renderAppShell","ErrorWrapper","RSCDefaultRootErrorBoundary","hasRootLayout","createRSCRouteModules","payload","populateRSCRouteModules","noopComponent","defaultManifestPath","useImpl","routeRSCServerRequest","serverResponse","createFromReadableStream","renderHTML","isDataRequest","isReactServerRequest","respondWithRSCPayload","isManifestRequest","detectRedirectResponse","serverResponseB","streamControllers","createStream","deepestRenderedBoundaryId","getPayload","payloadPromise","formState","renderRedirect","reactHeaders","routeErrorResponse","onHeaders","redirectTransform","body2","retryRedirect","normalizedError","retryRedirectTransform","RSCStaticRouter","useSafe","patchedLoaderData","getHydrationData","routeInfo","hasHydrateFallback","_extends","toPropertyKey","_objectWithoutProperties","propertyIsEnumerable","DEFAULT_LABELKEY","getStringLabelKey","labelKey","prop","idCounter","isFunction","isString","noop","pick","option","optionLabel","allowNew","getOptionProperty","letters","letter","stripDiacritics","normalize","warned","falseToWarn","_len","_key","isMatch","searchStr","ignoreDiacritics","defaultFilterBy","filterBy","multiple","selected","fields","isSelectable","inputNode","selectionStart","getDisplayName","COMBINING_MARKS","getMatchBounds","subject","escapeStringRegexp","matchLength","_ii","activeIndex","initialItem","isFocused","isMenuShown","disabled","initialItemStr","getMenuItemId","_cx","inputProps","inputClassName","activeItem","highlightOnlyResult","maxResults","isDisabledOption","skipDisabledOptions","currentIndex","newIndex","preventInputBlur","isSizeLarge","isSizeSmall","propsWithBsClassName","isInvalid","isValid","INPUT_PROPS_BLACKLIST","alt","sizeType","checkPropType","validator","isRequiredForA11y","optionType","propTypes","delay","isLoading","minLength","onSearch","promptText","searchText","useCache","useAsync","_props$delay","emptyLabel","_props$minLength","onInputChange","_props$options","_props$promptText","_props$searchText","_props$useCache","otherProps","cacheRef","handleSearchDebouncedRef","queryRef","defaultInputValue","forceUpdate","dispatch","useReducer","useForceUpdate","prevProps","usePrevious","handleSearch","cancel","handleInputChange","cachedQuery","withAsync","AsyncTypeahead","_classCallCheck","_defineProperties","_createClass","_assertThisInitialized","ReferenceError","_setPrototypeOf","_inherits","_possibleConstructorReturn","_getPrototypeOf","defaultContext","hintText","isOnlyResult","onActiveItemChange","onAdd","onInitialItemChange","onMenuItemClick","TypeaheadContext","useTypeaheadContext","useContext","inputPropKeys","propKeys","contextKeys","onKeyDown","onMenuToggle","selectHint","isInitialRender","childProps","getInputProps","addOnlyResult","shouldSelectHint","defaultSelectHint","contextValue","getInitialState","defaultOpen","defaultSelected","showMenu","shownResults","clearTypeahead","clickOrFocusInput","hideMenu","_getInitialState","toggleMenu","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","autoFocus","onPaginate","open","paginate","_ref5","defaultProps","Typeahead","_React$Component","_super","_this","blur","persist","inputValue","HTMLInputElement","Event","bubbles","dispatchEvent","triggerInputChange","_handleChange","_this$props$inputProp","_this$props","shouldClearSelections","_handleActiveIndexChange","_handleMenuItemSelect","_handlePaginate","_handleSelectionAdd","_this$props2","selection","customOption","prevState","_this$props3","prevSelected","precedent","uncontrolledToControlled","validateSelectedPropChange","_this$props4","mergedPropsAndState","isShown","_results$push2","shouldPaginate","inputRef","_handleActiveItemChange","_handleBlur","_handleInputChange","onClear","_handleClear","_handleClick","_handleFocus","onHide","_handleInitialItemChange","_handleKeyDown","_handleSelectionRemove","ClearButton","_ref$label","_onClick","_onKeyDown","stopPropagation","Loader","_arrayLikeToArray","_slicedToArray","getWindow","ownerDocument","isElement","Element","isHTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","userAgentData","brands","brand","userAgent","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","offsetHeight","visualViewport","addVisualOffsets","offsetLeft","offsetTop","getWindowScroll","win","scrollLeft","pageXOffset","scrollTop","pageYOffset","getNodeName","nodeName","getDocumentElement","getWindowScrollBarX","getComputedStyle","isScrollParent","_getComputedStyle","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","rect","isElementScaled","scroll","offsets","clientLeft","clientTop","getLayoutRect","getParentNode","assignedSlot","parentNode","getScrollParent","listScrollParents","list","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","currentNode","perspective","contain","willChange","getContainingBlock","auto","basePlacements","viewport","popper","variationPlacements","placement","modifierPhases","order","modifiers","visited","modifier","requires","requiresIfExists","dep","depModifier","DEFAULT_OPTIONS","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","reference","orderedModifiers","modifiersData","styles","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","enabled","_ref$options","effect","cleanupFn","noopFn","update","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","_options","destroy","onFirstUpdate","passive","_options$scroll","_options$resize","resize","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","dpr","devicePixelRatio","roundOffsetsByDPR","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","popperOffsets","arrow","_options$offset","offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","getOppositePlacement","matched","getOppositeVariationPlacement","rootNode","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","clientWidth","clientHeight","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_loop","fittingPlacement","within","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","eventListeners","removeAttribute","setAttribute","initialStyles","margin","property","attribute","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","EMPTY_MODIFIERS","setPopperWidth","getPlacement","align","dropup","referenceElement","popperElement","attachRef","_usePopper","prevOptions","optionsWithDefaults","updateStateModifier","popperOptions","newOptions","popperInstanceRef","popperInstance","createPopper","usePopper","flip","positionFixed","refElementHeight","innerRef","SafeElement","Overlay","overlayProps","optionsSupported","onceSupported","once","canUseDOM","eventName","wrappedHandler","__once","onceHandler","useEventCallback","componentOrElement","safeFindDOMNode","getRefTarget","onRootClose","_temp","_ref$clickTrigger","clickTrigger","preventMouseRootCloseRef","handleMouseCapture","_e$composedPath$","isLeftClickEvent","composedPath","compareDocumentPosition","handleMouse","handleKeyUp","keyCode","currentEvent","doc","removeMouseCaptureListener","removeMouseListener","removeKeyupListener","mobileSafariHackListeners","rootElementRef","useToken","setActive","rootElement","handleBlur","handleRemove","withToken","WrappedToken","_excluded2","_excluded3","InteractiveToken","StaticToken","classnames","readOnly","_useToken","tokenProps","interpolateStyle","subattr","dir","useHint","_useTypeaheadContext","hintRef","handleInputScroll","hintNode","inputStyle","borderStyle","borderWidth","fontWeight","lineHeight","copyStyles","_useHint","display","flex","borderColor","boxShadow","pointerEvents","wrapperRef","inputElem","_propsWithBsClassName","referenceElementRef","handleContainerClickOrFocus","_wrapperRef$current","wrapperChildren","lastToken","border","cursor","outline","zIndex","highlightClassName","Highlighter","_ref$highlightClassNa","matchCount","highlighterChildren","nonMatch","nodeType","frameElement","parentElement","scrollMode","inline","skipOverflowHiddenElements","scrollingElement","W","innerWidth","H","innerHeight","scrollX","M","E","I","T","F","V","parseFloat","scrollMarginTop","scrollMarginRight","scrollMarginBottom","scrollMarginLeft","borderLeftWidth","borderTopWidth","borderRightWidth","borderBottomWidth","S","X","Y","useItem","itemRef","isConnected","handleClick","onMouseDown","withItem","WrappedMenuItem","BaseMenuItem","MenuItem","maxHeight","Menu","_ref$emptyLabel","_ref$maxHeight","Children","Divider","Header","newSelectionPrefix","paginationText","renderMenuItemChildren","renderMenuItemChildrenFn","TypeaheadMenu","_props$newSelectionPr","_props$paginationText","_props$renderMenuItem","menuProps","menuItemProps","clearButton","renderInput","renderMenu","renderToken","defaultRenderMenu","defaultRenderToken","overlayPropKeys","TypeaheadComponent","_referenceElement","commonProps","_this2","instanceRef","auxContent","_renderAux","_renderInput","getOverlayProps","_renderMenu","supportsDescriptors","$gOPD","calls","clusterEach","bins","createBins","bin","applyFilter","filterType","propertiesContainsFilter","getCluster","clusterReduce","initialValue","previousValue","cluster","clusterValue","filterProperties","newProperties","equal","keyType","keyEmpty","valueType","keystore","ceil","LN2","valstore","matchKey","collisions","maybeSet","missingValue","pointA","pointB","ArrayBuffer","floats","uints","Uint32Array","indexes","indexByPoint","hashmap","equalIndex","Int32Array","visitedByIndex","leftByIndex","rightByIndex","junctionByIndex","Int8Array","junctionCount","lineStart","lineEnd","sequence","ringStart","ringEnd","previousIndex","leftIndex","rightIndex","junctionByPoint","empty","store","hashset","rotateArray","mid","geomifyObject","geomifyFeatureCollection","geomifyFeature","geomifyGeometry","arcs","quantization","boundGeometry","boundGeometryType","GeometryCollection","Point","boundPoint","MultiPoint","LineString","boundLine","MultiLineString","Polygon","MultiPolygon","boundMultiLine","inputs","outputs","kx","ky","quantizePoint","quantizePoints","pi","px","py","quantizeLine","quantizeRing","quantizePolygon","quantizeGeometry","quantizeGeometryType","scale","translate","prequantize","arcCount","arcsByEnd","dedupLine","dedupRing","startPoint","endPoint","startArcs","startArc","endArcs","endArc","equalLine","reverseEqualLine","equalRing","reverseEqualRing","findMinimumOffset","arcA","arcB","ia","ib","ja","jb","minimum","minimumPoint","dedup","junctions","lineMid","ringMid","ringFixed","cut","extractGeometry","extractGeometryType","extractLine","extractRing","extractMultiRing","extract","indexByArc","hashArc","equalArc","indexGeometry","indexGeometryType","indexArcs","indexMultiArcs","explode","centroid","nearestPoint","booleanPointInPolygon","explode__default","centroid__default","nearestPoint__default","booleanPointInPolygon__default","pointOnFeature","fc","cent","onSurface","onLine","onMultiPoint","pointOnSegment","cur","sum","transformRotate","transformRotate__default","ellipse","xSemiAxis","ySemiAxis","pivot","isNumber","centerCoords","angleRad","stepAngle","getTanDeg","newx","newy","deg","rad","centroid_1","pNormDistance","coordinate1","coordinate2","xDiff","yDiff","binary","alpha","rowTransform","standardization","weights","dis","rowSum","currentVal","bearing_1","closestPt","stop_1","sectionLength","heightDistance","perpendicularPt1","perpendicularPt2","intersect","intersectPt","RADIUS","polygonArea","total","ringArea","lowerIndex","middleIndex","upperIndex","coordsLength","num","geomReduce","calculateArea","buttons","viewModeStr","fullWidth","ariaLabel","icon","format","argIndex","framesToPop","cleanLine","secondToLast","newPointsLength","prevAddedPoint","isPointOnLineSegment","pt1","pt2","dyl","polyPoints","D2R","R2D","Coord","lon","view","antipode","anti_lat","anti_lon","move_to","Arc","multiline","wkt","wkt_string","collect","GreatCircle","asin","greatCircle","npoints","A","first_pass","step","pair","bHasBigDiff","dfMaxSmallDiffLong","dfDateLineOffset","dfLeftBorderX","dfRightBorderX","dfDiffSpace","dfPrevX","dfX","dfDiffLong","poMulti","poNewLS","dfX0","dfX1","dfY1","dfX2","dfY2","tmpX","tmpY","dfRatio","dfY","poNewLS0","j0","x4","y4","denom","numeA","numeB","uA","uB","unique","square","truncate","lineSegment","lineIntersect","nearestPointOnLine","rbush__default","square__default","truncate__default","lineSegment__default","lineIntersect__default","nearestPointOnLine__default","lineSplit","splitter","lineType","splitterType","truncatedSplitter","splitLineWithPoint","splitLineWithPoints","closestLine","findClosestFeature","pointsEquals","closestSegment","lastCoords","featureReduce","splitterCoords","closestFeature","closestDistance","lineclip_1","clipPolygon","outRings","rings_1","clipped","polygonclip","lines_1","lineclip","multiLineString","multiPolygon","poly","longitude1","latitude1","bearingRad","radians","lengthToRadians","latitude2","longitude2","radiansToDegrees","rhumb_bearing_1","O","azimuthAO","bearingToAzimuth","mercator","azimuthBO","angleAO","explementary","rectangle_grid_1","polygonToLine","coordsToLine","multiPolygonToLine","multiPoly","viewBox","bitCode","codeB","lastCode","codeA","prevInside","orientationIndex","dx1","dy1","dx2","dy2","envelopeIsEqual","env1","env2","envX1","envY1","envX2","envY2","envelopeContains","self","coordinatesEqual","calcBbox","calcBbox__default","polygonTangents","rtan","ltan","enext","eprev","polyCoords","nearestPtIndex","nearest","featureIndex","isLeft","out","processPolygon","closestVertex","verticesCounted","verticeFound","polygonCoords","ptCoords","nextCoordPair","isBelow","isAbove","point1","point2","point3","pointInPolygon","pointInPolygon__default","pointsWithinPolygon","contained","pointsWithin","pointCoord","polygonSmooth","inputPolys","outPolys","iterations","geomIndex","outCoords","tempOutput","processMultiPolygon","prevGeomIndex","subtractCoordIndex","currentCoord","coordIndex","multiFeatureIndex","geometryIndex","realCoordIndex","p0x","p0y","p1x","p1y","prevMultiIndex","polygonClipping","flatten__default","polygonClipping__default","dissolve","propertyName","collectionOf","outFeatures","union","uniquePropertyVals","mp","_t2","_ProjectsList","_ToggleSwitch","_IconSwitch","_sortProjects","_ProjectsMap","_ProjectsControlBar","_filterProjects","_getDefaultState","_reactRouterDom","_helpers","pageHeader","showMapStr","nothingStr","showMapAriaStr","listStr","mapStr","visibleProjectsListHeaderStr","cityWideProjectsListHeaderStr","showListStr","noVisibleResultsStr","projectApiUrl","plansApiUrl","extprojectApiUrl","privateprojectApiUrl","attribution","baseUrl","mapboxToken","omtToken","useVectorMap","_useSearchParams","_useSearchParams2","setShowMap","getDefaultProjectState","setProjectState","setItems","_useState9","_useState0","setVisibleProjects","fetchCache","resultRef","_useState1","getDefaultState","_useState10","setAppliedFilters","_useState11","_useState12","alert","setAlert","_useState13","_useState14","setError","toSearchParams","_useState15","_useState16","setSyncTrigger","fetchItems","_callee2","urls","combined","_context2","_x","sortProjects","foundProposalsText","filteredItems","filterProjects","projectsWithoutLocation","hasVisibleProjects","displayItems","onClickSearchCompletedProjects","_resultRef$current","ProjectsControlBar","ToggleSwitch","toggleSwitch","onSwitchStr","IconSwitch","turf_line_dissolve_1","turf_polygon_dissolve_1","types","getHomogenousType","parseCookie","stringifySetCookie","cookieNameRegExp","cookieValueRegExp","domainValueRegExp","pathValueRegExp","maxAgeRegExp","__toString","NullObject","dec","eqIdx","eqIndex","endIdx","endIndex","valueSlice","_name","_val","_opts","enc","isFinite","toUTCString","httpOnly","secure","partitioned","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","$SyntaxError","$TypeError","gopd","nonEnumerable","nonWritable","nonConfigurable","loose","hasElementType","hasMap","hasSet","hasArrayBuffer","isView","it","$$typeof","isInTitle","_title$toLowerCase$tr","titleLower","searchList","activeTopics","isWithinAnyRadius","getDistanceBetweenPoints","hasKiezradarAndDistrict","hasRelevantOrEmptyActiveTopics","hasRelevantOrEmptyParticipation","participation","hasRelevantOrEmptyOrganisation","isTextSearchMatch","description","itemTopics","isInTopic","isStatusMatch","tin_1","turf_dissolve_1","maxEdge","cleaned","removeDuplicates","tinPolys","pt3","dist1","dist2","dist3","dissolved","hasPropertyDescriptors","hasArrayLengthDefineBug","_jsCookie","isodate","locale","formatStyle","month","day","year","date","Intl","DateTimeFormat","aSorted","bSorted","toRad","_coords","lon1","_coords2","lon2","deltaLat","deltaLon","haversineFormula","plansText","project_types","query_text","plans_only","arr","_ref$lazy","srcSet","convert","projection","convertToMercator","convertToWgs84","newCoord","lonLat","MAXEXTENT","xy","atan","exp","toMercator","toWgs84","_leaflet","_core","MarkerClusterLayer","createLayerComponent","markerClusterGroup","showCoverageOnHover","createElementObject","extendContext","layerContainer","updateGridLayer","rhumbBearing","rhumbDistance","center__default","turfBBox__default","rhumbBearing__default","rhumbDistance__default","transformScale","factor","originIsPoint","isPoint","defineOrigin","originalDistance","newDistance","ab","crossProduct","intersection","isParallel","scalarMult","intersectSegments","lineOffset","lineOffsetFeature","offsetDegrees","lengthToDegrees","finalCoords","out1x","out2x","out1y","out2y","processSegment","seg2Coords","KMEANS","dataset","assignments","centroids","run","randomCentroid","change","centroidId","mean","maxDim","dim","getClusters","maxId","closestCentroid","argmin","clusters","pointId","MAX_VALUE","diff","_MapPopup","_FetchItemsProvider","translations","getVotes","countText","getComments","getLikes","getDislikes","support","detailsStr","Ratings","positive_rating_count","negative_rating_count","Support","VoteCount","vote_count","CommentCount","comment_count","_fetchedItemsReturn$r","_fetchedItemsReturn$r2","_fetchedItemsReturn$r3","fetchedItemsReturn","useFetchedItems","viewRates","permissions","view_rate_count","viewSupport","view_support_count","viewVoteCount","view_vote_count","MapPopup","_Alert","dontForget","projectsNotShown","shouldShow","setShouldShow","alertAttribute","point_to_line_distance_1","object_assign_1","defaultParseOptions","decodeValues","silent","isForbiddenKey","createNullObj","isNonEmptyString","parseString","setCookieValue","nameValuePairStr","nameValueArr","parseNameValuePair","sides","trimLeft","sch","cookiesString","ch","lastComma","nextStart","cookiesSeparatorFound","cookiesStrings","skipWhitespace","notSpecialChar","URIError","lineIntersects","line1StartX","line1StartY","line1EndX","line1EndY","line2StartX","line2StartY","line2EndX","line2EndY","denominator","numerator2","onLine1","onLine2","featureIn","modal","setModal","_Modal","modalTitleText","modalMessageText","buttonText","modalButtonText","onConfirm","encodedNext","alertTitleText","alertMessageText","Icon","saveText","viewText","CreateSearchProfileButton","_useCreateSearchProfile","limitText","savingText","_useCreateSearchProfi","useCreateSearchProfile","createSearchProfile","DBSCAN","OPTICS","GetIntrinsic","$indexOf","allowMissing","intrinsic","getPolyfill","define","polyfill","_client","_ProjectsListMapBox","selectedDistrict","selectedTopic","createRoot","StrictMode","boolean_intersects_1","cellWidthDeg","cellHeightDeg","rows","column","row","cellPoly","wasNegativeDistance","lambda1","theta","calculateRhumbDestination","turfJsts","d3Geo","bufferFeature","multiBuffered","rotation","geoAzimuthalEquidistant","rotate","defineProjection","projected","projectCoords","GeoJSONReader","BufferOp","bufferOp","coordsIsNaN","GeoJSONWriter","write","unprojectCoords","proj","invert","area","area__default","isects","filterFn","useSpatialIndex","seen","allEdgesAsRbushTreeItems","ring0","edge0","rbushTreeItem","ringA","edgeA","bboxIsect","ring1","edge1","ifIsectAddToOutput","frac0","frac1","start0","end0","start1","end1","isect","equalArrays","array1","array2","simplepolygon","numRings","equalArrays$1","isUnique","numvertices","selfIsectsData","numSelfIsect","outputFeatureArray","winding","windingOfRing","determineParents","setNetWinding","pseudoVtxListByRingAndEdge","isectList","PseudoVtx","modulo","Isect","numIsect","allIsectsAsIsectRbushTreeItem","isectRbushTree","coordToFind","IsectRbushTreeItemFound","nxtIsectAlongEdgeIn","nxtIsectAlongRingAndEdge2","ringAndEdge1","ringAndEdgeIn","nxtIsectAlongRingAndEdge1","leftIsect","isectAfterLeftIsect","isectBeforeLeftIsect","windingAtIsect","isConvex","popped","startIsect","currentOutputRingParent","currentOutputRingWinding","currentOutputRing","currentOutputRingCoords","currentIsect","ringAndEdge1Walkable","walkingRingAndEdge","nxtIsect","ringAndEdge2","nxtIsectInQueue","ringAndEdge2Walkable","pushing","netWinding","featuresWithoutParent","parentArea","setNetWindingOfChildren","ParentNetWinding","ringAndEdgeOut","righthanded","leftVtx","unkinkPolygon","distance_weight_1","y_1","inputField","feaProperties","yMean","yVar","y_2","variance","weightSum","s2","subS2","moranIndex","expectedMoranIndex","vNorm","stdNorm","zNorm","hasSymbols","defineDataProperty","predicate","predicates","_GeoJsonMarker","tileRef","markerElementRef","popupId","slug","announcePopup","liveRegion","textContent","eventHandlers","popupopen","_ref$current3","_ref$current","_ref$current$getEleme","markerElement","setIcon","makeIcon","getElement","popupclose","_ref$current4","_markerElementRef$cur","_ref$current2","_ref$current2$getElem","maxWidth","minWidth","quickselect","quickselectStep","defaultCompare","sd","swap","tmp","Spline","duration","sharpness","centers","controls","stepLength","dz","cacheSteps","mindist","laststep","vector","speed","time","t2","c1","c2","t3","bezier","MarkerClusterGroup","FeatureGroup","extend","maxClusterRadius","iconCreateFunction","clusterPane","Marker","pane","spiderfyOnEveryZoom","spiderfyOnMaxZoom","zoomToBoundsOnClick","singleMarkerMode","disableClusteringAtZoom","removeOutsideVisibleBounds","animate","animateAddingMarkers","spiderfyShapePositions","spiderfyDistanceMultiplier","spiderLegPolylineOptions","opacity","chunkedLoading","chunkInterval","chunkDelay","chunkProgress","polygonOptions","Util","_defaultIconCreateFunction","_featureGroup","featureGroup","addEventParent","_nonPointGroup","_inZoomAnimation","_needsClustering","_needsRemoving","_currentShownBounds","_childMarkerEventHandlers","_childMarkerDragStart","_childMarkerMoved","_childMarkerDragEnd","DomUtil","TRANSITION","_withAnimation","_noAnimation","_markerCluster","MarkerCluster","MarkerClusterNonAnimated","addLayer","layer","LayerGroup","addLayers","getLatLng","fire","hasLayer","_unspiderfy","_addLayer","_maxZoom","_topClusterLevel","_recalculateBounds","_refreshClustersIcons","visibleLayer","currentZoom","_zoom","__parent","_animationAddLayer","_animationAddLayerNonAnimated","removeLayer","removeLayers","_unspiderfyLayer","_removeLayer","clusterShow","_arraySplice","latlng","_latlng","layersArray","skipLayerAddEvent","fg","npg","chunked","originalArray","started","_extractNonGroupLayers","getChildCount","getAllChildMarkers","otherMarker","_recursivelyAddChildrenToMap","needsClustering","tail","layersArray2","l2","clearLayers","_gridClusters","_gridUnclustered","_noanimationUnspiderfy","eachLayer","marker","_generateInitialClusters","LatLngBounds","_bounds","thisNeedsRemoving","needsRemoving","getLayers","layers","getLayer","stamp","anArray","_group","zoomToShowLayer","showMarker","_icon","spiderfy","panTo","zoomToBounds","getMaxZoom","addTo","_maxLat","crs","MAX_LATITUDE","newlatlng","_getExpandedVisibleBounds","_zoomEnd","_moveEnd","_spiderfierOnAdd","_bindEvents","_unbindEvents","_mapPane","_spiderfierOnRemove","_hideCoverage","getVisibleParent","vMarker","_removeFromGridUnclustered","gridUnclustered","minZoom","getMinZoom","removeObject","__dragStart","_ignoreMove","isPopupOpen","_popup","isOpen","_moveChild","oldLatLng","openPopup","dragStart","removeFromDistanceGrid","dontUpdateMap","gridClusters","_markers","_childCount","_boundsNeedUpdate","_cLatLng","addObject","_childClusters","_iconNeedsUpdate","_isOrIsParent","oel","propagate","originalEvent","relatedTarget","listens","childCount","DivIcon","iconSize","_zoomOrSpiderfy","_showCoverage","bottomCluster","_container","_shownPolygon","_spiderfied","getConvexHull","_mergeSplitClusters","_recursivelyRemoveChildrenFromMap","radiusFn","zoom","DistanceGrid","markerPoint","_overrideMarkerIcon","closest","getNearObject","_addChild","newCluster","lastParent","_updateIcon","_enqueue","_queueTimeout","_processQueue","mapZoom","_animationStart","_animationZoomIn","_animationZoomOut","Browser","mobile","_checkBoundsMaxLat","pad","_mapBoundsInfinite","maxLat","getNorth","_northEast","getSouth","_southWest","_addToMap","group","include","LatLng","previousZoomLevel","newZoomLevel","_recursively","startPos","_isSingleParent","clusterHide","_forceLayout","_recursivelyBecomeVisible","_recursivelyRestoreChildPositions","_animationEnd","_animationZoomOutSingle","me","_setPos","latLngToLayerPoint","_recursivelyAnimateChildrenInAndAddSelfToMap","setLatLng","falseFn","storageArray","ignoreDraggedMarker","fitBoundsOptions","childClusters","boundsZoom","getBoundsZoom","getZoom","newClusters","createIcon","_iconObj","createShadow","new1","isNotificationFromChild","_setClusterCenter","_resetBounds","childLatLng","latSum","lngSum","totalCount","_wLatLng","_backupLatlng","_recursivelyAnimateChildrenIn","cm","mapMinZoom","zoomLevel","nm","_restorePosition","previousBounds","exceptBounds","boundsToApplyTo","zoomLevelToStart","zoomLevelToStop","runAtEveryLevel","runAtBottomLevel","backup","setOpacity","cellSize","_cellSize","_sqCellSize","_grid","_objectPoint","_getCoord","grid","updateObject","eachObject","objectPoint","closestDistSq","_sqDist","QuickHull","getDistant","cpt","bl","vY","findMostDistantPointFromBaseLine","baseLine","latLngs","maxD","maxPt","maxPoint","buildConvexHull","convexHullBaseLines","minLat","maxLng","minLng","maxLatPt","minLatPt","maxLngPt","minLngPt","minPt","childMarkers","_2PI","_circleFootSeparation","_circleStartAngle","_spiralFootSeparation","_spiralLengthStart","_spiralLengthFactor","_circleSpiralSwitchover","_generatePointsSpiral","_generatePointsCircle","_animationSpiderfy","unspiderfy","zoomDetails","_animationUnspiderfy","centerPt","legLength","angleStep","_round","separation","lengthFactor","_preSpiderfyLatlng","setZIndexOffset","_spiderLeg","leg","newPos","legOptions","layerPointToLatLng","Polyline","legPath","thisLayerLatLng","thisLayerPos","svg","Path","SVG","finalLegOpacity","_path","getTotalLength","strokeDasharray","strokeDashoffset","setStyle","nonAnimatable","_latLngToNewLayerPoint","closePopup","stillThereChildCount","_unspiderfyWrapper","zoomAnimation","_unspiderfyZoomStart","touch","getRenderer","_unspiderfyZoomAnim","hasClass","refreshClusters","_layers","_flagParentsIconsNeedUpdate","_refreshSingleMarkerModeMarkers","refreshIconOptions","directlyRefreshClusters","factory","scale__default","pathTo","curr","astar","graph","cleanDirty","heuristic","heuristics","manhattan","openHeap","BinaryHeap","closestNode","neighbors","il","neighbor","isWall","gScore","getCost","beenVisited","markDirty","rescoreElement","pos0","pos1","diagonal","D2","cleanNode","Graph","gridIn","nodes","GridNode","scoreFunction","shortestPath","resolution","minDistance","obstacles","startCoord","endCoord","collection","box","bboxHorizontalSide","bboxVerticalSide","deltaX","pointMatrix","matrix","closestToStart","closestToEnd","minDistStart","minDistEnd","matrixRow","pointMatrixRow","isInsideObstacle","isInside","distStart","distEnd","startOnMatrix","endOnMatrix","dirtyNodes","ret","rowDebug","graphString","fromNeighbor","sinkDown","bubbleUp","parentN","elemScore","child1Score","child2N","child1N","child1","child2","EvalError","sym","symObj","syms","rbush_1","inProperty","outProperty","rtree","treeItems","potentialPoints","polygon_clipping_1","poly1","poly2","unioned","hasDescriptors","functionsHaveConfigurableNames","getProto","regex","xSum","ySum","propIsEnumerable","test1","test2","test3","shouldUseNative","symbols","toObject","_useCombobox2","liClassName","comboboxClassName","_ref$defaultValue","_useCombobox","useCombobox","isMultiple","opened","labelId","activeItems","listboxAttrs","comboboxAttrs","getChoicesAttr","classes","comboboxClasses","choiceAttrs","liClasses","focused","appendClass","parseValue","newClass","isStandardArguments","isLegacyArguments","supportsStandardArguments","maskPolygon","world","createMask","polygonOuters","createGeomFromPolygonClippingOutput","contour","_reactBootstrapTypeahead","suggestionsText","resultsText","typeaheadPlaceholder","suggestionCount","setSuggestionCount","setInputValue","typeaheadRef","tag","outField","Node_1","Edge_1","EdgeRing_1","fromGeoJson","geoJson","validateGeoJson","featureOf","coordReduce","getNode","addEdge","buildId","symetricEdge","getSymetric","deleteDangles","_removeIfDangle","innerEdges","outerNodes","getOuterEdges","removeNode","deleteCutEdges","_computeNextCWEdges","_findLabeledEdgeRings","symetric","removeEdge","getOuterEdge","_computeNextCCWEdges","firstOutDE","prevInDE","de","outDE","inDE","edgeRingStarts","isEqual","getEdgeRings","_findIntersectionNodes","edgeRingList","_findEdgeRing","startEdge","intersectionNodes","_loop_1","degree","edgeRing","deleteEdge","cellTriangle1","cellTriangle2","hexGrid","pointGrid","squareGrid","triangleGrid","hexGrid__default","pointGrid__default","squareGrid__default","triangleGrid__default","gridType","gridFeature","zw","sw","zValue","gridPoint","newFeature","util_1","envelope_1","EdgeRing","isHole","hiIndex","high","iPrev","iNext","disc","toMultiPoint","toPolygon","getEnvelope","findEdgeRingContaining","testEdgeRing","shellList","minEnvelope","minShell","testEnvelope","shell","tryEnvelope","testEdgeRingCoordinates","testPoint","testEdgeRingCoordinates_1","Mt","root_","size_","array_","It","addAll","trunc","interfaces_","getClass","equalsWithTolerance","doubleToLongBits","longBitsToDouble","isInfinite","NULL_ORDINATE","DimensionalComparator","serialVersionUID","Z","setOrdinate","equals2D","getOrdinate","equals3D","equalInZ","compareTo","distance3D","hashCode","setCoordinate","_dimensionsToTest","INTERIOR","BOUNDARY","EXTERIOR","NONE","toLocationSymbol","LOG_10","log10","clamp","wrap","average","setCharAt","substr","intValue","isWhitespace","_hi","_lo","TWO_PI","PI_2","EPS","SPLIT","MAX_PRINT_DIGITS","TEN","ONE","SCI_NOT_EXPONENT_CHAR","SCI_NOT_ZERO","le","extractSignificantDigits","magnitude","divide","gt","lt","subtract","selfAdd","sqr","doubleValue","negate","isZero","selfSubtract","getSpecialNumberString","selfDivide","dump","createNaN","ge","selfMultiply","reciprocal","rint","setValue","isNegative","selfSqr","toStandardNotation","toSciNotation","stringOfChar","isPositive","signum","isDigit","DP_SAFE_EPSILON","orientationIndexFilter","signOfDet2x2","getCoordinate","getCoordinateCopy","getDimension","getX","expandEnvelope","getY","toCoordinateArray","arraycopy","getProperty","_minx","_maxx","_miny","_maxy","getArea","getWidth","getHeight","isNull","getMaxX","getMaxY","getMinX","getMinY","covers","expandToInclude","minExtent","setToNull","maxExtent","expandBy","centre","typeStr","emptyTypeStr","spaces","parenComma","doubleParenComma","trimParens","K","geometryFactory","_e","getGeometryType","J","isEmpty","coordinate","_coordinates","multipoint","_geometries","_points","linearring","multilinestring","_shell","_holes","multipolygon","geometrycollection","createPoint","createMultiPoint","createLineString","createLinearRing","createMultiLineString","createPolygon","createMultiPolygon","createGeometryCollection","parser","toLineString","$","tt","et","shouldNeverReachHere","isTrue","nt","_result","_inputLines","_intPt","_intLineIndex","_isProper","_pa","_pb","_precisionModel","DONT_INTERSECT","DO_INTERSECT","COLLINEAR","NO_INTERSECTION","POINT_INTERSECTION","COLLINEAR_INTERSECTION","getIndexAlongSegment","computeIntLineIndex","getTopologySummary","isEndPoint","isCollinear","computeIntersection","computeIntersect","getIntersectionNum","getEdgeDistance","isProper","hasIntersection","setPrecisionModel","isInteriorIntersection","getIntersection","computeEdgeDistance","getEndpoint","isIntersection","getIntersectionAlongSegment","nonRobustComputeEdgeDistance","rt","isInSegmentEnvelopes","at","normalizeToMinimum","smallestInAbsValue","safeHCoordinateIntersection","nearestEndpoint","intersectionWithNormalization","makePrecise","checkDD","println","normalizeToEnvCentre","computeCollinearIntersection","distancePointLine","ot","st","_p","_crossingCount","_isPointOnSegment","countSegment","isPointInPolygon","isOnSegment","locatePointInRing","ut","CLOCKWISE","RIGHT","COUNTERCLOCKWISE","LEFT","STRAIGHT","signedArea","distanceLineLine","isPointInRing","computeLength","isCCW","computeOrientation","distancePointLinePerpendicular","isOnLine","ct","_envelope","_factory","_SRID","_userData","getSRID","SORTINDEX_POINT","SORTINDEX_MULTIPOINT","SORTINDEX_LINESTRING","SORTINDEX_LINEARRING","SORTINDEX_MULTILINESTRING","SORTINDEX_POLYGON","SORTINDEX_MULTIPOLYGON","SORTINDEX_GEOMETRYCOLLECTION","geometryChangedFilter","isGeometryCollection","getSortIndex","getFactory","getGeometryN","isRectangle","equalsTopo","equalsExact","geometryChanged","geometryChangedAction","equalsNorm","norm","getLength","getNumGeometries","compareToSameClass","getUserData","toGeometry","getEnvelopeInternal","checkNotGeometryCollection","getPrecisionModel","computeEnvelopeInternal","setSRID","setUserData","hasNext","isGeometryCollectionOrDerived","hasNonEmptyElements","hasNullElements","ht","ft","dt","Mod2BoundaryNodeRule","EndPointBoundaryNodeRule","MultiValentEndPointBoundaryNodeRule","MonoValentEndPointBoundaryNodeRule","MOD2_BOUNDARY_RULE","ENDPOINT_BOUNDARY_RULE","MULTIVALENT_ENDPOINT_BOUNDARY_RULE","MONOVALENT_ENDPOINT_BOUNDARY_RULE","OGC_SFS_BOUNDARY_RULE","isInBoundary","yt","mt","vt","toArray","Et","xt","Nt","ensureCapacity","Ct","arrayList_","position_","St","coordArrayType","closeRing","Lt","bt","ForwardComparator","BidirectionalComparator","wt","Ot","isRing","ptNotInList","hasRepeatedPoints","removeRepeatedPoints","removeNull","copyDeep","isEqualReversed","atLeastNCoordinatesOrNothing","increasingDirection","minCoordinate","OLDcompare","Tt","put","entrySet","Rt","Pt","Dt","hashSet_","getValue","fixAfterInsertion","rotateLeft","rotateRight","getFirstEntry","successor","At","Ft","treeSet_","Gt","asList","qt","Bt","FALSE","TRUE","DONTCARE","SYM_FALSE","SYM_TRUE","SYM_DONTCARE","SYM_P","SYM_L","SYM_A","toDimensionSymbol","toDimensionValue","Vt","Ut","isDone","isGeometryChanged","zt","getCoordinates","getNumPoints","isEquivalentClass","getBoundaryDimension","getBoundary","Xt","isClosed","Yt","_geom","_geomFact","_bnRule","_endpointMap","boundaryMultiLineString","getEmptyMultiPoint","computeBoundaryCoordinates","createMultiPointFromCoords","Kt","boundaryLineString","getStartPoint","getEndPoint","addEndpoint","getCoordinateN","kt","jt","Ht","NEWLINE","SIMPLE_ORDINATE_FORMAT","chars","getStackTrace","printStackTrace","readLine","Wt","copyCoord","ensureValidRing","createClosedRing","isSimple","getPointN","getCoordinateSequence","getCoordinateSequenceFactory","isCoordinate","Jt","Qt","Zt","$t","getNumInteriorRing","getExteriorRing","getInteriorRingN","te","ee","validateConstruction","MINIMUM_VALID_SIZE","ne","ie","_isUserDataCopied","re","NoOpGeometryOperation","CoordinateOperation","CoordinateSequenceOperation","setCopyUserData","edit","editInternal","editGeometryCollection","editPolygon","getName","GeometryEditorOperation","oe","se","ae","editCoordinates","ue","_dimension","ce","pe","instanceObject","readResolve","he","map_","fe","_modelType","_scale","FLOATING","FIXED","setScale","maximumPreciseValue","getMaximumSignificantDigits","getScale","isFloating","FLOATING_SINGLE","mostPrecise","nameToTypeMap","ye","Type","_coordinateSequenceFactory","getDefaultCoordinateSequenceFactory","buildGeometry","toGeometryArray","toPolygonArray","toLineStringArray","toPointArray","createGeometry","toMultiPolygonArray","toMultiLineStringArray","toMultiPointArray","toLinearRingArray","createPointFromInternalCoord","ve","Ie","Ee","xe","Feature","FeatureCollection","Ne","precisionModel","reducePrecision","Ce","Se","Le","ON","opposite","be","_minIndex","_minCoord","_minDe","_orientedDe","getRightmostSide","getRightmostSideOfSegment","checkForRightmostCoordinate","findRightmostEdgeAtVertex","getEdge","findRightmostEdgeAtNode","getEdges","getRightmostEdge","isForward","getSym","findEdge","we","msgWithCoord","Oe","addLast","removeFirst","Te","_finder","_dirEdgeList","_nodes","_rightMostCoord","_env","clearVisitedEdges","setVisited","getRightmostCoordinate","computeNodeDepth","isVisited","computeDepths","copySymDepths","computeDepth","setEdgeDepths","addReachable","findResultEdges","getDepth","isInteriorAreaEdge","setInResult","setDepth","getNodes","getDirectedEdges","Re","setAllLocations","setAllLocationsIfNull","isLine","getLocations","setLocations","isArea","isAnyNull","setLocation","isEqualOnSide","allPositionsEqual","Pe","elt","getGeometryCount","toLine","toLineLabel","De","_startDe","_maxNodeDegree","_edges","_pts","_label","_ring","_isHole","_geometryFactory","computePoints","computeRing","isIsolated","getEdgeRing","getLabel","mergeLabel","addPoints","setEdgeRing","getNext","getLinearRing","computeMaxNodeDegree","getOutgoingDegree","containsPoint","addHole","isShell","getMaxNodeDegree","getShell","setShell","Me","setMinEdgeRing","getNextMin","Ae","buildMinimalRings","getMinEdgeRing","linkDirectedEdgesForMinimalEdgeRings","linkMinimalDirectedEdges","Fe","_isInResult","_isCovered","_isCoveredSet","_isVisited","isCovered","isCoveredSet","setLabel","setCovered","updateIM","computeIM","isInResult","Ge","_coord","isIncidentEdgeInResult","print","computeMergedLocation","setNode","setLabelBoundary","qe","nodeMap","nodeFact","addNode","createNode","getBoundaryNodes","Be","Ve","NE","NW","SW","SE","isNorthern","isOpposite","commonHalfPlane","isInHalfPlane","quadrant","Ue","_edge","_node","_p0","_p1","_dx","_dy","_quadrant","compareDirection","getDy","getDirectedCoordinate","getDx","getQuadrant","computeLabel","ze","_isForward","_sym","_next","_nextMin","_edgeRing","_minEdgeRing","_depth","computeDirectedLabel","setNextMin","getDepthDelta","isLineEdge","printEdge","printReverse","setSym","setVisitedEdge","setNext","depthFactor","Xe","Ye","_edgeEndList","printEdges","eiList","getNodeIterator","linkResultDirectedEdges","debugPrintln","isBoundaryNode","linkAllDirectedEdges","matchInSameDirection","getEdgeEnds","debugPrint","getEdgeIterator","findEdgeInSameDirection","insertEdge","findEdgeEnd","addEdges","ke","_shellList","sortShellsAndHoles","computePolygons","placeFreeHoles","buildMinimalEdgeRings","findShell","placePolygonHoles","buildMaximalEdgeRings","getPolygons","je","He","_item","We","_size","_items","poll","reorder","Ke","visitItem","Je","Qe","_childBoundables","_level","Ze","getLevel","getChildBoundables","addChildBoundable","computeBounds","$e","reverseOrder","singletonList","tn","_boundable1","_boundable2","_distance","_itemDistance","expandToQueue","isComposite","expand","isLeaves","getDistance","getBoundable","en","_root","_built","_itemBoundables","_nodeCapacity","DEFAULT_NODE_CAPACITY","nn","IntersectsOp","getNodeCapacity","lastNode","itemsTree","boundablesAtLevel","getIntersectsOp","createHigherLevels","getRoot","createParentBoundables","depth","getComparator","compareDoubles","rn","sn","STRtreeNode","xComparator","yComparator","intersectsOp","createParentBoundablesFromVerticalSlices","createParentBoundablesFromVerticalSlice","an","verticalSlices","nearestNeighbour","centreX","avg","centreY","un","relativeSign","compareValue","ln","_segString","segmentIndex","_segmentOctant","_isInterior","isInterior","cn","_nodeMap","getSplitCoordinates","addEndpoints","addEdgeCoordinates","addCollapsedNodes","findCollapsesFromInsertedNodes","findCollapsesFromExistingVertices","addSplitEdges","createSplitEdge","findCollapseIndex","gn","getData","getSegmentOctant","checkSplitEdgesCorrectness","pn","octant","hn","setData","addIntersection","_nodeList","safeOctant","addIntersectionNode","getNodeList","addIntersections","getNodedSubstrings","dn","p0","yn","projectionFactor","distancePerpendicular","closestPoints","closestPoint","lineIntersection","pointAlongOffset","setCoordinates","segmentFraction","pointAlong","_n","tempEnv1","tempEnv2","_overlapSeg1","_overlapSeg2","getLineSegment","mn","_start","_end","_id","computeSelect","select","computeOverlaps","computeOverlapsInternal","setId","getEndIndex","getStartIndex","getId","vn","getChainStartIndices","findChainEnd","toIntArray","getChains","In","computeNodes","En","_segInt","setSegmentIntersector","xn","_monoChains","_index","_idCounter","_nodedSegStrings","_nOverlaps","SegmentOverlapAction","getMonotoneChains","intersectChains","Nn","_si","processIntersections","Cn","_quadrantSegments","DEFAULT_QUADRANT_SEGMENTS","_endCapStyle","CAP_ROUND","_joinStyle","JOIN_ROUND","_mitreLimit","DEFAULT_MITRE_LIMIT","_isSingleSided","_simplifyFactor","DEFAULT_SIMPLIFY_FACTOR","setQuadrantSegments","setEndCapStyle","setJoinStyle","setMitreLimit","Sn","CAP_FLAT","CAP_SQUARE","JOIN_MITRE","JOIN_BEVEL","getEndCapStyle","isSingleSided","getJoinStyle","setSimplifyFactor","getSimplifyFactor","getQuadrantSegments","getMitreLimit","setSingleSided","bufferDistanceError","Ln","_distanceTol","_isDeleted","_angleOrientation","_inputLine","bn","INIT","DELETE","KEEP","NUM_PTS_TO_CHECK","isDeletable","isConcave","isShallow","isShallowSampled","deleteShallowConcavities","findNextNonDeletedIndex","isShallowConcavity","collapseLine","wn","_ptList","_minimimVertexDistance","On","COORDINATE_ARRAY_TYPE","addPt","isRedundant","revere","addPts","setMinimumVertexDistance","Tn","Rn","PI_TIMES_2","PI_OVER_2","PI_OVER_4","toDegrees","isAcute","isObtuse","interiorAngle","normalizePositive","angleBetween","toRadians","getTurn","angleBetweenOriented","Pn","_maxCurveSegmentError","_filletAngleQuantum","_closingSegLengthFactor","_segList","_bufParams","_li","_s0","_s1","_s2","_seg0","_seg1","_offset0","_offset1","_side","_hasNarrowConcaveAngle","MAX_CLOSING_SEG_LEN_FACTOR","Dn","OFFSET_SEGMENT_SEPARATION_FACTOR","INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR","CURVE_VERTEX_SNAP_DISTANCE_FACTOR","addNextSegment","computeOffsetSegment","addCollinear","addOutsideTurn","addInsideTurn","addLineEndCap","addFilletArc","addMitreJoin","addLimitedMitreJoin","addFilletCorner","addBevelJoin","createSquare","addSegments","addFirstSegment","addLastSegment","initSideSegments","createCircle","hasNarrowConcaveAngle","Mn","getOffsetCurve","getSegGen","computePointCurve","computeOffsetCurve","computeSingleSidedBufferCurve","simplifyTolerance","computeRingBufferCurve","computeLineBufferCurve","getLineCurve","getBufferParameters","getRingCurve","copyCoordinates","An","_subgraphs","_seg","_cga","Fn","DepthSegment","findStabbedSegments","Gn","_leftDepth","_upwardSeg","compareX","qn","interpolateZ","longestSideLength","circumcentre","area3D","inCentre","perpendicularBisector","angleBisector","Bn","_inputGeom","_curveBuilder","_curveList","addPoint","addCurve","addPolygon","isErodedCompletely","addPolygonRing","isTriangleErodedCompletely","addLineString","getCurves","addCollection","Vn","locate","Un","_parent","_atStart","_subcollectionIterator","isAtomic","zn","containsPointInPolygon","Xn","_edgeMap","_edgeList","_ptInAreaLocation","getNextCW","propagateSideLabels","isAreaLabelsConsistent","computeEdgeEndLabels","getBoundaryNodeRule","checkAreaLabelsConsistent","getGeometry","computeLabelling","getDegree","insertEdgeEnd","Yn","_resultAreaEdgeList","_SCANNING_FOR_INCOMING","_LINKING_TO_OUTGOING","getResultAreaEdges","updateLabelling","mergeSymLabels","findCoveredLineEdges","kn","jn","_orientation","orientation","compareOriented","Hn","_ocaMap","findEdgeIndex","findEqualEdge","Wn","Kn","_hasIntersection","_hasProper","_hasProperInterior","_hasInterior","_properIntersectionPoint","_isSelfIntersection","numIntersections","numInteriorIntersections","numProperIntersections","numTests","isTrivialIntersection","isAdjacentSegments","getProperIntersectionPoint","hasProperInteriorIntersection","getLineIntersector","hasProperIntersection","hasInteriorIntersection","Jn","getSegmentIndex","Qn","ni","Zn","$n","computeIntersectsForChain","getStartIndexes","computeIntersects","ti","NULL_VALUE","ei","getDelta","depthAtLocation","_mce","_isIsolated","_depthDelta","getCollapsedEdge","setIsolated","setName","isCollapsed","getMaximumSegmentIndex","getMonotoneChainEdge","isPointwiseEqual","setDepthDelta","getEdgeIntersectionList","setAtLeastIfValid","_workingPrecisionModel","_workingNoder","_graph","setWorkingPrecisionModel","insertUniqueEdge","depthDelta","buildSubgraphs","createSubgraphs","createEmptyResultGeometry","getNoder","computeNodedEdges","setNoder","convertSegStrings","ri","_noder","_scaleFactor","_offsetX","_offsetY","_isScaled","isIntegerPrecision","rescale","oi","_segStrings","si","fact","checkEndPtVertexIntersections","checkInteriorIntersections","checkValid","checkCollapses","checkCollapse","ai","_pt","_originalPt","_ptScaled","_p0Scaled","_p1Scaled","_corner","_safeEnv","initCorners","ui","SAFE_ENV_EXPANSION_FACTOR","intersectsScaled","intersectsToleranceSquare","copyScaled","getSafeEnvelope","intersectsPixelClosure","addSnappedNode","li","selectedSegment","ci","HotPixelSnapAction","snap","hi","isNodeAdded","_hotPixel","_parentEdge","_hotPixelVertexIndex","_isNodeAdded","fi","_interiorIntersections","getInteriorIntersections","gi","_pm","_pointSnapper","checkCorrectness","snapRound","findInteriorIntersections","computeIntersectionSnaps","computeVertexSnaps","di","_argGeom","_resultGeometry","_saveException","CAP_BUTT","MAX_PRECISION_DIGITS","bufferFixedPrecision","bufferReducedPrecision","precisionScaleFactor","computeGeometry","bufferOriginalPrecision","getResultGeometry","_isNull","setMinimum","setMaximum","mi","computeDistance","vi","_maxPtDist","Ii","MaxPointDistanceFilter","MaxMidpointDistanceFilter","computeMaxMidpointDistance","getMaxPointDistance","computeMaxVertexDistance","Ei","findDistance","getDistancePoints","_minPtDist","Ni","_comps","Ci","_lines","_isForcedToLineString","setForceToLineString","getLines","Si","_boundaryRule","_isIn","_numBoundaries","locateInternal","locateInPolygonRing","updateLocationInfo","computeLocation","Li","_component","_segIndex","INSIDE_AREA","bi","isInsideArea","getGeometryComponent","wi","getPoints","Oi","_locations","Ti","_terminateDistance","_ptLocator","_minDistanceLocation","_minDistance","computeContainmentDistance","computeMinDistanceLinesPoints","computeMinDistance","computeFacetDistance","computeMinDistanceLines","updateMinDistance","computeMinDistancePoints","nearestLocations","nearestPoints","isWithinDistance","Ri","Pi","Di","_g0","_g1","_ptDist","_densifyFrac","Mi","MaxDensifiedByFractionDistanceFilter","setDensifyFraction","compute","computeOrientedDistance","Ai","Fi","orientedDistance","_euclideanDist","_numSubSegs","Gi","_minValidDistance","_maxValidDistance","_minDistanceFound","_maxDistanceFound","_isValid","_errMsg","_errorLocation","_errorIndicator","_input","_bufDistance","qi","VERBOSE","MAX_DISTANCE_DIFF_FRAC","checkMaximumDistance","checkPositiveValid","checkNegativeValid","getPolygonLines","checkMinimumDistance","getErrorIndicator","getErrorLocation","getErrorMessage","Bi","_errorMsg","Vi","MAX_ENV_DIFF_FRAC","checkPolygonal","checkExpectedEmpty","checkEnvelope","checkArea","checkDistance","report","isValidMsg","Ui","zi","_findAllIntersections","_isCheckEndSegmentsOnly","_interiorIntersection","_intSegments","_intersections","_intersectionCount","_keepIntersections","getInteriorIntersection","setCheckEndSegmentsOnly","getIntersectionSegments","getIntersections","setFindAllIntersections","setKeepIntersections","isEndSegment","createAllIntersectionsFinder","createAnyIntersectionFinder","createIntersectionCounter","Xi","execute","computeIntersections","Yi","_nv","toSegmentStrings","ki","_mapOp","ji","_op","_lineEdgesList","_resultLineList","collectLines","getGraph","collectLineEdge","collectBoundaryTouchEdge","labelIsolatedLine","getArgGeometry","buildLines","Lr","isResultOfOp","isCoveredByA","labelIsolatedLines","INTERSECTION","Hi","_resultPointList","filterCoveredNodeToPoint","isCoveredByLA","extractNonCoveredResultNodes","Wi","_pruneEmptyGeometry","_preserveGeometryCollectionType","_preserveCollections","_preserveType","transformPoint","transformCoordinates","transformPolygon","transformLinearRing","createCoordinateSequence","getInputGeometry","transformMultiLineString","transformLineString","transformMultiPoint","transformMultiPolygon","transformGeometryCollection","Ki","_snapTolerance","_srcPts","_allowSnappingToSourceVertices","_isClosed","snapVertices","findSnapForVertex","snapTo","snapSegments","findSegmentIndexToSnap","setAllowSnappingToSourceVertices","Ji","_srcGeom","Qi","SNAP_PRECISION_FACTOR","extractTargetCoordinates","Zi","snapToSelf","computeSnapTolerance","computeMinimumSegmentLength","computeOverlaySnapTolerance","computeSizeBasedSnapTolerance","_snapPts","_isSelfSnap","snapLine","$i","_isFirst","_commonMantissaBitsCount","_commonBits","_commonSignExp","getCommon","signExpBits","numCommonMostSigMantissaBits","zeroLowerBits","toBinaryString","getBit","tr","_commonCoord","_ccFilter","nr","er","CommonCoordinateFilter","Translater","addCommonBits","ir","removeCommonBits","getCommonCoordinate","_commonBitsX","_commonBitsY","trans","rr","_cbr","selfSnap","prepareResult","overlayOp","UNION","symDifference","SYMDIFFERENCE","DIFFERENCE","or","sr","mce","chainIndex","ar","_xValue","_eventType","_insertEvent","_deleteEventIndex","_obj","INSERT","ur","isDelete","setDeleteEventIndex","getObject","getInsertEvent","isInsert","isSameLabel","getDeleteEventIndex","lr","cr","_includeProper","_recordIsolated","_numIntersections","_bdyNodes","_isDone","_isDoneWhenProperInt","setIsDoneIfProperInt","isBoundaryPointInternal","isBoundaryPoint","setBoundaryNodes","events","nOverlaps","prepareEvents","processOverlaps","hr","fr","NodeComparator","getMin","getMax","gr","dr","yr","_node1","_node2","buildExtent","_r","_leaves","buildTree","buildLevel","buildRoot","printNode","mr","getItems","vr","xr","Ir","SegmentVisitor","IntervalIndexedGeometry","Er","_counter","addLine","Nr","_parentGeom","_lineEdgeMap","_boundaryNodeRule","_useBoundaryDeterminationRule","_argIndex","_boundaryNodes","_hasTooFewPoints","_invalidPoint","_areaPtLocator","insertBoundaryPoint","determineBoundary","computeSelfNodes","createEdgeSetIntersector","addSelfIntersectionNodes","computeSplitEdges","computeEdgeIntersections","hasTooFewPoints","insertPoint","getInvalidPoint","getBoundaryPoints","addSelfIntersectionNode","Cr","_resultPrecisionModel","_arg","setComputationPrecision","Sr","MapOp","_resultGeom","_resultPolyList","cancelDuplicateResultEdges","createEmptyResult","replaceCollapsedEdges","updateNodeLabelling","computeOverlay","insertUniqueEdges","copyPoints","computeLabelsFromDepths","labelIncompleteNodes","findResultAreaEdges","labelIncompleteNode","resultDimension","br","_g","_boundaryDistanceTolerance","_linework","extractLinework","isWithinToleranceOfBoundary","wr","getLinework","Or","_doLeft","_doRight","extractPoints","computeOffsetPoints","setSidesToGenerate","Tr","_locFinder","_location","_invalidLocation","TOLERANCE","_testCoords","computeBoundaryDistanceTolerance","Rr","reportResult","addTestPts","hasLocation","isValidResult","getInvalidLocation","Pr","_geomFactory","_skipEmpty","_inputGeoms","extractFactory","extractElements","combine","createList","Dr","_inputPolys","Mr","STRTREE_NODE_CAPACITY","reduceToGeometries","unionTree","extractByEnvelope","unionOptimized","unionActual","unionUsingEnvelopeIntersection","binaryUnion","unionSafe","repeatedUnion","restrictToPolygons","bufferUnion","Ar","OverlayOp","UnionOp","final","bear","calculateFinalBearing","pointInPolygonFlat","pointInPolygonNested","nested","Adder","temp","adder","bv","av","halfPi","quarterPi","tau","degrees","acos","haversin","streamGeometry","streamGeometryType","streamObjectType","Sphere","sphere","streamLine","streamPolygon","polygonStart","polygonEnd","lambda00","phi00","lambda0","cosPhi0","sinPhi0","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","cartesianNormalizeInPlace","phi0","lambda2","ranges","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","z0","deltaSum","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","normal","inflection","phii","lambdai","antimeridian","rangeCompare","rangeContains","range","deltaMax","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","compose","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","circleStream","cosRadius","sinRadius","circleRadius","rejoin","Intersection","other","compareIntersection","startInside","clip","pointEqual","isSubject","arrays","stop","clipMax","clipMin","clipExtent","visible","a1","corner","comparePoint","ca","x__","y__","v__","x_","y_","v_","clean","activeStream","bufferStream","clipStream","a0","b0","b1","polygonInside","cleanInside","cacheStream","point0","sinPhi1","cosPhi1","absDelta","phiArc","lengthSum","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","containsObjectType","containsGeometry","containsGeometryType","containsLine","containsPolygon","polygonContains","ringRadians","pointRadians","graticuleX","graticuleY","graticule","DX","DY","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","x00","y00","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_radius","pointRadius","_line","_point","closePath","moveTo","lineTo","lengthRing","PathString","_string","projectionStream","contextStream","measure","pointVisible","clipLine","sink","rotatedStart","ringBuffer","ringSink","polygonStarted","pointRing","pointLine","ringSegments","validSegment","_circle","sign0","sign1","sinLambda0Lambda1","clipAntimeridianIntersect","methods","transformer","fitExtent","fitSize","maxDepth","cosMinDistance","delta2","resampleLineTo","c0","a00","b00","c00","resampleStream","ringPoint","resampleNone","transformRadians","projectionMutator","projectAt","projectRotate","preclip","postclip","projectResample","resample","projectTransform","recenter","clipAngle","smallRadius","notHemisphere","two","n1","n2","n2n2","n1n2","determinant","n1xn2","uu","polar","conicProjection","parallels","conicEqualAreaRaw","cylindricalEqualAreaRaw","r0","r0y","conicEqualArea","lower48Point","alaskaPoint","hawaiiPoint","lower48","albers","alaska","hawaii","pointStream","albersUsa","streams","azimuthalRaw","azimuthalInvert","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","gy","nx","gnomonicRaw","scaleTranslate","tx","ty","sx","sy","reflectX","reflectY","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","RouterProvider2","ssrInfo","createHydratedRouter","__reactRouterManifest","__reactRouterRouteModules","importMap","stateDecodingPromise","routerInitialized","initSsrInfo","localSsrInfo","router2","createRoutesForHMR","HydratedRouter","setCriticalCss","createCallServer","createTemporaryReferenceSet","encodeReply","fetchImplementation","globalVar","actionId","__routerActionID","temporaryReferences","Accept","isExternalLocation","hasInvalidProtocol","rerender","lastMatch","createRouteFromServerManifest","renderedRoutesContext","getRSCSingleFetchDataStrategy","hasComponent","dataKey","cause","getFetchAndDecodeViaRSC","renderedRoutesById","renderedRoutes","rendered","RSCHydratedRouter","applyPatchesPromise","lastLoaderData","__routerInitialized","_updateRoutesForHMR","routeUpdateByRouteId","oldRoutes","walkRoutes","routes2","routeUpdate","updatedRoute","createRouterFromPayload","cloneRoutes","diffRoutes","transitionEnabledRouter","callSingleFetch","hasHandler","getManifestUrl","getRSCStream","streamController","handleChunk","__FLIGHT_DATA","readyState","sumXs","sumYs","sumNs","earcut","earcut__default","tesselate","holes","dimensions","holeIndex","flattenCoords","vert","minPts","distanceFunction","_euclideanDistance","noise","_visited","_assigned","_datasetLength","_regionQuery","clusterId","_addToCluster","_expandCluster","pointId2","neighbors2","_mergeArrays","Edge","addOuterEdge","addInnerEdge","removeOuterEdge","removeInnerEdge","cloneFeature","cloned","cloneProperties","cloneGeometry","deepSlice","cloneFeatureCollection","_ProjectTopics","_getTimespan","_ImageWithPlaceholder","copyrightMissingStr","copyrightStr","participationEndedStr","beginsOnStr","participationProjectsStr","participationProjectStr","clockIconLabel","ProjectTile","_project$topics","statusBarProgress","active_phase","future_phase","subtype","ProjectTileIcon","access","tile_image","tile_image_alt_text","tile_image_copyright","getTimespan","published_projects_count","toLocaleDate","convex_1","centerOfMass","pj","translation","sArea","neutralizedPoints","areaFactor","truncateCoords","Graph_1","shells","hole","excludeWrapCoord","stopG","geometryMaybeCollection","wrapShrink","isFeatureCollection","isFeature","geomType","propEach","featureProperties","featureBBox","featureId","previousCoords","previousFeatureIndex","previousMultiIndex","featureIndexCoord","multiPartIndexCoord","currentSegment","lineEach","coordAll","currentFeature","findPoint","findSegment","flattenReduce","currentGeometry","lineReduce","currentLine","propReduce","currentProperties","segmentReduce","__generator","thisArg","sent","trys","ops","verb","op","Node","DEFAULT_COMPARE","splay","comparator","cmp","printRow","isTail","indent","Tree","_comparator","_remove","findStatic","visitor","low","minNode","maxNode","predecessor","toList","presort","loadRecursive","mergedList","mergeLists","sortedListToBST","newKey","newData","middle","l1","isInBbox","ll","getBboxOverlap","b2","lowerX","upperX","epsilon$1","EPSILON","EPSILON_SQ","PtRounder","xRounder","CoordRounder","yRounder","prevNode","nextNode","rounder","resulterrbound","estimate","dotProduct","compareVectorAngles","basePt","endPt1","endPt2","sineOfAngle","pShared","pBase","pAngle","vBase","vAngle","cosineOfAngle","horizontalIntersection","verticalIntersection","intersection$1","kross","SweepEvent","ptCmp","comparePoints","Segment","aPt","bPt","otherEvents","iMax","evt","checkForConsuming","numEvents","evt1","consumedBy","evt2","otherSE","consume","getAvailableLinkedEvents","ringOut","getLeftmostComparator","baseEvent","fillCache","linkedEvent","nextEvent","sine","cosine","asine","acosine","bsine","bcosine","segmentId","alx","leftSE","blx","arx","rightSE","brx","aly","bly","ary","bry","aCmpBLeft","bCmpARight","bCmpALeft","aCmpBRight","windings","fromRing","leftPt","rightPt","cmpPts","replaceRightSE","newRightSE","isAnEndpoint","lPt","rPt","yDist","xFromYDist","xDist","yFromXDist","tBbox","oBbox","bboxOverlap","tlp","trp","olp","orp","touchesOtherLSE","touchesThisLSE","touchesOtherRSE","touchesThisRSE","newEvents","alreadyLinked","newLeftSE","oldRightSE","newSeg","swapEvents","tmpEvt","consumer","consumee","prevInResult","_prevInResult","beforeState","_beforeState","seg","afterState","multiPolys","_afterState","ringsAfter","windingsAfter","mpsAfter","polysAfter","polysExclude","isExterior","mpsBefore","operation","noBefores","noAfters","least","most","numMultiPolys","isJustSubject","mps","RingIn","geomRing","firstPoint","getSweepEvents","sweepEvents","PolyIn","geomPoly","exteriorRing","interiorRings","ringSweepEvents","jMax","MultiPolyIn","ex","polys","polySweepEvents","RingOut","allSegments","ringsOut","prevEvent","startingPoint","intersectionLEs","availableLEs","firstPt","lastPt","indexLE","intersectionLE","ringEvents","prevPt","nextPt","isExteriorRing","iStart","iEnd","orderedPoints","_isExteriorRing","enclosing","enclosingRing","_enclosingRing","_calcEnclosingRing","leftMostEvt","prevSeg","prevPrevSeg","PolyOut","addInterior","ringGeom","MultiPolyOut","_composePolys","polyGeom","SweepLine","nextSeg","prevMySplitter","prevInter","newEventsFromSplit","_splitSafely","nextMySplitter","nextInter","mySplitter","inter","POLYGON_CLIPPING_MAX_QUEUE_SIZE","POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS","Operation","moreGeoms","multipolys","mpA","sweepLine","prevQueueSize","_len2","_key2","xor","_len3","_key3","subjectGeom","_len4","clippingGeoms","_key4","dialogRef","setIsOpen","closeModal","showModal","dialog","handleKeyDown","focusableElements","firstElement","lastElement","activeElement","firstButton","closeText","planStr","topicList","_topicChoices$find","additionalPills","groupIndex","optionIndex","polygon_to_line_1","isPointOnLine","lineSegmentStart","lineSegmentEnd","dxc","dyc","flatten1","flatten2","doLinesIntersect","disjoint","ClusterInit","mandist","initial","maxit","old","idxs","conv","vlen","_idxs","_idx","_j2","vsum","vect","_j3","ksj","sumj","oldj","cj","_h","_h2","_j4","_j5","getDay","tryDateObject","verticalMidpoint","horizontalMidpoint","origSymbol","hasSymbolSham","defaultState","defaultProjectState","_searchParams$get","mergeData","validProjectStates","filteredStates","holeIndices","invSize","hasHoles","outerLen","outerNode","linkedList","steiner","getLeftmost","eliminateHole","eliminateHoles","earcutLinked","clockwise","filterPoints","again","ear","pass","zOrder","prevZ","nextZ","numMerges","pSize","qSize","inSize","sortLinked","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","pointInTriangle","minZ","maxZ","locallyInside","isValidDiagonal","splitPolygon","bridge","hx","hy","qx","mx","my","tanMin","sectorContainsSector","findHoleBridge","bridgeReverse","leftmost","intersectsPolygon","middleInside","o1","o2","o3","o4","onSegment","a2","bp","deviation","trianglesArea","ext","lineSlice","startPt","stopPt","ends","startVertex","stopVertex","clipCoords","density_clustering_1","maxDistance","minPoints","dbscan","clusteredIds","clusterIds","clusterPoint","noiseId","noisePoint","_ItemPopup","beginningMap","endMap","skipMap","withoutPopup","ItemPopup","boolean_disjoint_1","setLimitExceeded","_getFilteredIds","districtIds","organisationIds","topicIds","participationIds","projectStatusIds","kiezradarIds","getFilteredResults","getFilteredIds","notification","updateItem","errorCreatingSearchProfile","STATUS_MAPPING","filteredDistricts","filteredOrganisations","filteredTopics","filteredParticipationChoices","filteredProjectStatus","filteredKiezradars","_filters$map","_filters$map2","targetPoint","minDist","bestFeatureIndex","distanceToPoint","spline_1","spline","pushCoord","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","$ObjectGPO","$ReflectGPO","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt64Array","BigUint64Array","DataView","encodeURI","eval","Float16Array","Float32Array","FinalizationRegistry","Int16Array","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","WeakRef","errorProto","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","objectAssign","objectAssign__default","gridToMatrix","zProperty","pointsMatrix","pointsByLatitude","orderedRowsByLatitude","sortPointsByLatLng","pointRow","matrixPosition","defaultSettings","successCallback","verbose","settings","isoBands","minV","bandwidth","optionKeys","cols","BandGrid","maxV","cval","tl","cval_real","flipped","topleft","topright","bottomleft","bottomright","righttop","rightbottom","lefttop","leftbottom","interpolateX","isoBandEdgeBL","isoBandEdgeRB","isoBandEdgeRT","isoBandEdgeLT","isoBandEdgeBR","isoBandEdgeLB","isoBandEdgeTL","computeBandGrid","areas","area_idx","gg","polygon_table","aa","aaa","BandGrid2Areas","currentPolygon","getStartXY","getExitXY","missing","traceOutOfGridPath","pp","BandGrid2AreaPaths","Node0","Node1","Node2","Node3","isoBandNextXTL","isoBandNextYTL","isoBandNextOTL","isoBandNextXTR","isoBandNextYTR","isoBandNextOTR","isoBandNextXRT","isoBandNextYRT","isoBandNextORT","isoBandNextXRB","isoBandNextYRB","isoBandNextORB","isoBandNextXBL","isoBandNextYBL","isoBandNextOBL","isoBandNextXBR","isoBandNextYBR","isoBandNextOBR","isoBandNextXLT","isoBandNextYLT","isoBandNextOLT","isoBandNextXLB","isoBandNextYLB","isoBandNextOLB","p00","p01","p02","p03","p04","p05","p06","p07","isoBandEdgeTR","myArray","d_x","d_y","d_o","id_x","edgeIdx","isobands","breaks","commonProperties","breaksProperties","contours","lowerBand","upperBand","groupedRings","groupNestedRings","orderByArea","createContourLines","gridBbox","originalWidth","originalHeigth","matrixWidth","matrixHeight","lineRingSet","lineRing","rescaleContours","multipolygons","contourProperties","ringsCoords","ringsWithArea","orderedByArea","orderedLinearRings","lrList","lrCoordinates","grouped","groupedLinearRingsCoords","allGrouped","outerMostPoly","testPolygon","targetPolygon","flagsBound","isMapAndList","queryParams","currentPage","setCurrentPage","viewMode","fetchAndUpdate","prevData","_x2","_x3","_views","requestIdleCallback","DataContext","_reactRouter","urlParams","_args","_maxEntries","_minEntries","_initFormat","findItem","equalsFn","calcBBox","distBBox","destNode","compareNodeMinX","compareNodeMinY","bboxArea","bboxMargin","enlargedArea","intersectionArea","multiSelect","_all","childBBox","nodesToSearch","_splitRoot","tmpNode","_insert","goingUp","_condense","right2","right3","N2","N1","_chooseSubtree","level","targetNode","enlargement","minArea","minEnlargement","isNode","insertPath","_split","_adjustParentBBoxes","_chooseSplitAxis","splitIndex","_chooseSplitIndex","newNode","minOverlap","_allDistMargin","leftBBox","rightBBox","compareArr","$isNaN","$actualApply","functionsHaveNames","$bind","boundFunctionsHaveNames","polygon1","polygon2","differenced","anyMatch","foundInsidePoint","oneInside","polyBbox","lineBbox","midpoint","geometry1","geometry2","poly1Bbox","_reachability","_processed","_coreDistance","_orderedList","priorityQueue","_distanceToCore","_updateQueue","getReachabilityPlot","reachabilityPlot","newReachableDistance","queueElements","coreDistCand","isoContours","path_idx","ContourGrid","computeContourGrid","isTrivial","maxj","dxContour","dyContour","nextEdge","currentCell","getXY","clearCell","prev_cval","tracePath","isolines","createdIsoLines","isoline","createIsoLines","scaledIsolines","rescaleIsolines","center_mean_1","findMedian","candidateMedian","previousCandidate","counter","candidateXsum","candidateYsum","kSum","centroidCount","theCentroid","weightValue","distanceFromCandidate","candidateX","candidateY","medianCandidates","weightTerm","meanCenter","setFunctionName","hasIndices","ignoreCase","dotAll","unicode","unicodeSets","sticky","containsNumber","geojsonType","lineStringToPolygon","orderCoords","autoCompleteCoords","multiCoords","largestArea","RangeError","inRing","inBBox","insidePoly","inHole","_d","collectedProperties","rhumb_distance_1","dot","calcDistance","Pb","distanceToSegment","convex","bezierSpline","sample","nearestPointToLine","tin","kinks","along","lineToPolygon","bboxClip","lineOverlap","polygonize","booleanDisjoint","booleanContains","booleanCrosses","booleanOverlap","booleanPointOnLine","booleanEqual","booleanWithin","booleanIntersects","clustersDbscan","clustersKmeans","pointToLineDistance","booleanParallel","centerMean","centerMedian","standardDeviationalEllipse","distanceWeight","_interopNamespace","isolines__default","convex__default","pointsWithinPolygon__default","concave__default","collect__default","flip__default","simplify__default","bezierSpline__default","tag__default","sample__default","envelope__default","midpoint__default","centerOfMass__default","combine__default","tesselate__default","nearestPointToLine__default","planepoint__default","tin__default","kinks__default","pointOnFeature__default","along__default","lineSlice__default","lineChunk__default","unkinkPolygon__default","greatCircle__default","lineSplit__default","polygonToLine__default","lineToPolygon__default","bboxClip__default","lineOverlap__default","sector__default","polygonTangents__default","rewind__default","isobands__default","transformScale__default","transformTranslate__default","lineOffset__default","polygonize__default","booleanDisjoint__default","booleanContains__default","booleanCrosses__default","booleanOverlap__default","booleanPointOnLine__default","booleanEqual__default","booleanWithin__default","booleanIntersects__default","clustersDbscan__default","clustersKmeans__default","pointToLineDistance__default","booleanParallel__default","shortestPath__default","voronoi__default","ellipse__default","centerMean__default","centerMedian__default","standardDeviationalEllipse__default","angle__default","polygonSmooth__default","moranIndex__default","distanceWeight__default","projection__namespace","random__namespace","clusters__namespace","helpers__namespace","invariant__namespace","meta__namespace","difference__default","buffer__default","union__default","intersect__default","dissolve__default","mask__default","interpolate__default","clean_coords_1","segments1","segments2","item1","item2","item1Type","item2Type","sortByPhase","phase1","phase2","earliestFirst","date1","date2","created_or_modified","past_phase","numberOfFeatures","xDeviationSquaredSum","yDeviationSquaredSum","xyDeviationSum","getDeviations","bigA","bigB","bigC","thetaDeg","sigmaXsum","sigmaYsum","weightsum","sigmaX","sigmaY","theEllipse","pointsWithinEllipse","standardDeviationalEllipseProperties","meanCenterCoordinates","semiMajorAxis","semiMinorAxis","percentageWithinEllipse","__defProp","__getOwnPropDesc","__getOwnPropNames","__hasOwnProp","__copyProps","except","index_exports","__export","import_dom","secondTarget","__reExport","coordId","lastLine","previousLine","e2","mergeLineStrings","excludeBoundary","identity","bboxPoint","bboxGeometry","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","dp","gf","meshArcs","geomsByArc","extract0","extract1","extract2","extract3","extractArcs","stitch","mergeArcs","polygonsByArc","planarRingArea","lo","indexesByArc","geometryType","ij","ik","bisect","untransform","skmeans_1","numberOfClusters","initialCentroids","skmeansResult","finalAngle","Equality","opt","pseudoNode","objectComparator","sameLength","g1","g2","obj1","obj2","compareCoord","compareLine","comparePolygon","compareFeature","g1s","g2s","g1part","g2part","toFixed","path1","path2","ind","isPoly","removePseudo","fixStartIndex","sameDirection","comparePath","sourcePath","targetPath","correctPath","cont","holes1","holes2","h1","h2","compareBBox","heading","feat","coordinates_1","factors","centimeters","centimetres","feet","inches","kilometers","kilometres","meters","metres","miles","millimeters","millimetres","nauticalmiles","yards","unitsFactors","areaFactors","acres","hectares","lineStrings","multiplier","originalUnit","finalUnit","convertArea","startFactor","finalFactor","validateBBox","validateId","remainingStr","moreThanStr","timeRemaining","numberIsNaN","concatty","bound","arrLike","slicy","boundLength","boundArgs","joiner","joiny","Empty","concaveman_1","d3voronoi","coordsToPolygon","isPointZ","byX","xmin","xmax","ymin","ymax","dmax","xmid","ymid","Triangle","__sentinel","triangulate","calculateRhumbBearing","deltaPsi","bear360","reflectGetProto","originalGetProto","getDunderProto","__spreadArrays","jl","randomPosition","coordInBBox","randomPoint","randomPolygon","num_vertices","max_radial_length","hub","circleOffsets","radialScaler","randomLineString","max_length","max_rotation","outerEdges","outerEdgesSorted","sortOuterEdges","aNode","bNode","$floor","functionLengthIsConfigurable","functionLengthIsWritable","createSegments","lineSegmentFeature","doMultiPointAndLineStringCross","foundIntPoint","foundExtPoint","pointLength","incEndVertices","doLineStringAndPolygonCross","doesMultiPointCrossPoly","incEnd","doLineStringsCross","featurecollection","shuffled","getRandomSubarray","switchStr","defaultChecked","_ref$labelLeft","labelLeft","_ref$size","ariaLabelledBy","hidden"],"ignoreList":[],"sourceRoot":""}