@defra/interactive-map 0.0.37-alpha → 0.0.39-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/assets/templates/draw-tools.njk +4 -3
  2. package/dist/css/index.css +1 -1
  3. package/dist/esm/im-core.js +1 -1
  4. package/dist/esm/im-shell.js +1 -1
  5. package/dist/umd/im-core.js +1 -1
  6. package/dist/umd/index.js +1 -1
  7. package/docs/api.md +32 -0
  8. package/docs/examples/draw-tools.mdx +0 -4
  9. package/docs/plugins/draw.md +482 -0
  10. package/docs/plugins.md +2 -6
  11. package/govuk-prototype-kit.config.json +3 -2
  12. package/package.json +2 -4
  13. package/plugins/beta/draw-es/dist/esm/im-draw-es-plugin.js +1 -1
  14. package/plugins/beta/draw-ml/dist/esm/im-draw-ml-plugin.js +1 -1
  15. package/plugins/beta/draw-ml/dist/umd/im-draw-ml-plugin.js +1 -1
  16. package/plugins/beta/draw-ol/dist/esm/im-draw-ol-plugin.js +1 -1
  17. package/plugins/beta/map-styles/dist/css/index.css +1 -97
  18. package/plugins/datasets/dist/esm/im-datasets-plugin.js +1 -1
  19. package/plugins/datasets/dist/umd/im-datasets-plugin.js +1 -1
  20. package/plugins/datasets/src/registry/dataset.js +3 -1
  21. package/plugins/datasets/src/registry/datasetRegistry.js +30 -24
  22. package/plugins/datasets/src/registry/datasetRegistry.test.js +25 -18
  23. package/plugins/draw/dist/esm/im-draw-ml-adapter.js +1 -0
  24. package/plugins/draw/dist/esm/im-draw-ol-adapter.js +1 -0
  25. package/plugins/draw/dist/esm/im-draw-plugin.js +1 -0
  26. package/plugins/draw/dist/esm/index.js +1 -0
  27. package/plugins/draw/dist/umd/im-draw-ml-adapter.js +1 -0
  28. package/plugins/draw/dist/umd/im-draw-ol-adapter.js +2 -0
  29. package/plugins/draw/dist/umd/im-draw-ol-adapter.js.LICENSE.txt +1 -0
  30. package/plugins/draw/dist/umd/im-draw-plugin.js +2 -0
  31. package/plugins/draw/dist/umd/im-draw-plugin.js.LICENSE.txt +1 -0
  32. package/plugins/draw/dist/umd/index.js +2 -0
  33. package/plugins/draw/dist/umd/index.js.LICENSE.txt +1 -0
  34. package/plugins/draw/src/DrawInit.jsx +89 -0
  35. package/plugins/draw/src/DrawInit.test.jsx +184 -0
  36. package/plugins/draw/src/adapterEvents.js +127 -0
  37. package/plugins/draw/src/adapterEvents.test.js +20 -0
  38. package/plugins/draw/src/adapters/adapterContract.test.js +48 -0
  39. package/plugins/draw/src/adapters/loadDrawAdapter.js +14 -0
  40. package/plugins/draw/src/adapters/loadDrawAdapter.test.js +53 -0
  41. package/plugins/draw/src/adapters/maplibre/MaplibreDrawAdapter.js +367 -0
  42. package/plugins/draw/src/adapters/maplibre/MaplibreDrawAdapter.test.js +799 -0
  43. package/plugins/draw/src/adapters/maplibre/defaults.js +1 -0
  44. package/plugins/draw/src/adapters/maplibre/drawEvents.js +35 -0
  45. package/plugins/draw/src/adapters/maplibre/mapboxDraw.js +126 -0
  46. package/plugins/draw/src/adapters/maplibre/mapboxDraw.test.js +268 -0
  47. package/plugins/draw/src/adapters/maplibre/mapboxSnap.js +39 -0
  48. package/plugins/draw/src/adapters/maplibre/mapboxSnap.test.js +91 -0
  49. package/plugins/draw/src/adapters/maplibre/modes/createDrawMode.js +58 -0
  50. package/plugins/draw/src/adapters/maplibre/modes/createDrawMode.test.js +53 -0
  51. package/plugins/draw/src/adapters/maplibre/modes/disabledMode.js +23 -0
  52. package/plugins/draw/src/adapters/maplibre/modes/disabledMode.test.js +21 -0
  53. package/plugins/draw/src/adapters/maplibre/modes/drawLineMode.js +15 -0
  54. package/plugins/draw/src/adapters/maplibre/modes/drawLineMode.test.js +37 -0
  55. package/plugins/draw/src/adapters/maplibre/modes/drawMode/__helpers__/harness.js +115 -0
  56. package/plugins/draw/src/adapters/maplibre/modes/drawMode/clickHandlers.js +193 -0
  57. package/plugins/draw/src/adapters/maplibre/modes/drawMode/clickHandlers.test.js +241 -0
  58. package/plugins/draw/src/adapters/maplibre/modes/drawMode/keyboardHandlers.js +78 -0
  59. package/plugins/draw/src/adapters/maplibre/modes/drawMode/keyboardHandlers.test.js +75 -0
  60. package/plugins/draw/src/adapters/maplibre/modes/drawMode/lifecycle.js +78 -0
  61. package/plugins/draw/src/adapters/maplibre/modes/drawMode/lifecycle.test.js +48 -0
  62. package/plugins/draw/src/adapters/maplibre/modes/drawMode/pointerHandlers.js +103 -0
  63. package/plugins/draw/src/adapters/maplibre/modes/drawMode/pointerHandlers.test.js +127 -0
  64. package/plugins/draw/src/adapters/maplibre/modes/drawMode/renderHelpers.js +59 -0
  65. package/plugins/draw/src/adapters/maplibre/modes/drawMode/renderHelpers.test.js +34 -0
  66. package/plugins/draw/src/adapters/maplibre/modes/drawMode/undoHandlers.js +193 -0
  67. package/plugins/draw/src/adapters/maplibre/modes/drawMode/undoHandlers.test.js +195 -0
  68. package/plugins/draw/src/adapters/maplibre/modes/drawPolygonMode.js +16 -0
  69. package/plugins/draw/src/adapters/maplibre/modes/drawPolygonMode.test.js +27 -0
  70. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/__helpers__/harness.js +107 -0
  71. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/geometryHelpers.js +139 -0
  72. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/geometryHelpers.test.js +46 -0
  73. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/helpers.js +2 -0
  74. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/helpers.test.js +17 -0
  75. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/keyboardHandlers.js +151 -0
  76. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/keyboardHandlers.test.js +123 -0
  77. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/pointerHandlers.js +161 -0
  78. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/pointerHandlers.test.js +98 -0
  79. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/touchHandlers.js +133 -0
  80. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/touchHandlers.test.js +105 -0
  81. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/undoHandlers.js +166 -0
  82. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/undoHandlers.test.js +133 -0
  83. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexOperations.js +210 -0
  84. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexOperations.test.js +167 -0
  85. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexQueries.js +121 -0
  86. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode/vertexQueries.test.js +73 -0
  87. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode.js +249 -0
  88. package/plugins/draw/src/adapters/maplibre/modes/editVertexMode.test.js +153 -0
  89. package/plugins/draw/src/adapters/maplibre/snap/constants.js +2 -0
  90. package/plugins/draw/src/adapters/maplibre/snap/mapHandlers.js +39 -0
  91. package/plugins/draw/src/adapters/maplibre/snap/mapHandlers.test.js +106 -0
  92. package/plugins/draw/src/adapters/maplibre/snap/prototypePatches.js +148 -0
  93. package/plugins/draw/src/adapters/maplibre/snap/prototypePatches.test.js +238 -0
  94. package/plugins/draw/src/adapters/maplibre/snap/snapInstance.js +115 -0
  95. package/plugins/draw/src/adapters/maplibre/snap/snapInstance.test.js +151 -0
  96. package/plugins/draw/src/adapters/maplibre/snap/sourceData.js +34 -0
  97. package/plugins/draw/src/adapters/maplibre/snap/sourceData.test.js +62 -0
  98. package/plugins/draw/src/adapters/maplibre/styles.js +207 -0
  99. package/plugins/draw/src/adapters/maplibre/styles.test.js +155 -0
  100. package/plugins/draw/src/adapters/maplibre/utils/snapHelpers.js +202 -0
  101. package/plugins/draw/src/adapters/maplibre/utils/snapHelpers.test.js +253 -0
  102. package/plugins/draw/src/adapters/maplibre/utils/touchClickWorkaround.js +57 -0
  103. package/plugins/draw/src/adapters/maplibre/utils/touchClickWorkaround.test.js +106 -0
  104. package/plugins/draw/src/adapters/openlayers/OLDrawAdapter.js +117 -0
  105. package/plugins/draw/src/adapters/openlayers/OLDrawAdapter.test.js +159 -0
  106. package/plugins/draw/src/adapters/openlayers/__helpers__/harness.js +90 -0
  107. package/plugins/draw/src/adapters/openlayers/core/OLDrawManager.js +178 -0
  108. package/plugins/draw/src/adapters/openlayers/core/OLDrawManager.test.js +153 -0
  109. package/plugins/draw/src/adapters/openlayers/core/featureStore.js +69 -0
  110. package/plugins/draw/src/adapters/openlayers/core/featureStore.test.js +58 -0
  111. package/plugins/draw/src/adapters/openlayers/core/internalEvents.js +8 -0
  112. package/plugins/draw/src/adapters/openlayers/core/styles.js +155 -0
  113. package/plugins/draw/src/adapters/openlayers/core/styles.test.js +143 -0
  114. package/plugins/draw/src/adapters/openlayers/defaults.js +1 -0
  115. package/plugins/draw/src/adapters/openlayers/draw/DrawMode.js +272 -0
  116. package/plugins/draw/src/adapters/openlayers/draw/DrawMode.test.js +431 -0
  117. package/plugins/draw/src/adapters/openlayers/draw/drawInput.js +139 -0
  118. package/plugins/draw/src/adapters/openlayers/draw/drawInput.test.js +140 -0
  119. package/plugins/draw/src/adapters/openlayers/draw/vertexPlacement.js +144 -0
  120. package/plugins/draw/src/adapters/openlayers/draw/vertexPlacement.test.js +196 -0
  121. package/plugins/draw/src/adapters/openlayers/edit/EditMode.js +385 -0
  122. package/plugins/draw/src/adapters/openlayers/edit/EditMode.test.js +303 -0
  123. package/plugins/draw/src/adapters/openlayers/edit/activeVertexLayer.js +55 -0
  124. package/plugins/draw/src/adapters/openlayers/edit/activeVertexLayer.test.js +53 -0
  125. package/plugins/draw/src/adapters/openlayers/edit/keyboardHandler.js +157 -0
  126. package/plugins/draw/src/adapters/openlayers/edit/keyboardHandler.test.js +195 -0
  127. package/plugins/draw/src/adapters/openlayers/edit/midpointLayer.js +57 -0
  128. package/plugins/draw/src/adapters/openlayers/edit/midpointLayer.test.js +42 -0
  129. package/plugins/draw/src/adapters/openlayers/edit/modifyInteraction.js +83 -0
  130. package/plugins/draw/src/adapters/openlayers/edit/modifyInteraction.test.js +80 -0
  131. package/plugins/draw/src/adapters/openlayers/edit/nudge.js +118 -0
  132. package/plugins/draw/src/adapters/openlayers/edit/nudge.test.js +165 -0
  133. package/plugins/draw/src/adapters/openlayers/edit/pointerHandlers.js +79 -0
  134. package/plugins/draw/src/adapters/openlayers/edit/pointerHandlers.test.js +78 -0
  135. package/plugins/draw/src/adapters/openlayers/edit/selectionState.js +116 -0
  136. package/plugins/draw/src/adapters/openlayers/edit/selectionState.test.js +109 -0
  137. package/plugins/draw/src/adapters/openlayers/edit/touchHandler.js +184 -0
  138. package/plugins/draw/src/adapters/openlayers/edit/touchHandler.test.js +133 -0
  139. package/plugins/draw/src/adapters/openlayers/edit/undoOps.js +94 -0
  140. package/plugins/draw/src/adapters/openlayers/edit/undoOps.test.js +64 -0
  141. package/plugins/draw/src/adapters/openlayers/edit/vertexHitTest.js +74 -0
  142. package/plugins/draw/src/adapters/openlayers/edit/vertexHitTest.test.js +28 -0
  143. package/plugins/draw/src/adapters/openlayers/edit/vertexLayer.js +49 -0
  144. package/plugins/draw/src/adapters/openlayers/edit/vertexLayer.test.js +42 -0
  145. package/plugins/draw/src/adapters/openlayers/edit/vertexOps.js +100 -0
  146. package/plugins/draw/src/adapters/openlayers/edit/vertexOps.test.js +80 -0
  147. package/plugins/draw/src/adapters/openlayers/olDraw.js +40 -0
  148. package/plugins/draw/src/adapters/openlayers/olDraw.test.js +70 -0
  149. package/plugins/draw/src/adapters/openlayers/snap/snapEngine.js +220 -0
  150. package/plugins/draw/src/adapters/openlayers/snap/snapEngine.test.js +232 -0
  151. package/plugins/draw/src/adapters/openlayers/snap/snapGeometry.js +198 -0
  152. package/plugins/draw/src/adapters/openlayers/snap/snapGeometry.test.js +136 -0
  153. package/plugins/draw/src/adapters/openlayers/snap/snapIndicator.js +81 -0
  154. package/plugins/draw/src/adapters/openlayers/snap/snapIndicator.test.js +72 -0
  155. package/plugins/draw/src/adapters/openlayers/snap/snapInteraction.js +57 -0
  156. package/plugins/draw/src/adapters/openlayers/snap/snapInteraction.test.js +68 -0
  157. package/plugins/draw/src/adapters/openlayers/snap/snapManager.js +99 -0
  158. package/plugins/draw/src/adapters/openlayers/snap/snapManager.test.js +101 -0
  159. package/plugins/draw/src/adapters/openlayers/utils/geometryHelpers.js +103 -0
  160. package/plugins/draw/src/adapters/openlayers/utils/geometryHelpers.test.js +76 -0
  161. package/plugins/draw/src/adapters/openlayers/utils/olCoords.js +35 -0
  162. package/plugins/draw/src/adapters/openlayers/utils/olCoords.test.js +22 -0
  163. package/plugins/draw/src/adapters/openlayers/utils/sketchHelpers.js +22 -0
  164. package/plugins/draw/src/adapters/openlayers/utils/sketchHelpers.test.js +18 -0
  165. package/plugins/draw/src/adapters/openlayers/utils/touchTarget.js +8 -0
  166. package/plugins/draw/src/api/addFeature.js +22 -0
  167. package/plugins/draw/src/api/addFeature.test.js +41 -0
  168. package/plugins/draw/src/api/deleteFeature.js +11 -0
  169. package/plugins/draw/src/api/deleteFeature.test.js +24 -0
  170. package/plugins/draw/src/api/editFeature.js +54 -0
  171. package/plugins/draw/src/api/editFeature.test.js +134 -0
  172. package/plugins/draw/src/api/merge.js +30 -0
  173. package/plugins/draw/src/api/merge.test.js +57 -0
  174. package/plugins/draw/src/api/newLine.js +41 -0
  175. package/plugins/draw/src/api/newLine.test.js +93 -0
  176. package/plugins/draw/src/api/newPolygon.js +41 -0
  177. package/plugins/draw/src/api/newPolygon.test.js +93 -0
  178. package/plugins/draw/src/api/split.js +117 -0
  179. package/plugins/draw/src/api/split.test.js +204 -0
  180. package/plugins/draw/src/defaults.js +52 -0
  181. package/plugins/draw/src/defaults.test.js +18 -0
  182. package/plugins/draw/src/draw.scss +43 -0
  183. package/plugins/draw/src/events.js +237 -0
  184. package/plugins/draw/src/events.test.js +369 -0
  185. package/plugins/draw/src/index.js +10 -0
  186. package/plugins/draw/src/index.test.js +24 -0
  187. package/plugins/draw/src/manifest.js +170 -0
  188. package/plugins/draw/src/manifest.test.js +147 -0
  189. package/plugins/draw/src/reducer.js +69 -0
  190. package/plugins/draw/src/reducer.test.js +85 -0
  191. package/plugins/draw/src/utils/debounce.js +16 -0
  192. package/plugins/draw/src/utils/debounce.test.js +40 -0
  193. package/plugins/draw/src/utils/eventBus.js +36 -0
  194. package/plugins/draw/src/utils/eventBus.test.js +47 -0
  195. package/plugins/draw/src/utils/flattenStyleProperties.js +25 -0
  196. package/plugins/draw/src/utils/flattenStyleProperties.test.js +33 -0
  197. package/plugins/draw/src/utils/getValueForStyle.js +33 -0
  198. package/plugins/draw/src/utils/getValueForStyle.test.js +32 -0
  199. package/plugins/draw/src/utils/resolveColors.js +39 -0
  200. package/plugins/draw/src/utils/resolveColors.test.js +34 -0
  201. package/plugins/draw/src/utils/spatial.js +243 -0
  202. package/plugins/draw/src/utils/spatial.test.js +243 -0
  203. package/plugins/draw/src/utils/touchTarget.js +95 -0
  204. package/plugins/draw/src/utils/touchTarget.test.js +107 -0
  205. package/plugins/draw/src/utils/undoStack.js +31 -0
  206. package/plugins/draw/src/utils/undoStack.test.js +49 -0
  207. package/plugins/draw/src/validation/liveDrawChecks.js +120 -0
  208. package/plugins/draw/src/validation/liveDrawChecks.test.js +159 -0
  209. package/plugins/draw/src/validation/liveStroke.js +85 -0
  210. package/plugins/draw/src/validation/liveStroke.test.js +150 -0
  211. package/plugins/draw/src/validation/rules.areaError.test.js +12 -0
  212. package/plugins/draw/src/validation/rules.js +186 -0
  213. package/plugins/draw/src/validation/rules.test.js +120 -0
  214. package/plugins/draw/src/validation/validateGeometry.js +119 -0
  215. package/plugins/draw/src/validation/validateGeometry.test.js +200 -0
  216. package/plugins/interact/dist/esm/im-interact-plugin.js +1 -1
  217. package/plugins/interact/dist/umd/im-interact-plugin.js +1 -1
  218. package/plugins/interact/src/hooks/useInteractionHandlers.js +1 -1
  219. package/plugins/interact/src/hooks/useInteractionHandlers.test.js +1 -1
  220. package/plugins/interact/src/utils/buildStylesMap.js +1 -0
  221. package/plugins/search/dist/css/index.css +1 -317
  222. package/rollup.esm.mjs +35 -28
  223. package/sonar-project.properties +2 -2
  224. package/src/App/components/Attributions/Attributions.module.scss +1 -0
  225. package/src/App/components/Hints/Hints.module.scss +5 -4
  226. package/src/App/components/KeyboardHelp/KeyboardHelp.jsx +1 -1
  227. package/src/App/components/KeyboardHelp/KeyboardHelp.test.jsx +11 -0
  228. package/src/App/components/MoveControl/MoveControl.jsx +73 -9
  229. package/src/App/components/MoveControl/MoveControl.module.scss +12 -2
  230. package/src/App/components/MoveControl/MoveControl.test.jsx +136 -0
  231. package/src/App/hooks/useHintsAPI.js +67 -0
  232. package/src/App/hooks/useHintsAPI.test.js +145 -0
  233. package/src/App/renderer/PluginInits.jsx +4 -0
  234. package/src/App/renderer/PluginInits.test.jsx +7 -1
  235. package/src/InteractiveMap/InteractiveMap.js +20 -0
  236. package/src/InteractiveMap/InteractiveMap.test.js +7 -0
  237. package/src/config/events.js +4 -0
  238. package/src/scss/settings/_dimensions.scss +3 -0
  239. package/src/services/announcer.js +38 -3
  240. package/src/services/announcer.test.js +133 -1
  241. package/src/services/hints.js +3 -0
  242. package/src/services/hints.test.js +19 -0
  243. package/src/types.js +12 -0
  244. package/src/utils/detectInterfaceType.js +5 -1
  245. package/src/utils/isMac.js +15 -0
  246. package/src/utils/isMac.test.js +37 -0
  247. package/webpack.umd.mjs +1 -0
@@ -0,0 +1 @@
1
+ import e from"@babel/runtime/helpers/defineProperty";import{useEffect as t}from"preact/compat";import n from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/objectWithoutProperties";function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function o(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?i(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var s=new Set(["draw_polygon","draw_line"]),a={SET_MODE:(e,t)=>o(o({},e),{},{mode:t,numVertices:s.has(t)?0:e.numVertices,geometryValid:!1,canAddPoint:!0}),SET_ACTION:(e,t)=>o(o({},e),{},{action:t.name,actionValid:t.isValid}),SET_FEATURE:(e,t)=>o(o({},e),{},{feature:void 0===t.feature?e.feature:t.feature,tempFeature:void 0===t.tempFeature?e.tempFeature:t.tempFeature}),SET_SELECTED_VERTEX_INDEX:(e,t)=>o(o({},e),{},{selectedVertexIndex:t.index,numVertices:t.numVertices}),TOGGLE_SNAP:e=>o(o({},e),{},{snap:!e.snap}),SET_HAS_SNAP_LAYERS:(e,t)=>o(o({},e),{},{hasSnapLayers:!!t}),SET_UNDO_STACK_LENGTH:(e,t)=>o(o({},e),{},{undoStackLength:t}),SET_GEOMETRY_VALID:(e,t)=>o(o({},e),{},{geometryValid:!!t}),SET_CAN_ADD_POINT:(e,t)=>o(o({},e),{},{canAddPoint:!!t})},l={APP_ADD_MARKER:"app:addmarker",APP_UPDATE_MARKER:"app:updatemarker",APP_REMOVE_MARKER:"app:removemarker",APP_SET_MODE:"app:setmode",APP_REVERT_MODE:"app:revertmode",APP_ADD_BUTTON:"app:addbutton",APP_TOGGLE_BUTTON_STATE:"app:togglebuttonstate",APP_ADD_PANEL:"app:addpanel",APP_REMOVE_PANEL:"app:removepanel",APP_SHOW_PANEL:"app:showpanel",APP_HIDE_PANEL:"app:hidepanel",APP_ADD_CONTROL:"app:addcontrol",APP_SHOW_HINT:"app:showhint",APP_DISMISS_HINT:"app:dismisshint",APP_READY:"app:ready",APP_OPENED:"app:opened",APP_CLOSED:"app:closed",APP_FULLSCREEN_CHANGE:"app:fullscreenchange",APP_PANEL_OPENED:"app:panelopened",APP_PANEL_CLOSED:"app:panelclosed",MAP_SET_STYLE:"map:setstyle",MAP_SET_SIZE:"map:setsize",MAP_SET_FEATURES:"map:setfeatures",MAP_SET_ACTIVE_FEATURE:"map:setactivefeature",MAP_SELECT_FEATURE:"map:selectfeature",MAP_SET_PIXEL_RATIO:"map:setpixelratio",MAP_FIT_TO_BOUNDS:"map:fittobounds",MAP_SET_VIEW:"map:setview",MAP_INIT_MAP_STYLES:"map:initmapstyles",MAP_STYLE_CHANGE:"map:stylechange",MAP_LOADED:"map:loaded",MAP_READY:"map:ready",MAP_SIZE_CHANGE:"map:sizechange",MAP_FIRST_IDLE:"map:firstidle",MAP_MOVE_START:"map:movestart",MAP_MOVE:"map:move",MAP_MOVE_END:"map:moveend",MAP_STATE_UPDATED:"map:stateupdated",MAP_DATA_CHANGE:"map:datachange",MAP_RENDER:"map:render",MAP_CLICK:"map:click",MAP_DESTROY:"map:destroy"},u=function(){var e=n(function*(e,t){switch(e.name){case"MapLibreProvider":var{MaplibreDrawAdapter:n}=yield import(/* webpackChunkName: "im-draw-ml-adapter" */ "./im-draw-ml-adapter.js").then(function(e){return e.M});return new n(e,t);case"OpenLayersProvider":var{OLDrawAdapter:r}=yield import(/* webpackChunkName: "im-draw-ol-adapter" */ "./im-draw-ol-adapter.js");return new r(e,t);default:throw new Error('No draw adapter available for map provider "'.concat(e.name,'"'))}});return function(t,n){return e.apply(this,arguments)}}(),c={CREATE:"create",EDIT_FINISH:"editfinish",CANCEL:"cancel",VERTEX_SELECTION:"vertexselection",VERTEX_CHANGE:"vertexchange",UNDO_CHANGE:"undochange",UPDATE:"update",GEOMETRY_CHANGE:"geometrychange",INTERFACE_TYPE_CHANGE:"interfacetypechange",PLACEMENT_BLOCKED:"placementblocked",VALIDITY_CHANGE:"validitychange",CAN_PLACE_CHANGE:"canplacechange"},h=6371008.8,p={centimeters:637100880,centimetres:637100880,degrees:360/(2*Math.PI),feet:20902260.511392,inches:39.37*h,kilometers:6371.0088,kilometres:6371.0088,meters:h,metres:h,miles:3958.761333810546,millimeters:6371008800,millimetres:6371008800,nauticalmiles:h/1852,radians:1,yards:6967335.223679999};function f(e,t,n={}){const r={type:"Feature"};return(0===n.id||n.id)&&(r.id=n.id),n.bbox&&(r.bbox=n.bbox),r.properties=t||{},r.geometry=e,r}function d(e,t,n={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!P(e[0])||!P(e[1]))throw new Error("coordinates must contain numbers");return f({type:"Point",coordinates:e},t,n)}function g(e,t,n={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return f({type:"Polygon",coordinates:e},t,n)}function y(e,t,n={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return f({type:"LineString",coordinates:e},t,n)}function m(e,t={}){const n={type:"FeatureCollection"};return t.id&&(n.id=t.id),t.bbox&&(n.bbox=t.bbox),n.features=e,n}function v(e,t,n={}){return f({type:"MultiLineString",coordinates:e},t,n)}function E(e,t="kilometers"){const n=p[t];if(!n)throw new Error(t+" units is invalid");return e*n}function b(e,t="kilometers"){const n=p[t];if(!n)throw new Error(t+" units is invalid");return e/n}function w(e){return 180*(e%(2*Math.PI))/Math.PI}function S(e){return e%360*Math.PI/180}function P(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}function x(e,t,n){if(null!==e)for(var r,i,o,s,a,l,u,c,h=0,p=0,f=e.type,d="FeatureCollection"===f,g="Feature"===f,y=d?e.features.length:1,m=0;m<y;m++){a=(c=!!(u=d?e.features[m].geometry:g?e.geometry:e)&&"GeometryCollection"===u.type)?u.geometries.length:1;for(var v=0;v<a;v++){var E=0,b=0;if(null!==(s=c?u.geometries[v]:u)){l=s.coordinates;var w=s.type;switch(h=0,w){case null:break;case"Point":if(!1===t(l,p,m,E,b))return!1;p++,E++;break;case"LineString":case"MultiPoint":for(r=0;r<l.length;r++){if(!1===t(l[r],p,m,E,b))return!1;p++,"MultiPoint"===w&&E++}"LineString"===w&&E++;break;case"Polygon":case"MultiLineString":for(r=0;r<l.length;r++){for(i=0;i<l[r].length-h;i++){if(!1===t(l[r][i],p,m,E,b))return!1;p++}"MultiLineString"===w&&E++,"Polygon"===w&&b++}"Polygon"===w&&E++;break;case"MultiPolygon":for(r=0;r<l.length;r++){for(b=0,i=0;i<l[r].length;i++){for(o=0;o<l[r][i].length-h;o++){if(!1===t(l[r][i][o],p,m,E,b))return!1;p++}b++}E++}break;case"GeometryCollection":for(r=0;r<s.geometries.length;r++)if(!1===x(s.geometries[r],t))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function _(e,t){if("Feature"===e.type)t(e,0);else if("FeatureCollection"===e.type)for(var n=0;n<e.features.length&&!1!==t(e.features[n],n);n++);}function O(e){var t=[];return x(e,function(e){t.push(e)}),t}function T(e,t){var n,r,i,o,s,a,l,u,c,h,p=0,f="FeatureCollection"===e.type,d="Feature"===e.type,g=f?e.features.length:1;for(n=0;n<g;n++){for(a=f?e.features[n].geometry:d?e.geometry:e,u=f?e.features[n].properties:d?e.properties:{},c=f?e.features[n].bbox:d?e.bbox:void 0,h=f?e.features[n].id:d?e.id:void 0,s=(l=!!a&&"GeometryCollection"===a.type)?a.geometries.length:1,i=0;i<s;i++)if(null!==(o=l?a.geometries[i]:a))switch(o.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(o,p,u,c,h))return!1;break;case"GeometryCollection":for(r=0;r<o.geometries.length;r++)if(!1===t(o.geometries[r],p,u,c,h))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,p,u,c,h))return!1;p++}}function A(e,t){T(e,function(e,n,r,i,o){var s,a=null===e?null:e.type;switch(a){case null:case"Point":case"LineString":case"Polygon":return!1!==t(f(e,r,{bbox:i,id:o}),n,0)&&void 0}switch(a){case"MultiPoint":s="Point";break;case"MultiLineString":s="LineString";break;case"MultiPolygon":s="Polygon"}for(var l=0;l<e.coordinates.length;l++){var u=e.coordinates[l];if(!1===t(f({type:s,coordinates:u},r),n,l))return!1}})}function C(e){let t=0;if(e&&e.length>0){t+=Math.abs(M(e[0]));for(let n=1;n<e.length;n++)t-=Math.abs(M(e[n]))}return t}var L=20294876564838.72,k=Math.PI/180;function M(e){const t=e.length-1;if(t<=2)return 0;let n=0,r=0;for(;r<t;){const i=e[r],o=e[r+1===t?0:r+1],s=e[r+2>=t?(r+2)%t:r+2],a=i[0]*k,l=o[1]*k;n+=(s[0]*k-a)*Math.sin(l),r++}return n*L}var R=function(e){return function(e,t,n){var r=n;return T(e,function(e,n,i,o,s){r=t(r,e,n,i,o,s)}),r}(e,(e,t)=>e+function(e){let t,n=0;switch(e.type){case"Polygon":return C(e.coordinates);case"MultiPolygon":for(t=0;t<e.coordinates.length;t++)n+=C(e.coordinates[t]);return n;case"Point":case"MultiPoint":case"LineString":case"MultiLineString":return 0}return 0}(t),0)},I={Polygon:3,LineString:2},N=e=>{var t;return null!==(t=null==e?void 0:e.geometry)&&void 0!==t?t:e},D=e=>{var t=N(e);return"Polygon"===(null==t?void 0:t.type)?t:null},G=e=>{for(var t,n,r=null!==(t=null===(n=e.coordinates)||void 0===n?void 0:n[0])&&void 0!==t?t:[],i=r.filter((e,t)=>0===t||e[0]!==r[t-1][0]||e[1]!==r[t-1][1]);i.length>1&&i[0][0]===i[i.length-1][0]&&i[0][1]===i[i.length-1][1];)i.pop();return i},j=e=>[...e,e[0]],V=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]),F=(e,t)=>e>0&&t<0||e<0&&t>0,B=(e,t,n,r)=>0===e&&((e,t,n)=>Math.min(e[0],n[0])<=t[0]&&t[0]<=Math.max(e[0],n[0])&&Math.min(e[1],n[1])<=t[1]&&t[1]<=Math.max(e[1],n[1]))(t,n,r),U=(e,t,n,r)=>{var i=V(n,r,e),o=V(n,r,t),s=V(e,t,n),a=V(e,t,r);return!(!F(i,o)||!F(s,a))||(B(i,n,e,r)||B(o,n,t,r)||B(s,e,n,t)||B(a,e,r,t))},H=(e,t)=>{for(var n=e.length,r=t?n:n-1,i=0;i<r;i++)for(var o=i+1;o<r;o++){if(!(o===i+1||t&&0===i&&o===r-1)&&U(e[i],e[(i+1)%n],e[o],e[(o+1)%n]))return!0}return!1},q=e=>{var t=D(e);if(!t)return{valid:!0};var n=G(t);return n.length<4?{valid:!0}:H(n,!0)?{valid:!1,reason:"Shape must not intersect itself"}:{valid:!0}},Y=e=>{var t=D(e);if(!t)return{valid:!0};var n=G(t);if(n.length<I.Polygon)return{valid:!0};var r=0;try{r=R({type:"Feature",geometry:{type:"Polygon",coordinates:[j(n)]},properties:{}})}catch(e){return{valid:!0}}return r>0?{valid:!0}:{valid:!1,reason:"Shape must enclose an area"}},z={Polygon:"Shape needs at least 3 points",LineString:"Line needs at least 2 points"},W=[q,Y,e=>{var t,n,r=N(e);return"Polygon"===(null==r?void 0:r.type)?G(r).length>=I.Polygon?{valid:!0}:{valid:!1,reason:z.Polygon}:"LineString"===(null==r?void 0:r.type)?(null!==(t=null===(n=r.coordinates)||void 0===n?void 0:n.length)&&void 0!==t?t:0)>=I.LineString?{valid:!0}:{valid:!1,reason:z.LineString}:{valid:!0}}],X=[q,Y],K=[e=>(e=>{var t=D(e);if(!t)return!1;var n=G(t);return!(n.length<4)&&H(n,!1)})(e)?{valid:!1,reason:"Shape must not intersect itself"}:{valid:!0}];function $(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Z(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?$(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):$(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var J=e=>void 0===e||!0===e?{valid:!0}:!1===e?{valid:!1,reason:null}:{valid:!1!==e.valid,reason:e.reason},Q=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{rules:r=W,onGeometryChange:i}=n;for(var o of r){var s=J(o(e,t));if(!s.valid)return s}return"function"==typeof i?J(i(Z({feature:e},t))):{valid:!0}},ee={Polygon:"draw_polygon",LineString:"draw_line"},te=e=>{var{placed:t,point:n,geometryType:r,onGeometryChange:i}=e,o=[...t,n],s={type:"Feature",geometry:"Polygon"===r?{type:"Polygon",coordinates:[o]}:{type:"LineString",coordinates:o},properties:{}},a=ee[r],{valid:l,reason:u}=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{rules:r=K,onGeometryChange:i}=n;return Q(e,Z(Z({},t),{},{phase:"place"}),{rules:r,onGeometryChange:i})}(s,{mode:a,vertexIndex:t.length},{onGeometryChange:i});return l?{valid:!0}:{valid:!1,blocked:{feature:s,reason:null!=u?u:null,phase:"place",mode:a,vertexIndex:t.length}}},ne=function(e){var t,n,r,i,o,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{rules:l=X,onGeometryChange:u}=a,c=null!==(t=null==e||null===(n=e.geometry)||void 0===n?void 0:n.type)&&void 0!==t?t:null==e?void 0:e.type,h=null!==(r=I[c])&&void 0!==r?r:0,p=(null!==(i=s.numVertices)&&void 0!==i?i:0)<h?[]:l;return Q(e,Z(Z({},s),{},{phase:null!==(o=s.phase)&&void 0!==o?o:"preview"}),{rules:p,onGeometryChange:u})},re="rgba(29,112,184,1)",ie="#ffffff",oe="rgba(11,12,12,1)",se="rgba(212,53,28,0.5)",ae={editStroke:{light:re,dark:ie},editFill:{light:"rgba(29,112,184,0.1)",dark:"rgba(255,255,255,0.1)"},editVertex:{light:re,dark:ie},editMidpoint:{light:re,dark:ie},editHalo:{light:ie,dark:oe},editActive:{light:oe,dark:ie},splitInvalid:{light:re,dark:ie},splitValid:{light:re,dark:ie},invalidStroke:{light:re,dark:ie},shapeStroke:"rgba(212,53,28,1)",shapeFill:se,snapVertex:se,snapMidpoint:"rgba(40,161,151,1)",snapEdge:"rgba(29,112,184,0.5)"},le={strokeWidth:2,vertexRadius:6,midpointRadius:4,vertexHaloRadius:8,midpointHaloRadius:6,touchTargetSize:48},ue={snapRadius:12},ce={nudgeAmount:1,stepAmount:5},he={small:1,medium:1.5,large:2};function pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function fe(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?pe(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):pe(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var de="edit_vertex",ge=(e,t)=>n=>{var r;e.emit("draw:geometryinvalid",n),n.reason&&(r=n.reason,!Object.values(z).includes(r))&&t.show(n.reason)};function ye(e){var{appState:t,appConfig:n,mapState:r,pluginState:i,mapProvider:o,eventBus:s,hints:a,resetState:l}=e,{draw:u}=o,c=ge(s,a),{feature:h,tempFeature:p}=i,{dispatch:f}=i,d=null;return fe(fe({handleDone:()=>{u.done()},handleCancel:()=>{u.getMode()===de&&null!=p&&p.id&&u.add(h),d=null,u.cancel(),l(),s.emit("draw:cancelled",h)},handleUndo:()=>u.undo(),handleDeleteVertex:()=>u.deleteVertex(),handleSnap:()=>{i.dispatch({type:"TOGGLE_SNAP"}),u.setSnapEnabled(!i.snap)},onCreate:e=>{var{valid:i,reason:o}=Q(e,{phase:"create",mode:u.getMode()},{onGeometryChange:u._geometryValidator});if(!i)return d=e.id,c({feature:e,reason:o,phase:"create",mode:de}),void setTimeout(()=>((e,t)=>{var n,r,i,{draw:o,appState:s,appConfig:a,mapState:l,dispatch:u}=e;o.changeMode(de,{container:null==s||null===(n=s.layoutRefs)||void 0===n||null===(n=n.viewportRef)||void 0===n?void 0:n.current,deleteVertexButtonId:"".concat(null==a?void 0:a.id,"-draw-delete-point"),undoButtonId:"".concat(null==a?void 0:a.id,"-draw-undo"),isPanEnabled:"keyboard"!==(null==s?void 0:s.interfaceType),interfaceType:null==s?void 0:s.interfaceType,scale:he[null==l?void 0:l.mapSize],featureId:t,getSnapEnabled:()=>o.isSnapEnabled()});var c=o.get(t);u({type:"SET_FEATURE",payload:{feature:c,tempFeature:c}}),u({type:"SET_MODE",payload:de}),u({type:"SET_GEOMETRY_VALID",payload:!1}),null===(r=o.setGeometryValid)||void 0===r||r.call(o,!1),null===(i=o.setInvalid)||void 0===i||i.call(o,!0)})({draw:u,appState:t,appConfig:n,mapState:r,dispatch:f},e.id),0);l(),setTimeout(()=>u.changeMode("disabled"),0),s.emit("draw:created",e)},onEditFinish:e=>{l(),setTimeout(()=>u.changeMode("disabled"),0),d&&e.id===d?(d=null,s.emit("draw:created",e)):s.emit("draw:edited",e)},onCancel:()=>{}},(e=>{var{draw:t,pluginState:n,mapProvider:r,eventBus:i}=e;return{onVertexSelection:e=>{n.dispatch({type:"SET_SELECTED_VERTEX_INDEX",payload:e}),r.activeMoveTarget=e.index>=0?(e=>({move:(t,n,r)=>e.nudgeSelectedVertex(t,n,r),label:"vertex"}))(t):null,i.emit("draw:vertexselection",e)},onVertexChange:e=>{n.dispatch({type:"SET_SELECTED_VERTEX_INDEX",payload:{index:-1,numVertices:e.numVertices}}),r.activeMoveTarget=null}}})({draw:u,pluginState:i,mapProvider:o,eventBus:s})),{},{onUndoChange:e=>{i.dispatch({type:"SET_UNDO_STACK_LENGTH",payload:e})},onUpdate:e=>{s.emit("draw:updated",e)},onGeometryChange:e=>{var t;if(null!=e&&e.phase){var n,r=u.getMode(),o={phase:e.phase,vertexIndex:e.vertexIndex,mode:r},{valid:s,reason:a}=Q(e.feature,o,{onGeometryChange:u._geometryValidator});if(i.dispatch({type:"SET_GEOMETRY_VALID",payload:s}),null===(t=u.setGeometryValid)||void 0===t||t.call(u,s),r===de)null===(n=u.setInvalid)||void 0===n||n.call(u,!s);s||c(fe(fe({reason:a},o),{},{feature:e.feature}))}},onPlacementBlocked:e=>{c(e)},onValidityChange:e=>{var t;i.dispatch({type:"SET_GEOMETRY_VALID",payload:e.valid}),null===(t=u.setGeometryValid)||void 0===t||t.call(u,e.valid)},onCanPlaceChange:e=>{i.dispatch({type:"SET_CAN_ADD_POINT",payload:e.canPlace})},onInterfaceTypeChange:e=>{s.emit("draw:interfacetypechange",{interfaceType:e.interfaceType})}})}function me(e){var{appState:t,appConfig:n,mapState:r,pluginState:i,mapProvider:o,buttonConfig:s,eventBus:a,hints:l}=e,{draw:u}=o,h=ye({appState:t,appConfig:n,mapState:r,pluginState:i,mapProvider:o,eventBus:a,hints:l,resetState:()=>{i.dispatch({type:"SET_MODE",payload:null}),i.dispatch({type:"SET_FEATURE",payload:{feature:null,tempFeature:null}}),o.activeMoveTarget=null}});return function(e,t){var{drawDone:n,drawCancel:r,drawUndo:i,drawDeletePoint:o,drawSnap:s}=e;n.onClick=t.handleDone,r.onClick=t.handleCancel,i.onClick=t.handleUndo,o&&(o.onClick=t.handleDeleteVertex),s&&(s.onClick=t.handleSnap)}(s,h),function(e,t){e.on(c.CREATE,t.onCreate),e.on(c.EDIT_FINISH,t.onEditFinish),e.on(c.CANCEL,t.onCancel),e.on(c.VERTEX_SELECTION,t.onVertexSelection),e.on(c.VERTEX_CHANGE,t.onVertexChange),e.on(c.UNDO_CHANGE,t.onUndoChange),e.on(c.UPDATE,t.onUpdate),e.on(c.GEOMETRY_CHANGE,t.onGeometryChange),e.on(c.PLACEMENT_BLOCKED,t.onPlacementBlocked),e.on(c.VALIDITY_CHANGE,t.onValidityChange),e.on(c.CAN_PLACE_CHANGE,t.onCanPlaceChange),e.on(c.INTERFACE_TYPE_CHANGE,t.onInterfaceTypeChange)}(u,h),()=>{!function(e){var{drawDone:t,drawCancel:n,drawUndo:r,drawDeletePoint:i,drawSnap:o}=e;t.onClick=null,n.onClick=null,r.onClick=null,i&&(i.onClick=null),o&&(o.onClick=null)}(s),function(e,t){e.off(c.CREATE,t.onCreate),e.off(c.EDIT_FINISH,t.onEditFinish),e.off(c.CANCEL,t.onCancel),e.off(c.VERTEX_SELECTION,t.onVertexSelection),e.off(c.VERTEX_CHANGE,t.onVertexChange),e.off(c.UNDO_CHANGE,t.onUndoChange),e.off(c.UPDATE,t.onUpdate),e.off(c.GEOMETRY_CHANGE,t.onGeometryChange),e.off(c.PLACEMENT_BLOCKED,t.onPlacementBlocked),e.off(c.VALIDITY_CHANGE,t.onValidityChange),e.off(c.CAN_PLACE_CHANGE,t.onCanPlaceChange),e.off(c.INTERFACE_TYPE_CHANGE,t.onInterfaceTypeChange)}(u,h)}}var ve=new Set(["stroke","fill","strokeWidth"]),Ee=e=>{if(!e)return{};var t={};for(var[n,r]of Object.entries(e))if(ve.has(n)&&"object"==typeof r&&null!==r){var i=Object.entries(r);for(var[o,s]of(i.length>0&&(t[n]=i[0][1]),i))t["".concat(n).concat(o.charAt(0).toUpperCase()+o.slice(1))]=s}else t[n]=r;return t},be=["stroke","fill","strokeWidth","properties","onGeometryChange"];function we(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Se(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?we(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):we(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Pe=["stroke","fill","strokeWidth","properties","onGeometryChange"];function xe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _e(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?xe(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):xe(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Oe=["stroke","fill","strokeWidth","properties"];function Te(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Ae(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Te(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Te(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function Ce(e){if(!e)throw new Error("geojson is required");switch(e.type){case"Feature":return Le(e);case"FeatureCollection":return function(e){var t={type:"FeatureCollection"};return Object.keys(e).forEach(function(n){switch(n){case"type":case"features":return;default:t[n]=e[n]}}),t.features=e.features.map(function(e){return Le(e)}),t}(e);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return Me(e);default:throw new Error("unknown GeoJSON type")}}function Le(e){var t={type:"Feature"};return Object.keys(e).forEach(function(n){switch(n){case"type":case"properties":case"geometry":return;default:t[n]=e[n]}}),t.properties=ke(e.properties),t.geometry=Me(e.geometry),t}function ke(e){var t={};return e?(Object.keys(e).forEach(function(n){var r=e[n];"object"==typeof r?null===r?t[n]=null:Array.isArray(r)?t[n]=r.map(function(e){return e}):t[n]=ke(r):t[n]=r}),t):t}function Me(e){var t={type:e.type};return e.bbox&&(t.bbox=e.bbox),"GeometryCollection"===e.type?(t.geometries=e.geometries.map(function(e){return Me(e)}),t):(t.coordinates=Re(e.coordinates),t)}function Re(e){var t=e;return"object"!=typeof t[0]?t.slice():t.map(function(e){return Re(e)})}function Ie(e){for(var t,n,r=function(e){if(Array.isArray(e))return e;if("Feature"===e.type){if(null!==e.geometry)return e.geometry.coordinates}else if(e.coordinates)return e.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}(e),i=0,o=1;o<r.length;)t=n||r[0],i+=((n=r[o])[0]-t[0])*(n[1]+t[1]),o++;return i>0}function Ne(e){if(Array.isArray(e))return e;if("Feature"===e.type){if(null!==e.geometry)return e.geometry.coordinates}else if(e.coordinates)return e.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function De(e,t){if(null===(n=t=t||{})||"object"!=typeof n||Array.isArray(n))throw new Error("options is invalid");var n,r=t.reverse||!1,i=t.mutate||!1;if(!e)throw new Error("<geojson> is required");if("boolean"!=typeof r)throw new Error("<reverse> must be a boolean");if("boolean"!=typeof i)throw new Error("<mutate> must be a boolean");!1===i&&(e=Ce(e));var o=[];switch(e.type){case"GeometryCollection":return T(e,function(e){Ge(e,r)}),e;case"FeatureCollection":return _(e,function(e){_(Ge(e,r),function(e){o.push(e)})}),m(o)}return Ge(e,r)}function Ge(e,t){switch("Feature"===e.type?e.geometry.type:e.type){case"GeometryCollection":return T(e,function(e){Ge(e,t)}),e;case"LineString":return je(Ne(e),t),e;case"Polygon":return Ve(Ne(e),t),e;case"MultiLineString":return Ne(e).forEach(function(e){je(e,t)}),e;case"MultiPolygon":return Ne(e).forEach(function(e){Ve(e,t)}),e;case"Point":case"MultiPoint":return e}}function je(e,t){Ie(e)===t&&e.reverse()}function Ve(e,t){Ie(e[0])!==t&&e[0].reverse();for(var n=1;n<e.length;n++)Ie(e[n])===t&&e[n].reverse()}const Fe=11102230246251565e-32,Be=134217729,Ue=(3+8*Fe)*Fe;function He(e,t,n,r,i){let o,s,a,l,u=t[0],c=r[0],h=0,p=0;c>u==c>-u?(o=u,u=t[++h]):(o=c,c=r[++p]);let f=0;if(h<e&&p<n)for(c>u==c>-u?(s=u+o,a=o-(s-u),u=t[++h]):(s=c+o,a=o-(s-c),c=r[++p]),o=s,0!==a&&(i[f++]=a);h<e&&p<n;)c>u==c>-u?(s=o+u,l=s-o,a=o-(s-l)+(u-l),u=t[++h]):(s=o+c,l=s-o,a=o-(s-l)+(c-l),c=r[++p]),o=s,0!==a&&(i[f++]=a);for(;h<e;)s=o+u,l=s-o,a=o-(s-l)+(u-l),u=t[++h],o=s,0!==a&&(i[f++]=a);for(;p<n;)s=o+c,l=s-o,a=o-(s-l)+(c-l),c=r[++p],o=s,0!==a&&(i[f++]=a);return 0===o&&0!==f||(i[f++]=o),f}function qe(e){return new Float64Array(e)}const Ye=qe(4),ze=qe(8),We=qe(12),Xe=qe(16),Ke=qe(4);function $e(e,t,n,r,i,o){const s=(t-o)*(n-i),a=(e-i)*(r-o),l=s-a,u=Math.abs(s+a);return Math.abs(l)>=33306690738754716e-32*u?l:-function(e,t,n,r,i,o,s){let a,l,u,c,h,p,f,d,g,y,m,v,E,b,w,S,P,x;const _=e-i,O=n-i,T=t-o,A=r-o;b=_*A,p=Be*_,f=p-(p-_),d=_-f,p=Be*A,g=p-(p-A),y=A-g,w=d*y-(b-f*g-d*g-f*y),S=T*O,p=Be*T,f=p-(p-T),d=T-f,p=Be*O,g=p-(p-O),y=O-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,h=w-m,Ye[0]=w-(m+h)+(h-P),v=b+m,h=v-b,E=b-(v-h)+(m-h),m=E-S,h=E-m,Ye[1]=E-(m+h)+(h-S),x=v+m,h=x-v,Ye[2]=v-(x-h)+(m-h),Ye[3]=x;let C=function(e,t){let n=t[0];for(let r=1;r<e;r++)n+=t[r];return n}(4,Ye),L=22204460492503146e-32*s;if(C>=L||-C>=L)return C;if(h=e-_,a=e-(_+h)+(h-i),h=n-O,u=n-(O+h)+(h-i),h=t-T,l=t-(T+h)+(h-o),h=r-A,c=r-(A+h)+(h-o),0===a&&0===l&&0===u&&0===c)return C;if(L=11093356479670487e-47*s+Ue*Math.abs(C),C+=_*c+A*a-(T*u+O*l),C>=L||-C>=L)return C;b=a*A,p=Be*a,f=p-(p-a),d=a-f,p=Be*A,g=p-(p-A),y=A-g,w=d*y-(b-f*g-d*g-f*y),S=l*O,p=Be*l,f=p-(p-l),d=l-f,p=Be*O,g=p-(p-O),y=O-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,h=w-m,Ke[0]=w-(m+h)+(h-P),v=b+m,h=v-b,E=b-(v-h)+(m-h),m=E-S,h=E-m,Ke[1]=E-(m+h)+(h-S),x=v+m,h=x-v,Ke[2]=v-(x-h)+(m-h),Ke[3]=x;const k=He(4,Ye,4,Ke,ze);b=_*c,p=Be*_,f=p-(p-_),d=_-f,p=Be*c,g=p-(p-c),y=c-g,w=d*y-(b-f*g-d*g-f*y),S=T*u,p=Be*T,f=p-(p-T),d=T-f,p=Be*u,g=p-(p-u),y=u-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,h=w-m,Ke[0]=w-(m+h)+(h-P),v=b+m,h=v-b,E=b-(v-h)+(m-h),m=E-S,h=E-m,Ke[1]=E-(m+h)+(h-S),x=v+m,h=x-v,Ke[2]=v-(x-h)+(m-h),Ke[3]=x;const M=He(k,ze,4,Ke,We);b=a*c,p=Be*a,f=p-(p-a),d=a-f,p=Be*c,g=p-(p-c),y=c-g,w=d*y-(b-f*g-d*g-f*y),S=l*u,p=Be*l,f=p-(p-l),d=l-f,p=Be*u,g=p-(p-u),y=u-g,P=d*y-(S-f*g-d*g-f*y),m=w-P,h=w-m,Ke[0]=w-(m+h)+(h-P),v=b+m,h=v-b,E=b-(v-h)+(m-h),m=E-S,h=E-m,Ke[1]=E-(m+h)+(h-S),x=v+m,h=x-v,Ke[2]=v-(x-h)+(m-h),Ke[3]=x;const R=He(M,We,4,Ke,Xe);return Xe[R-1]}(e,t,n,r,i,o,u)}function Ze(e,t){var n,r,i,o,s,a,l,u,c,h=0,p=e[0],f=e[1],d=t.length;for(n=0;n<d;n++){r=0;var g=t[n],y=g.length-1;if((u=g[0])[0]!==g[y][0]&&u[1]!==g[y][1])throw new Error("First and last coordinates in a ring must be the same");for(o=u[0]-p,s=u[1]-f;r<y;r++){if(a=(c=g[r+1])[0]-p,l=c[1]-f,0===s&&0===l){if(a<=0&&o>=0||o<=0&&a>=0)return 0}else if(l>=0&&s<=0||l<=0&&s>=0){if(0===(i=$e(o,a,s,l,0,0)))return 0;(i>0&&l>0&&s<=0||i<0&&l<=0&&s>0)&&h++}u=c,s=l,o=a}}return h%2!=0}var Je=function(e,t,n,r,i){this.p1=e,this.p2=t,this.edgeType=n,this.originalIndex=r,this.polygonContourId=i,this.interiorRing=!1,this.minX=Math.min(e.p[0],t.p[0]),this.minY=Math.min(e.p[1],t.p[1]),this.maxX=Math.max(e.p[0],t.p[0]),this.maxY=Math.max(e.p[1],t.p[1]),this.intersectionPoints=[],this.nextEdge=null},Qe=function(e){this.p=e},et=function(e,t){this.id=e,this.rawCoords=t};function tt(e,t){return!(e.maxX<t[0])&&(!(e.minX>t[2])&&(!(e.maxY<t[1])&&!(e.minY>t[3])))}var nt=function(e,t,n,r){this.p=e,this.polylineEdge=t,this.polygonEdge=n,this.isHeadingIn=r,this.distanceFromPolylineEdgeStart=rt(this.polylineEdge.p1.p,this.p),this.distanceFromPolygonEdgeStart=rt(this.polygonEdge.p1.p,this.p),this.polygonEdge.intersectionPoints.push(this),this.polylineEdge.intersectionPoints.push(this),this.visitCount=0};function rt(e,t){var n=t[0]-e[0],r=t[1]-e[1];return n*=n,r*=r,Math.sqrt(n+r)}nt.prototype.incrementVisitCount=function(){this.visitCount=this.visitCount+1};var it=1e-9;function ot(e,t){return e[0]*t[1]-e[1]*t[0]}function st(e,t){return e[0]*t[0]+e[1]*t[1]}function at(e,t,n){return[e[0]+t*n[0],e[1]+t*n[1]]}function lt(e,t,n){var r=[e.p2.p[0]-e.p1.p[0],e.p2.p[1]-e.p1.p[1]],i=[t.p2.p[0]-t.p1.p[0],t.p2.p[1]-t.p1.p[1]],o=[t.p1.p[0]-e.p1.p[0],t.p1.p[1]-e.p1.p[1]],s=ot(r,i),a=s*s,l=st(r,r);if(a>0){var u=ot(o,i)/s;if(u<0||u>1)return null;var c=ot(o,r)/s;return c<0||c>1?null:0===u||1===u?[at(e.p1.p,u,r)]:0===c||1===c?[at(t.p1.p,c,i)]:[at(e.p1.p,u,r)]}var h=st(o,o);if((a=(s=ot(o,r))*s)>it*l*h)return null;var p=st(r,o)/l,f=p+st(r,i)/l,d=Math.min(p,f),g=Math.max(p,f);return d<=1&&g>=0?1===d?[at(e.p1.p,d>0?d:0,r)]:0===g?[at(e.p1.p,g<1?g:1,r)]:[at(e.p1.p,d>0?d:0,r),at(e.p1.p,g<1?g:1,r)]:null}function ut(e,t){var n=[],r=[],i=[],o=function(e,t,n,r,i){for(var o=0,s=[],a="Feature"===t.type?t.geometry:t,l="LineString"===a.type?[a.coordinates]:a.coordinates,u=0,c=0;c<l.length;c++){for(var h=l[c].length-1,p=new Qe(l[c][0]),f=null,d={nextEdge:null},g=0;g<h;g++){f=new Qe(l[c][g+1]),p.nextPoint=f,f.prevPoint=p;var y=new Je(p,f,"polyline",u,null);r.push(y),d.nextEdge=y,y.prevEdge=d,i[0]=Math.min(i[0],p.p[0]),i[1]=Math.min(i[1],p.p[1]),i[2]=Math.max(i[2],p.p[0]),i[3]=Math.max(i[3],p.p[1]),p=f,u+=1,d=y}i[0]=Math.min(i[0],l[c][h][0]),i[1]=Math.min(i[1],l[c][h][1]),i[2]=Math.max(i[2],l[c][h][0]),i[3]=Math.max(i[3],l[c][h][1])}for(var m="Feature"===e.type?e.geometry:e,v="Polygon"===m.type?[m.coordinates]:m.coordinates,E=v.length,b=0;b<E;b++)for(var w=v[b].length,S=0;S<w;S++){o+=1;var P=v[b][S],x=P.length;s.push(new et(o,P));for(var _=new Qe(P[0]),O=_,T=void 0,A=null,C={nextEdge:null,prevEdge:null},L=null,k=1;k<x;k++)T=new Qe(P[k]),O.nextPoint=T,T.prevPoint=O,A=new Je(O,T,"polygon",u,o),C.nextEdge=A,A.prevEdge=C,1===k&&(L=A),S>0&&(A.interiorRing=!0),A.intersectPolylineBbox=tt(A,i),n.push(A),O=T,u+=1,C=A;A.nextEdge=L,L.prevEdge=A,T.nextPoint=_.nextPoint,_.prevPoint=T.prevPoint}return s}(De(e),t,r,i,[1/0,1/0,1/0,1/0]);if(function(e,t,n){var r,i,o,s=t.length,a=e.length;for(r=0;r<s;r++){var l=t[r];for(i=0;i<a;i++){var u=e[i];if(u.intersectPolylineBbox&&!(u.maxX<l.minX||u.minX>l.maxX||u.maxY<l.minY||u.minY>l.maxY)){var c=lt(l,u);if(null!==c)for(o=0;o<c.length;o++){var h=$e(u.p1.p[0],u.p1.p[1],u.p2.p[0],u.p2.p[1],l.p1.p[0],l.p1.p[1]),p=new nt(c[o],l,u,h>0);n.push(p)}}}}t.forEach(function(e){e.intersectionPoints.sort(function(e,t){return e.distanceFromPolylineEdgeStart-t.distanceFromPolylineEdgeStart})}),e.forEach(function(e){e.intersectionPoints.sort(function(e,t){return e.distanceFromPolygonEdgeStart-t.distanceFromPolygonEdgeStart})})}(r,i,n),0===n.length)return e;var s={};o.forEach(function(e){return s[e.id]=0}),n.forEach(function(e){var t=e.polygonEdge.polygonContourId;s[t]=s[t]+1});for(var a=0,l=[],u=null,c=0;c<i.length;c++){var h=i[c];if(h.intersectionPoints.length>0){u=h.intersectionPoints[0];break}}for(var p=u,f={visitCount:1};u!==f&&!(a>2*n.length);){if(a=a++,f.visitCount>=2){for(var d=!1,g=0;g<n.length;g++){var y=n[g];if(y.visitCount<2){p=y,d=!0;break}}if(!d)break}p.visitCount=p.visitCount+1;var m=[];l.push(m),m.push(p.p),p.visitCount=p.visitCount+1;var v=ft(p,m),E=!1;if(v===(f=v)&&2===n.length)for(var b=0;b<n.length;b++){n[b].visitCount<2&&(E=!0)}for(;v!==p||E;){(v=(v.isHeadingIn?yt:gt)(v,m))!==p&&(v=ft(v,m)),E=!1}if(f.visitCount>=2){for(var w=!1,S=0;S<n.length;S++){var P=n[S];if(P.visitCount<2){p=P,w=!0;break}}w&&(f=p)}p=f}for(var x=l.map(function(e){return[e]}),_=Object.keys(s),O=0;O<_.length;O++){var T=_[O];if(0===s[T])pt(ht(ct(r,parseInt(T)),o),x)}return{type:"Feature",properties:{},geometry:{type:"MultiPolygon",coordinates:x}}}function ct(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.polygonContourId===t)return r}}function ht(e,t){return t.find(function(t){return t.id===e.polygonContourId}).rawCoords}function pt(e,t){for(var n=0;n<t.length;n++){var r=t[n];if(Ze(e[0],[r[0]]))return void r.push(e)}t.push([e])}function ft(e,t){var n=e.polygonEdge;if(n.intersectionPoints.length>1&&n.intersectionPoints[n.intersectionPoints.length-1]!==e){var r=dt(e,n.intersectionPoints),i=n.intersectionPoints[r+1];return t.push(i.p),i.incrementVisitCount(),i}for(var o=!0;o;){if(t.push(n.p2.p),null===(n=n.nextEdge))return e;n.intersectionPoints.length>0&&(o=!1)}return n.intersectionPoints[0].incrementVisitCount(),t.push(n.intersectionPoints[0].p),n.intersectionPoints[0]}function dt(e,t){for(var n=0;n<t.length;n++){if(t[n]===e)return n}return null}function gt(e,t){var n=e.polylineEdge;if(2===n.intersectionPoints.length){var r=n.intersectionPoints[n.intersectionPoints.length-1];if(r===e){var i=n.intersectionPoints[0];return t.push(i.p),i.incrementVisitCount(),i}return t.push(r.p),r.incrementVisitCount(),r}if(n.intersectionPoints.length>2&&n.intersectionPoints[0]!==e){var o=dt(e,n.intersectionPoints),s=n.intersectionPoints[o-1];return t.push(s.p),s.incrementVisitCount(),s}for(var a=!0;a;){if(t.push(n.p1.p),void 0===(n=n.prevEdge).originalIndex)return e;n.intersectionPoints.length>0&&(a=!1)}if(void 0===n.originalIndex)return e;var l=n.intersectionPoints[n.intersectionPoints.length-1];return l.incrementVisitCount(),t.push(l.p),l}function yt(e,t){var n=e.polylineEdge;if(n.intersectionPoints.length>1&&n.intersectionPoints[n.intersectionPoints.length-1]!==e){var r=dt(e,n.intersectionPoints),i=n.intersectionPoints[r+1];return t.push(i.p),i.incrementVisitCount(),i}for(var o=!0;o;){if(t.push(n.p2.p),null===(n=n.nextEdge))return e;n.intersectionPoints.length>0&&(o=!1)}if(void 0===n)return e;var s=n.intersectionPoints[0];return s.incrementVisitCount(),t.push(s.p),s}var mt=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,vt=Math.ceil,Et=Math.floor,bt="[BigNumber Error] ",wt=bt+"Number primitive has more than 15 significant digits: ",St=1e14,Pt=14,xt=9007199254740991,_t=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Ot=1e7,Tt=1e9;function At(e){var t=0|e;return e>0||e===t?t:t-1}function Ct(e){for(var t,n,r=1,i=e.length,o=e[0]+"";r<i;){for(t=e[r++]+"",n=Pt-t.length;n--;t="0"+t);o+=t}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function Lt(e,t){var n,r,i=e.c,o=t.c,s=e.s,a=t.s,l=e.e,u=t.e;if(!s||!a)return null;if(n=i&&!i[0],r=o&&!o[0],n||r)return n?r?0:-a:s;if(s!=a)return s;if(n=s<0,r=l==u,!i||!o)return r?0:!i^n?1:-1;if(!r)return l>u^n?1:-1;for(a=(l=i.length)<(u=o.length)?l:u,s=0;s<a;s++)if(i[s]!=o[s])return i[s]>o[s]^n?1:-1;return l==u?0:l>u^n?1:-1}function kt(e,t,n,r){if(e<t||e>n||e!==Et(e))throw Error(bt+(r||"Argument")+("number"==typeof e?e<t||e>n?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function Mt(e){var t=e.c.length-1;return At(e.e/Pt)==t&&e.c[t]%2!=0}function Rt(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function It(e,t,n){var r,i;if(t<0){for(i=n+".";++t;i+=n);e=i+e}else if(++t>(r=e.length)){for(i=n,t-=r;--t;i+=n);e+=i}else t<r&&(e=e.slice(0,t)+"."+e.slice(t));return e}var Nt=function e(t){var n,r,i,o,s,a,l,u,c,h,p=O.prototype={constructor:O,toString:null,valueOf:null},f=new O(1),d=20,g=4,y=-7,m=21,v=-1e7,E=1e7,b=!1,w=1,S=0,P={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:" ",suffix:""},x="0123456789abcdefghijklmnopqrstuvwxyz",_=!0;function O(e,t){var n,o,s,a,l,u,c,h,p=this;if(!(p instanceof O))return new O(e,t);if(null==t){if(e&&!0===e._isBigNumber)return p.s=e.s,void(!e.c||e.e>E?p.c=p.e=null:e.e<v?p.c=[p.e=0]:(p.e=e.e,p.c=e.c.slice()));if((u="number"==typeof e)&&0*e==0){if(p.s=1/e<0?(e=-e,-1):1,e===~~e){for(a=0,l=e;l>=10;l/=10,a++);return void(a>E?p.c=p.e=null:(p.e=a,p.c=[e]))}h=String(e)}else{if(!mt.test(h=String(e)))return i(p,h,u);p.s=45==h.charCodeAt(0)?(h=h.slice(1),-1):1}(a=h.indexOf("."))>-1&&(h=h.replace(".","")),(l=h.search(/e/i))>0?(a<0&&(a=l),a+=+h.slice(l+1),h=h.substring(0,l)):a<0&&(a=h.length)}else{if(kt(t,2,x.length,"Base"),10==t&&_)return L(p=new O(e),d+p.e+1,g);if(h=String(e),u="number"==typeof e){if(0*e!=0)return i(p,h,u,t);if(p.s=1/e<0?(h=h.slice(1),-1):1,O.DEBUG&&h.replace(/^0\.0*|\./,"").length>15)throw Error(wt+e)}else p.s=45===h.charCodeAt(0)?(h=h.slice(1),-1):1;for(n=x.slice(0,t),a=l=0,c=h.length;l<c;l++)if(n.indexOf(o=h.charAt(l))<0){if("."==o){if(l>a){a=c;continue}}else if(!s&&(h==h.toUpperCase()&&(h=h.toLowerCase())||h==h.toLowerCase()&&(h=h.toUpperCase()))){s=!0,l=-1,a=0;continue}return i(p,String(e),u,t)}u=!1,(a=(h=r(h,t,10,p.s)).indexOf("."))>-1?h=h.replace(".",""):a=h.length}for(l=0;48===h.charCodeAt(l);l++);for(c=h.length;48===h.charCodeAt(--c););if(h=h.slice(l,++c)){if(c-=l,u&&O.DEBUG&&c>15&&(e>xt||e!==Et(e)))throw Error(wt+p.s*e);if((a=a-l-1)>E)p.c=p.e=null;else if(a<v)p.c=[p.e=0];else{if(p.e=a,p.c=[],l=(a+1)%Pt,a<0&&(l+=Pt),l<c){for(l&&p.c.push(+h.slice(0,l)),c-=Pt;l<c;)p.c.push(+h.slice(l,l+=Pt));l=Pt-(h=h.slice(l)).length}else l-=c;for(;l--;h+="0");p.c.push(+h)}}else p.c=[p.e=0]}function T(e,t,n,r){var i,o,s,a,l;if(null==n?n=g:kt(n,0,8),!e.c)return e.toString();if(i=e.c[0],s=e.e,null==t)l=Ct(e.c),l=1==r||2==r&&(s<=y||s>=m)?Rt(l,s):It(l,s,"0");else if(o=(e=L(new O(e),t,n)).e,a=(l=Ct(e.c)).length,1==r||2==r&&(t<=o||o<=y)){for(;a<t;l+="0",a++);l=Rt(l,o)}else if(t-=s+(2===r&&o>s),l=It(l,o,"0"),o+1>a){if(--t>0)for(l+=".";t--;l+="0");}else if((t+=o-a)>0)for(o+1==a&&(l+=".");t--;l+="0");return e.s<0&&i?"-"+l:l}function A(e,t){for(var n,r,i=1,o=new O(e[0]);i<e.length;i++)(!(r=new O(e[i])).s||(n=Lt(o,r))===t||0===n&&o.s===t)&&(o=r);return o}function C(e,t,n){for(var r=1,i=t.length;!t[--i];t.pop());for(i=t[0];i>=10;i/=10,r++);return(n=r+n*Pt-1)>E?e.c=e.e=null:n<v?e.c=[e.e=0]:(e.e=n,e.c=t),e}function L(e,t,n,r){var i,o,s,a,l,u,c,h=e.c,p=_t;if(h){e:{for(i=1,a=h[0];a>=10;a/=10,i++);if((o=t-i)<0)o+=Pt,s=t,l=h[u=0],c=Et(l/p[i-s-1]%10);else if((u=vt((o+1)/Pt))>=h.length){if(!r)break e;for(;h.length<=u;h.push(0));l=c=0,i=1,s=(o%=Pt)-Pt+1}else{for(l=a=h[u],i=1;a>=10;a/=10,i++);c=(s=(o%=Pt)-Pt+i)<0?0:Et(l/p[i-s-1]%10)}if(r=r||t<0||null!=h[u+1]||(s<0?l:l%p[i-s-1]),r=n<4?(c||r)&&(0==n||n==(e.s<0?3:2)):c>5||5==c&&(4==n||r||6==n&&(o>0?s>0?l/p[i-s]:0:h[u-1])%10&1||n==(e.s<0?8:7)),t<1||!h[0])return h.length=0,r?(t-=e.e+1,h[0]=p[(Pt-t%Pt)%Pt],e.e=-t||0):h[0]=e.e=0,e;if(0==o?(h.length=u,a=1,u--):(h.length=u+1,a=p[Pt-o],h[u]=s>0?Et(l/p[i-s]%p[s])*a:0),r)for(;;){if(0==u){for(o=1,s=h[0];s>=10;s/=10,o++);for(s=h[0]+=a,a=1;s>=10;s/=10,a++);o!=a&&(e.e++,h[0]==St&&(h[0]=1));break}if(h[u]+=a,h[u]!=St)break;h[u--]=0,a=1}for(o=h.length;0===h[--o];h.pop());}e.e>E?e.c=e.e=null:e.e<v&&(e.c=[e.e=0])}return e}function k(e){var t,n=e.e;return null===n?e.toString():(t=Ct(e.c),t=n<=y||n>=m?Rt(t,n):It(t,n,"0"),e.s<0?"-"+t:t)}return O.clone=e,O.ROUND_UP=0,O.ROUND_DOWN=1,O.ROUND_CEIL=2,O.ROUND_FLOOR=3,O.ROUND_HALF_UP=4,O.ROUND_HALF_DOWN=5,O.ROUND_HALF_EVEN=6,O.ROUND_HALF_CEIL=7,O.ROUND_HALF_FLOOR=8,O.EUCLID=9,O.config=O.set=function(e){var t,n;if(null!=e){if("object"!=typeof e)throw Error(bt+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(kt(n=e[t],0,Tt,t),d=n),e.hasOwnProperty(t="ROUNDING_MODE")&&(kt(n=e[t],0,8,t),g=n),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((n=e[t])&&n.pop?(kt(n[0],-Tt,0,t),kt(n[1],0,Tt,t),y=n[0],m=n[1]):(kt(n,-Tt,Tt,t),y=-(m=n<0?-n:n))),e.hasOwnProperty(t="RANGE"))if((n=e[t])&&n.pop)kt(n[0],-Tt,-1,t),kt(n[1],1,Tt,t),v=n[0],E=n[1];else{if(kt(n,-Tt,Tt,t),!n)throw Error(bt+t+" cannot be zero: "+n);v=-(E=n<0?-n:n)}if(e.hasOwnProperty(t="CRYPTO")){if((n=e[t])!==!!n)throw Error(bt+t+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw b=!n,Error(bt+"crypto unavailable");b=n}else b=n}if(e.hasOwnProperty(t="MODULO_MODE")&&(kt(n=e[t],0,9,t),w=n),e.hasOwnProperty(t="POW_PRECISION")&&(kt(n=e[t],0,Tt,t),S=n),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(n=e[t]))throw Error(bt+t+" not an object: "+n);P=n}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(n=e[t])||/^.?$|[+\-.\s]|(.).*\1/.test(n))throw Error(bt+t+" invalid: "+n);_="0123456789"==n.slice(0,10),x=n}}return{DECIMAL_PLACES:d,ROUNDING_MODE:g,EXPONENTIAL_AT:[y,m],RANGE:[v,E],CRYPTO:b,MODULO_MODE:w,POW_PRECISION:S,FORMAT:P,ALPHABET:x}},O.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!O.DEBUG)return!0;var t,n,r=e.c,i=e.e,o=e.s;e:if("[object Array]"=={}.toString.call(r)){if((1===o||-1===o)&&i>=-Tt&&i<=Tt&&i===Et(i)){if(0===r[0]){if(0===i&&1===r.length)return!0;break e}if((t=(i+1)%Pt)<1&&(t+=Pt),String(r[0]).length==t){for(t=0;t<r.length;t++)if((n=r[t])<0||n>=St||n!==Et(n))break e;if(0!==n)return!0}}}else if(null===r&&null===i&&(null===o||1===o||-1===o))return!0;throw Error(bt+"Invalid BigNumber: "+e)},O.maximum=O.max=function(){return A(arguments,-1)},O.minimum=O.min=function(){return A(arguments,1)},O.random=(o=9007199254740992,s=Math.random()*o&2097151?function(){return Et(Math.random()*o)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,n,r,i,o,a=0,l=[],u=new O(f);if(null==e?e=d:kt(e,0,Tt),i=vt(e/Pt),b)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(i*=2));a<i;)(o=131072*t[a]+(t[a+1]>>>11))>=9e15?(n=crypto.getRandomValues(new Uint32Array(2)),t[a]=n[0],t[a+1]=n[1]):(l.push(o%1e14),a+=2);a=i/2}else{if(!crypto.randomBytes)throw b=!1,Error(bt+"crypto unavailable");for(t=crypto.randomBytes(i*=7);a<i;)(o=281474976710656*(31&t[a])+1099511627776*t[a+1]+4294967296*t[a+2]+16777216*t[a+3]+(t[a+4]<<16)+(t[a+5]<<8)+t[a+6])>=9e15?crypto.randomBytes(7).copy(t,a):(l.push(o%1e14),a+=7);a=i/7}if(!b)for(;a<i;)(o=s())<9e15&&(l[a++]=o%1e14);for(i=l[--a],e%=Pt,i&&e&&(o=_t[Pt-e],l[a]=Et(i/o)*o);0===l[a];l.pop(),a--);if(a<0)l=[r=0];else{for(r=-1;0===l[0];l.splice(0,1),r-=Pt);for(a=1,o=l[0];o>=10;o/=10,a++);a<Pt&&(r-=Pt-a)}return u.e=r,u.c=l,u}),O.sum=function(){for(var e=1,t=arguments,n=new O(t[0]);e<t.length;)n=n.plus(t[e++]);return n},r=function(){var e="0123456789";function t(e,t,n,r){for(var i,o,s=[0],a=0,l=e.length;a<l;){for(o=s.length;o--;s[o]*=t);for(s[0]+=r.indexOf(e.charAt(a++)),i=0;i<s.length;i++)s[i]>n-1&&(null==s[i+1]&&(s[i+1]=0),s[i+1]+=s[i]/n|0,s[i]%=n)}return s.reverse()}return function(r,i,o,s,a){var l,u,c,h,p,f,y,m,v=r.indexOf("."),E=d,b=g;for(v>=0&&(h=S,S=0,r=r.replace(".",""),f=(m=new O(i)).pow(r.length-v),S=h,m.c=t(It(Ct(f.c),f.e,"0"),10,o,e),m.e=m.c.length),c=h=(y=t(r,i,o,a?(l=x,e):(l=e,x))).length;0==y[--h];y.pop());if(!y[0])return l.charAt(0);if(v<0?--c:(f.c=y,f.e=c,f.s=s,y=(f=n(f,m,E,b,o)).c,p=f.r,c=f.e),v=y[u=c+E+1],h=o/2,p=p||u<0||null!=y[u+1],p=b<4?(null!=v||p)&&(0==b||b==(f.s<0?3:2)):v>h||v==h&&(4==b||p||6==b&&1&y[u-1]||b==(f.s<0?8:7)),u<1||!y[0])r=p?It(l.charAt(1),-E,l.charAt(0)):l.charAt(0);else{if(y.length=u,p)for(--o;++y[--u]>o;)y[u]=0,u||(++c,y=[1].concat(y));for(h=y.length;!y[--h];);for(v=0,r="";v<=h;r+=l.charAt(y[v++]));r=It(r,c,l.charAt(0))}return r}}(),n=function(){function e(e,t,n){var r,i,o,s,a=0,l=e.length,u=t%Ot,c=t/Ot|0;for(e=e.slice();l--;)a=((i=u*(o=e[l]%Ot)+(r=c*o+(s=e[l]/Ot|0)*u)%Ot*Ot+a)/n|0)+(r/Ot|0)+c*s,e[l]=i%n;return a&&(e=[a].concat(e)),e}function t(e,t,n,r){var i,o;if(n!=r)o=n>r?1:-1;else for(i=o=0;i<n;i++)if(e[i]!=t[i]){o=e[i]>t[i]?1:-1;break}return o}function n(e,t,n,r){for(var i=0;n--;)e[n]-=i,i=e[n]<t[n]?1:0,e[n]=i*r+e[n]-t[n];for(;!e[0]&&e.length>1;e.splice(0,1));}return function(r,i,o,s,a){var l,u,c,h,p,f,d,g,y,m,v,E,b,w,S,P,x,_=r.s==i.s?1:-1,T=r.c,A=i.c;if(!(T&&T[0]&&A&&A[0]))return new O(r.s&&i.s&&(T?!A||T[0]!=A[0]:A)?T&&0==T[0]||!A?0*_:_/0:NaN);for(y=(g=new O(_)).c=[],_=o+(u=r.e-i.e)+1,a||(a=St,u=At(r.e/Pt)-At(i.e/Pt),_=_/Pt|0),c=0;A[c]==(T[c]||0);c++);if(A[c]>(T[c]||0)&&u--,_<0)y.push(1),h=!0;else{for(w=T.length,P=A.length,c=0,_+=2,(p=Et(a/(A[0]+1)))>1&&(A=e(A,p,a),T=e(T,p,a),P=A.length,w=T.length),b=P,v=(m=T.slice(0,P)).length;v<P;m[v++]=0);x=A.slice(),x=[0].concat(x),S=A[0],A[1]>=a/2&&S++;do{if(p=0,(l=t(A,m,P,v))<0){if(E=m[0],P!=v&&(E=E*a+(m[1]||0)),(p=Et(E/S))>1)for(p>=a&&(p=a-1),d=(f=e(A,p,a)).length,v=m.length;1==t(f,m,d,v);)p--,n(f,P<d?x:A,d,a),d=f.length,l=1;else 0==p&&(l=p=1),d=(f=A.slice()).length;if(d<v&&(f=[0].concat(f)),n(m,f,v,a),v=m.length,-1==l)for(;t(A,m,P,v)<1;)p++,n(m,P<v?x:A,v,a),v=m.length}else 0===l&&(p++,m=[0]);y[c++]=p,m[0]?m[v++]=T[b]||0:(m=[T[b]],v=1)}while((b++<w||null!=m[0])&&_--);h=null!=m[0],y[0]||y.splice(0,1)}if(a==St){for(c=1,_=y[0];_>=10;_/=10,c++);L(g,o+(g.e=c+u*Pt-1)+1,s,h)}else g.e=u,g.r=+h;return g}}(),a=/^(-?)0([xbo])(?=\w[\w.]*$)/i,l=/^([^.]+)\.$/,u=/^\.([^.]+)$/,c=/^-?(Infinity|NaN)$/,h=/^\s*\+(?=[\w.])|^\s+|\s+$/g,i=function(e,t,n,r){var i,o=n?t:t.replace(h,"");if(c.test(o))e.s=isNaN(o)?null:o<0?-1:1;else{if(!n&&(o=o.replace(a,function(e,t,n){return i="x"==(n=n.toLowerCase())?16:"b"==n?2:8,r&&r!=i?e:t}),r&&(i=r,o=o.replace(l,"$1").replace(u,"0.$1")),t!=o))return new O(o,i);if(O.DEBUG)throw Error(bt+"Not a"+(r?" base "+r:"")+" number: "+t);e.s=null}e.c=e.e=null},p.absoluteValue=p.abs=function(){var e=new O(this);return e.s<0&&(e.s=1),e},p.comparedTo=function(e,t){return Lt(this,new O(e,t))},p.decimalPlaces=p.dp=function(e,t){var n,r,i,o=this;if(null!=e)return kt(e,0,Tt),null==t?t=g:kt(t,0,8),L(new O(o),e+o.e+1,t);if(!(n=o.c))return null;if(r=((i=n.length-1)-At(this.e/Pt))*Pt,i=n[i])for(;i%10==0;i/=10,r--);return r<0&&(r=0),r},p.dividedBy=p.div=function(e,t){return n(this,new O(e,t),d,g)},p.dividedToIntegerBy=p.idiv=function(e,t){return n(this,new O(e,t),0,1)},p.exponentiatedBy=p.pow=function(e,t){var n,r,i,o,s,a,l,u,c=this;if((e=new O(e)).c&&!e.isInteger())throw Error(bt+"Exponent not an integer: "+k(e));if(null!=t&&(t=new O(t)),s=e.e>14,!c.c||!c.c[0]||1==c.c[0]&&!c.e&&1==c.c.length||!e.c||!e.c[0])return u=new O(Math.pow(+k(c),s?e.s*(2-Mt(e)):+k(e))),t?u.mod(t):u;if(a=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new O(NaN);(r=!a&&c.isInteger()&&t.isInteger())&&(c=c.mod(t))}else{if(e.e>9&&(c.e>0||c.e<-1||(0==c.e?c.c[0]>1||s&&c.c[1]>=24e7:c.c[0]<8e13||s&&c.c[0]<=9999975e7)))return o=c.s<0&&Mt(e)?-0:0,c.e>-1&&(o=1/o),new O(a?1/o:o);S&&(o=vt(S/Pt+2))}for(s?(n=new O(.5),a&&(e.s=1),l=Mt(e)):l=(i=Math.abs(+k(e)))%2,u=new O(f);;){if(l){if(!(u=u.times(c)).c)break;o?u.c.length>o&&(u.c.length=o):r&&(u=u.mod(t))}if(i){if(0===(i=Et(i/2)))break;l=i%2}else if(L(e=e.times(n),e.e+1,1),e.e>14)l=Mt(e);else{if(0===(i=+k(e)))break;l=i%2}c=c.times(c),o?c.c&&c.c.length>o&&(c.c.length=o):r&&(c=c.mod(t))}return r?u:(a&&(u=f.div(u)),t?u.mod(t):o?L(u,S,g,void 0):u)},p.integerValue=function(e){var t=new O(this);return null==e?e=g:kt(e,0,8),L(t,t.e+1,e)},p.isEqualTo=p.eq=function(e,t){return 0===Lt(this,new O(e,t))},p.isFinite=function(){return!!this.c},p.isGreaterThan=p.gt=function(e,t){return Lt(this,new O(e,t))>0},p.isGreaterThanOrEqualTo=p.gte=function(e,t){return 1===(t=Lt(this,new O(e,t)))||0===t},p.isInteger=function(){return!!this.c&&At(this.e/Pt)>this.c.length-2},p.isLessThan=p.lt=function(e,t){return Lt(this,new O(e,t))<0},p.isLessThanOrEqualTo=p.lte=function(e,t){return-1===(t=Lt(this,new O(e,t)))||0===t},p.isNaN=function(){return!this.s},p.isNegative=function(){return this.s<0},p.isPositive=function(){return this.s>0},p.isZero=function(){return!!this.c&&0==this.c[0]},p.minus=function(e,t){var n,r,i,o,s=this,a=s.s;if(t=(e=new O(e,t)).s,!a||!t)return new O(NaN);if(a!=t)return e.s=-t,s.plus(e);var l=s.e/Pt,u=e.e/Pt,c=s.c,h=e.c;if(!l||!u){if(!c||!h)return c?(e.s=-t,e):new O(h?s:NaN);if(!c[0]||!h[0])return h[0]?(e.s=-t,e):new O(c[0]?s:3==g?-0:0)}if(l=At(l),u=At(u),c=c.slice(),a=l-u){for((o=a<0)?(a=-a,i=c):(u=l,i=h),i.reverse(),t=a;t--;i.push(0));i.reverse()}else for(r=(o=(a=c.length)<(t=h.length))?a:t,a=t=0;t<r;t++)if(c[t]!=h[t]){o=c[t]<h[t];break}if(o&&(i=c,c=h,h=i,e.s=-e.s),(t=(r=h.length)-(n=c.length))>0)for(;t--;c[n++]=0);for(t=St-1;r>a;){if(c[--r]<h[r]){for(n=r;n&&!c[--n];c[n]=t);--c[n],c[r]+=St}c[r]-=h[r]}for(;0==c[0];c.splice(0,1),--u);return c[0]?C(e,c,u):(e.s=3==g?-1:1,e.c=[e.e=0],e)},p.modulo=p.mod=function(e,t){var r,i,o=this;return e=new O(e,t),!o.c||!e.s||e.c&&!e.c[0]?new O(NaN):!e.c||o.c&&!o.c[0]?new O(o):(9==w?(i=e.s,e.s=1,r=n(o,e,0,3),e.s=i,r.s*=i):r=n(o,e,0,w),(e=o.minus(r.times(e))).c[0]||1!=w||(e.s=o.s),e)},p.multipliedBy=p.times=function(e,t){var n,r,i,o,s,a,l,u,c,h,p,f,d,g,y,m=this,v=m.c,E=(e=new O(e,t)).c;if(!(v&&E&&v[0]&&E[0]))return!m.s||!e.s||v&&!v[0]&&!E||E&&!E[0]&&!v?e.c=e.e=e.s=null:(e.s*=m.s,v&&E?(e.c=[0],e.e=0):e.c=e.e=null),e;for(r=At(m.e/Pt)+At(e.e/Pt),e.s*=m.s,(l=v.length)<(h=E.length)&&(d=v,v=E,E=d,i=l,l=h,h=i),i=l+h,d=[];i--;d.push(0));for(g=St,y=Ot,i=h;--i>=0;){for(n=0,p=E[i]%y,f=E[i]/y|0,o=i+(s=l);o>i;)n=((u=p*(u=v[--s]%y)+(a=f*u+(c=v[s]/y|0)*p)%y*y+d[o]+n)/g|0)+(a/y|0)+f*c,d[o--]=u%g;d[o]=n}return n?++r:d.splice(0,1),C(e,d,r)},p.negated=function(){var e=new O(this);return e.s=-e.s||null,e},p.plus=function(e,t){var n,r=this,i=r.s;if(t=(e=new O(e,t)).s,!i||!t)return new O(NaN);if(i!=t)return e.s=-t,r.minus(e);var o=r.e/Pt,s=e.e/Pt,a=r.c,l=e.c;if(!o||!s){if(!a||!l)return new O(i/0);if(!a[0]||!l[0])return l[0]?e:new O(a[0]?r:0*i)}if(o=At(o),s=At(s),a=a.slice(),i=o-s){for(i>0?(s=o,n=l):(i=-i,n=a),n.reverse();i--;n.push(0));n.reverse()}for((i=a.length)-(t=l.length)<0&&(n=l,l=a,a=n,t=i),i=0;t;)i=(a[--t]=a[t]+l[t]+i)/St|0,a[t]=St===a[t]?0:a[t]%St;return i&&(a=[i].concat(a),++s),C(e,a,s)},p.precision=p.sd=function(e,t){var n,r,i,o=this;if(null!=e&&e!==!!e)return kt(e,1,Tt),null==t?t=g:kt(t,0,8),L(new O(o),e,t);if(!(n=o.c))return null;if(r=(i=n.length-1)*Pt+1,i=n[i]){for(;i%10==0;i/=10,r--);for(i=n[0];i>=10;i/=10,r++);}return e&&o.e+1>r&&(r=o.e+1),r},p.shiftedBy=function(e){return kt(e,-9007199254740991,xt),this.times("1e"+e)},p.squareRoot=p.sqrt=function(){var e,t,r,i,o,s=this,a=s.c,l=s.s,u=s.e,c=d+4,h=new O("0.5");if(1!==l||!a||!a[0])return new O(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);if(0==(l=Math.sqrt(+k(s)))||l==1/0?(((t=Ct(a)).length+u)%2==0&&(t+="0"),l=Math.sqrt(+t),u=At((u+1)/2)-(u<0||u%2),r=new O(t=l==1/0?"5e"+u:(t=l.toExponential()).slice(0,t.indexOf("e")+1)+u)):r=new O(l+""),r.c[0])for((l=(u=r.e)+c)<3&&(l=0);;)if(o=r,r=h.times(o.plus(n(s,o,c,1))),Ct(o.c).slice(0,l)===(t=Ct(r.c)).slice(0,l)){if(r.e<u&&--l,"9999"!=(t=t.slice(l-3,l+1))&&(i||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(L(r,r.e+d+2,1),e=!r.times(r).eq(s));break}if(!i&&(L(o,o.e+d+2,0),o.times(o).eq(s))){r=o;break}c+=4,l+=4,i=1}return L(r,r.e+d+1,g,e)},p.toExponential=function(e,t){return null!=e&&(kt(e,0,Tt),e++),T(this,e,t,1)},p.toFixed=function(e,t){return null!=e&&(kt(e,0,Tt),e=e+this.e+1),T(this,e,t)},p.toFormat=function(e,t,n){var r,i=this;if(null==n)null!=e&&t&&"object"==typeof t?(n=t,t=null):e&&"object"==typeof e?(n=e,e=t=null):n=P;else if("object"!=typeof n)throw Error(bt+"Argument not an object: "+n);if(r=i.toFixed(e,t),i.c){var o,s=r.split("."),a=+n.groupSize,l=+n.secondaryGroupSize,u=n.groupSeparator||"",c=s[0],h=s[1],p=i.s<0,f=p?c.slice(1):c,d=f.length;if(l&&(o=a,a=l,l=o,d-=o),a>0&&d>0){for(o=d%a||a,c=f.substr(0,o);o<d;o+=a)c+=u+f.substr(o,a);l>0&&(c+=u+f.slice(o)),p&&(c="-"+c)}r=h?c+(n.decimalSeparator||"")+((l=+n.fractionGroupSize)?h.replace(new RegExp("\\d{"+l+"}\\B","g"),"$&"+(n.fractionGroupSeparator||"")):h):c}return(n.prefix||"")+r+(n.suffix||"")},p.toFraction=function(e){var t,r,i,o,s,a,l,u,c,h,p,d,y=this,m=y.c;if(null!=e&&(!(l=new O(e)).isInteger()&&(l.c||1!==l.s)||l.lt(f)))throw Error(bt+"Argument "+(l.isInteger()?"out of range: ":"not an integer: ")+k(l));if(!m)return new O(y);for(t=new O(f),c=r=new O(f),i=u=new O(f),d=Ct(m),s=t.e=d.length-y.e-1,t.c[0]=_t[(a=s%Pt)<0?Pt+a:a],e=!e||l.comparedTo(t)>0?s>0?t:c:l,a=E,E=1/0,l=new O(d),u.c[0]=0;h=n(l,t,0,1),1!=(o=r.plus(h.times(i))).comparedTo(e);)r=i,i=o,c=u.plus(h.times(o=c)),u=o,t=l.minus(h.times(o=t)),l=o;return o=n(e.minus(r),i,0,1),u=u.plus(o.times(c)),r=r.plus(o.times(i)),u.s=c.s=y.s,p=n(c,i,s*=2,g).minus(y).abs().comparedTo(n(u,r,s,g).minus(y).abs())<1?[c,i]:[u,r],E=a,p},p.toNumber=function(){return+k(this)},p.toPrecision=function(e,t){return null!=e&&kt(e,1,Tt),T(this,e,t,2)},p.toString=function(e){var t,n=this,i=n.s,o=n.e;return null===o?i?(t="Infinity",i<0&&(t="-"+t)):t="NaN":(null==e?t=o<=y||o>=m?Rt(Ct(n.c),o):It(Ct(n.c),o,"0"):10===e&&_?t=It(Ct((n=L(new O(n),d+o+1,g)).c),n.e,"0"):(kt(e,2,x.length,"Base"),t=r(It(Ct(n.c),o,"0"),10,e,i,!0)),i<0&&n.c[0]&&(t="-"+t)),t},p.valueOf=p.toJSON=function(){return k(this)},p._isBigNumber=!0,p[Symbol.toStringTag]="BigNumber",p[Symbol.for("nodejs.util.inspect.custom")]=p.valueOf,null!=t&&O.set(t),O}(),Dt=class{key;left=null;right=null;constructor(e){this.key=e}},Gt=class extends Dt{constructor(e){super(e)}},jt=class{size=0;modificationCount=0;splayCount=0;splay(e){const t=this.root;if(null==t)return this.compare(e,e),-1;let n=null,r=null,i=null,o=null,s=t;const a=this.compare;let l;for(;;)if(l=a(s.key,e),l>0){let t=s.left;if(null==t)break;if(l=a(t.key,e),l>0&&(s.left=t.right,t.right=s,s=t,t=s.left,null==t))break;null==n?r=s:n.left=s,n=s,s=t}else{if(!(l<0))break;{let t=s.right;if(null==t)break;if(l=a(t.key,e),l<0&&(s.right=t.left,t.left=s,s=t,t=s.right,null==t))break;null==i?o=s:i.right=s,i=s,s=t}}return null!=i&&(i.right=s.left,s.left=o),null!=n&&(n.left=s.right,s.right=r),this.root!==s&&(this.root=s,this.splayCount++),l}splayMin(e){let t=e,n=t.left;for(;null!=n;){const e=n;t.left=e.right,e.right=t,t=e,n=t.left}return t}splayMax(e){let t=e,n=t.right;for(;null!=n;){const e=n;t.right=e.left,e.left=t,t=e,n=t.right}return t}_delete(e){if(null==this.root)return null;if(0!=this.splay(e))return null;let t=this.root;const n=t,r=t.left;if(this.size--,null==r)this.root=t.right;else{const e=t.right;t=this.splayMax(r),t.right=e,this.root=t}return this.modificationCount++,n}addNewRoot(e,t){this.size++,this.modificationCount++;const n=this.root;null!=n?(t<0?(e.left=n,e.right=n.right,n.right=null):(e.right=n,e.left=n.left,n.left=null),this.root=e):this.root=e}_first(){const e=this.root;return null==e?null:(this.root=this.splayMin(e),this.root)}_last(){const e=this.root;return null==e?null:(this.root=this.splayMax(e),this.root)}clear(){this.root=null,this.size=0,this.modificationCount++}has(e){return this.validKey(e)&&0==this.splay(e)}defaultCompare(){return(e,t)=>e<t?-1:e>t?1:0}wrap(){return{getRoot:()=>this.root,setRoot:e=>{this.root=e},getSize:()=>this.size,getModificationCount:()=>this.modificationCount,getSplayCount:()=>this.splayCount,setSplayCount:e=>{this.splayCount=e},splay:e=>this.splay(e),has:e=>this.has(e)}}},Vt=class e extends jt{root=null;compare;validKey;constructor(e,t){super(),this.compare=e??this.defaultCompare(),this.validKey=t??(e=>null!=e&&null!=e)}delete(e){return!!this.validKey(e)&&null!=this._delete(e)}deleteAll(e){for(const t of e)this.delete(t)}forEach(e){const t=this[Symbol.iterator]();let n;for(;n=t.next(),!n.done;)e(n.value,n.value,this)}add(e){const t=this.splay(e);return 0!=t&&this.addNewRoot(new Gt(e),t),this}addAndReturn(e){const t=this.splay(e);return 0!=t&&this.addNewRoot(new Gt(e),t),this.root.key}addAll(e){for(const t of e)this.add(t)}isEmpty(){return null==this.root}isNotEmpty(){return null!=this.root}single(){if(0==this.size)throw"Bad state: No element";if(this.size>1)throw"Bad state: Too many element";return this.root.key}first(){if(0==this.size)throw"Bad state: No element";return this._first().key}last(){if(0==this.size)throw"Bad state: No element";return this._last().key}lastBefore(e){if(null==e)throw"Invalid arguments(s)";if(null==this.root)return null;if(this.splay(e)<0)return this.root.key;let t=this.root.left;if(null==t)return null;let n=t.right;for(;null!=n;)t=n,n=t.right;return t.key}firstAfter(e){if(null==e)throw"Invalid arguments(s)";if(null==this.root)return null;if(this.splay(e)>0)return this.root.key;let t=this.root.right;if(null==t)return null;let n=t.left;for(;null!=n;)t=n,n=t.left;return t.key}retainAll(t){const n=new e(this.compare,this.validKey),r=this.modificationCount;for(const e of t){if(r!=this.modificationCount)throw"Concurrent modification during iteration.";this.validKey(e)&&0==this.splay(e)&&n.add(this.root.key)}n.size!=this.size&&(this.root=n.root,this.size=n.size,this.modificationCount++)}lookup(e){if(!this.validKey(e))return null;return 0!=this.splay(e)?null:this.root.key}intersection(t){const n=new e(this.compare,this.validKey);for(const e of this)t.has(e)&&n.add(e);return n}difference(t){const n=new e(this.compare,this.validKey);for(const e of this)t.has(e)||n.add(e);return n}union(e){const t=this.clone();return t.addAll(e),t}clone(){const t=new e(this.compare,this.validKey);return t.size=this.size,t.root=this.copyNode(this.root),t}copyNode(e){if(null==e)return null;const t=new Gt(e.key);return function e(t,n){let r,i;do{if(r=t.left,i=t.right,null!=r){const t=new Gt(r.key);n.left=t,e(r,t)}if(null!=i){const e=new Gt(i.key);n.right=e,t=i,n=e}}while(null!=i)}(e,t),t}toSet(){return this.clone()}entries(){return new Ut(this.wrap())}keys(){return this[Symbol.iterator]()}values(){return this[Symbol.iterator]()}[Symbol.iterator](){return new Bt(this.wrap())}[Symbol.toStringTag]="[object Set]"},Ft=class{tree;path=new Array;modificationCount=null;splayCount;constructor(e){this.tree=e,this.splayCount=e.getSplayCount()}[Symbol.iterator](){return this}next(){return this.moveNext()?{done:!1,value:this.current()}:{done:!0,value:null}}current(){if(!this.path.length)return null;const e=this.path[this.path.length-1];return this.getValue(e)}rebuildPath(e){this.path.splice(0,this.path.length),this.tree.splay(e),this.path.push(this.tree.getRoot()),this.splayCount=this.tree.getSplayCount()}findLeftMostDescendent(e){for(;null!=e;)this.path.push(e),e=e.left}moveNext(){if(this.modificationCount!=this.tree.getModificationCount()){if(null==this.modificationCount){this.modificationCount=this.tree.getModificationCount();let e=this.tree.getRoot();for(;null!=e;)this.path.push(e),e=e.left;return this.path.length>0}throw"Concurrent modification during iteration."}if(!this.path.length)return!1;this.splayCount!=this.tree.getSplayCount()&&this.rebuildPath(this.path[this.path.length-1].key);let e=this.path[this.path.length-1],t=e.right;if(null!=t){for(;null!=t;)this.path.push(t),t=t.left;return!0}for(this.path.pop();this.path.length&&this.path[this.path.length-1].right===e;)e=this.path.pop();return this.path.length>0}},Bt=class extends Ft{getValue(e){return e.key}},Ut=class extends Ft{getValue(e){return[e.key,e.key]}},Ht=e=>()=>e,qt=e=>{const t=e?(t,n)=>n.minus(t).abs().isLessThanOrEqualTo(e):Ht(!1);return(e,n)=>t(e,n)?0:e.comparedTo(n)};function Yt(e){const t=e?(t,n,r,i,o)=>t.exponentiatedBy(2).isLessThanOrEqualTo(i.minus(n).exponentiatedBy(2).plus(o.minus(r).exponentiatedBy(2)).times(e)):Ht(!1);return(e,n,r)=>{const i=e.x,o=e.y,s=r.x,a=r.y,l=o.minus(a).times(n.x.minus(s)).minus(i.minus(s).times(n.y.minus(a)));return t(l,i,o,s,a)?0:l.comparedTo(0)}}var zt=e=>e,Wt=e=>{if(e){const t=new Vt(qt(e)),n=new Vt(qt(e)),r=(e,t)=>t.addAndReturn(e),i=e=>({x:r(e.x,t),y:r(e.y,n)});return i({x:new Nt(0),y:new Nt(0)}),i}return zt},Xt=e=>({set:e=>{Kt=Xt(e)},reset:()=>Xt(e),compare:qt(e),snap:Wt(e),orient:Yt(e)}),Kt=Xt(),$t=(e,t)=>e.ll.x.isLessThanOrEqualTo(t.x)&&t.x.isLessThanOrEqualTo(e.ur.x)&&e.ll.y.isLessThanOrEqualTo(t.y)&&t.y.isLessThanOrEqualTo(e.ur.y),Zt=(e,t)=>{if(t.ur.x.isLessThan(e.ll.x)||e.ur.x.isLessThan(t.ll.x)||t.ur.y.isLessThan(e.ll.y)||e.ur.y.isLessThan(t.ll.y))return null;const n=e.ll.x.isLessThan(t.ll.x)?t.ll.x:e.ll.x,r=e.ur.x.isLessThan(t.ur.x)?e.ur.x:t.ur.x;return{ll:{x:n,y:e.ll.y.isLessThan(t.ll.y)?t.ll.y:e.ll.y},ur:{x:r,y:e.ur.y.isLessThan(t.ur.y)?e.ur.y:t.ur.y}}},Jt=(e,t)=>e.x.times(t.y).minus(e.y.times(t.x)),Qt=(e,t)=>e.x.times(t.x).plus(e.y.times(t.y)),en=e=>Qt(e,e).sqrt(),tn=(e,t,n)=>{const r={x:t.x.minus(e.x),y:t.y.minus(e.y)},i={x:n.x.minus(e.x),y:n.y.minus(e.y)};return Jt(i,r).div(en(i)).div(en(r))},nn=(e,t,n)=>{const r={x:t.x.minus(e.x),y:t.y.minus(e.y)},i={x:n.x.minus(e.x),y:n.y.minus(e.y)};return Qt(i,r).div(en(i)).div(en(r))},rn=(e,t,n)=>t.y.isZero()?null:{x:e.x.plus(t.x.div(t.y).times(n.minus(e.y))),y:n},on=(e,t,n)=>t.x.isZero()?null:{x:n,y:e.y.plus(t.y.div(t.x).times(n.minus(e.x)))},sn=class e{point;isLeft;segment;otherSE;consumedBy;static compare(t,n){const r=e.comparePoints(t.point,n.point);return 0!==r?r:(t.point!==n.point&&t.link(n),t.isLeft!==n.isLeft?t.isLeft?1:-1:dn.compare(t.segment,n.segment))}static comparePoints(e,t){return e.x.isLessThan(t.x)?-1:e.x.isGreaterThan(t.x)?1:e.y.isLessThan(t.y)?-1:e.y.isGreaterThan(t.y)?1:0}constructor(e,t){void 0===e.events?e.events=[this]:e.events.push(this),this.point=e,this.isLeft=t}link(e){if(e.point===this.point)throw new Error("Tried to link already linked events");const t=e.point.events;for(let e=0,n=t.length;e<n;e++){const n=t[e];this.point.events.push(n),n.point=this.point}this.checkForConsuming()}checkForConsuming(){const e=this.point.events.length;for(let t=0;t<e;t++){const n=this.point.events[t];if(void 0===n.segment.consumedBy)for(let r=t+1;r<e;r++){const e=this.point.events[r];void 0===e.consumedBy&&(n.otherSE.point.events===e.otherSE.point.events&&n.segment.consume(e.segment))}}}getAvailableLinkedEvents(){const e=[];for(let t=0,n=this.point.events.length;t<n;t++){const n=this.point.events[t];n!==this&&!n.segment.ringOut&&n.segment.isInResult()&&e.push(n)}return e}getLeftmostComparator(e){const t=new Map,n=n=>{const r=n.otherSE;t.set(n,{sine:tn(this.point,e.point,r.point),cosine:nn(this.point,e.point,r.point)})};return(e,r)=>{t.has(e)||n(e),t.has(r)||n(r);const{sine:i,cosine:o}=t.get(e),{sine:s,cosine:a}=t.get(r);return i.isGreaterThanOrEqualTo(0)&&s.isGreaterThanOrEqualTo(0)?o.isLessThan(a)?1:o.isGreaterThan(a)?-1:0:i.isLessThan(0)&&s.isLessThan(0)?o.isLessThan(a)?-1:o.isGreaterThan(a)?1:0:s.isLessThan(i)?-1:s.isGreaterThan(i)?1:0}}},an=class e{events;poly;_isExteriorRing;_enclosingRing;static factory(t){const n=[];for(let r=0,i=t.length;r<i;r++){const i=t[r];if(!i.isInResult()||i.ringOut)continue;let o=null,s=i.leftSE,a=i.rightSE;const l=[s],u=s.point,c=[];for(;o=s,s=a,l.push(s),s.point!==u;)for(;;){const t=s.getAvailableLinkedEvents();if(0===t.length){const e=l[0].point,t=l[l.length-1].point;throw new Error(`Unable to complete output ring starting at [${e.x}, ${e.y}]. Last matching segment found ends at [${t.x}, ${t.y}].`)}if(1===t.length){a=t[0].otherSE;break}let r=null;for(let e=0,t=c.length;e<t;e++)if(c[e].point===s.point){r=e;break}if(null!==r){const t=c.splice(r)[0],i=l.splice(t.index);i.unshift(i[0].otherSE),n.push(new e(i.reverse()));continue}c.push({index:l.length,point:s.point});const i=s.getLeftmostComparator(o);a=t.sort(i)[0].otherSE;break}n.push(new e(l))}return n}constructor(e){this.events=e;for(let t=0,n=e.length;t<n;t++)e[t].segment.ringOut=this;this.poly=null}getGeom(){let e=this.events[0].point;const t=[e];for(let n=1,r=this.events.length-1;n<r;n++){const r=this.events[n].point,i=this.events[n+1].point;0!==Kt.orient(r,e,i)&&(t.push(r),e=r)}if(1===t.length)return null;const n=t[0],r=t[1];0===Kt.orient(n,e,r)&&t.shift(),t.push(t[0]);const i=this.isExteriorRing()?1:-1,o=this.isExteriorRing()?0:t.length-1,s=this.isExteriorRing()?t.length:-1,a=[];for(let e=o;e!=s;e+=i)a.push([t[e].x.toNumber(),t[e].y.toNumber()]);return a}isExteriorRing(){if(void 0===this._isExteriorRing){const e=this.enclosingRing();this._isExteriorRing=!e||!e.isExteriorRing()}return this._isExteriorRing}enclosingRing(){return void 0===this._enclosingRing&&(this._enclosingRing=this._calcEnclosingRing()),this._enclosingRing}_calcEnclosingRing(){let e=this.events[0];for(let t=1,n=this.events.length;t<n;t++){const n=this.events[t];sn.compare(e,n)>0&&(e=n)}let t=e.segment.prevInResult(),n=t?t.prevInResult():null;for(;;){if(!t)return null;if(!n)return t.ringOut;if(n.ringOut!==t.ringOut)return n.ringOut?.enclosingRing()!==t.ringOut?t.ringOut:t.ringOut?.enclosingRing();t=n.prevInResult(),n=t?t.prevInResult():null}}},ln=class{exteriorRing;interiorRings;constructor(e){this.exteriorRing=e,e.poly=this,this.interiorRings=[]}addInterior(e){this.interiorRings.push(e),e.poly=this}getGeom(){const e=this.exteriorRing.getGeom();if(null===e)return null;const t=[e];for(let e=0,n=this.interiorRings.length;e<n;e++){const n=this.interiorRings[e].getGeom();null!==n&&t.push(n)}return t}},un=class{rings;polys;constructor(e){this.rings=e,this.polys=this._composePolys(e)}getGeom(){const e=[];for(let t=0,n=this.polys.length;t<n;t++){const n=this.polys[t].getGeom();null!==n&&e.push(n)}return e}_composePolys(e){const t=[];for(let n=0,r=e.length;n<r;n++){const r=e[n];if(!r.poly)if(r.isExteriorRing())t.push(new ln(r));else{const e=r.enclosingRing();e?.poly||t.push(new ln(e)),e?.poly?.addInterior(r)}}return t}},cn=class{queue;tree;segments;constructor(e,t=dn.compare){this.queue=e,this.tree=new Vt(t),this.segments=[]}process(e){const t=e.segment,n=[];if(e.consumedBy)return e.isLeft?this.queue.delete(e.otherSE):this.tree.delete(t),n;e.isLeft&&this.tree.add(t);let r=t,i=t;do{r=this.tree.lastBefore(r)}while(null!=r&&null!=r.consumedBy);do{i=this.tree.firstAfter(i)}while(null!=i&&null!=i.consumedBy);if(e.isLeft){let o=null;if(r){const e=r.getIntersection(t);if(null!==e&&(t.isAnEndpoint(e)||(o=e),!r.isAnEndpoint(e))){const t=this._splitSafely(r,e);for(let e=0,r=t.length;e<r;e++)n.push(t[e])}}let s=null;if(i){const e=i.getIntersection(t);if(null!==e&&(t.isAnEndpoint(e)||(s=e),!i.isAnEndpoint(e))){const t=this._splitSafely(i,e);for(let e=0,r=t.length;e<r;e++)n.push(t[e])}}if(null!==o||null!==s){let e=null;if(null===o)e=s;else if(null===s)e=o;else{e=sn.comparePoints(o,s)<=0?o:s}this.queue.delete(t.rightSE),n.push(t.rightSE);const r=t.split(e);for(let e=0,t=r.length;e<t;e++)n.push(r[e])}n.length>0?(this.tree.delete(t),n.push(e)):(this.segments.push(t),t.prev=r)}else{if(r&&i){const e=r.getIntersection(i);if(null!==e){if(!r.isAnEndpoint(e)){const t=this._splitSafely(r,e);for(let e=0,r=t.length;e<r;e++)n.push(t[e])}if(!i.isAnEndpoint(e)){const t=this._splitSafely(i,e);for(let e=0,r=t.length;e<r;e++)n.push(t[e])}}}this.tree.delete(t)}return n}_splitSafely(e,t){this.tree.delete(e);const n=e.rightSE;this.queue.delete(n);const r=e.split(t);return r.push(n),void 0===e.consumedBy&&this.tree.add(e),r}},hn=new class{type;numMultiPolys;run(e,t,n){hn.type=e;const r=[new mn(t,!0)];for(let e=0,t=n.length;e<t;e++)r.push(new mn(n[e],!1));if(hn.numMultiPolys=r.length,"difference"===hn.type){const e=r[0];let t=1;for(;t<r.length;)null!==Zt(r[t].bbox,e.bbox)?t++:r.splice(t,1)}if("intersection"===hn.type)for(let e=0,t=r.length;e<t;e++){const t=r[e];for(let n=e+1,i=r.length;n<i;n++)if(null===Zt(t.bbox,r[n].bbox))return[]}const i=new Vt(sn.compare);for(let e=0,t=r.length;e<t;e++){const t=r[e].getSweepEvents();for(let e=0,n=t.length;e<n;e++)i.add(t[e])}const o=new cn(i);let s=null;for(0!=i.size&&(s=i.first(),i.delete(s));s;){const e=o.process(s);for(let t=0,n=e.length;t<n;t++){const n=e[t];void 0===n.consumedBy&&i.add(n)}0!=i.size?(s=i.first(),i.delete(s)):s=null}Kt.reset();const a=an.factory(o.segments);return new un(a).getGeom()}},pn=hn,fn=0,dn=class e{id;leftSE;rightSE;rings;windings;ringOut;consumedBy;prev;_prevInResult;_beforeState;_afterState;_isInResult;static compare(e,t){const n=e.leftSE.point.x,r=t.leftSE.point.x,i=e.rightSE.point.x,o=t.rightSE.point.x;if(o.isLessThan(n))return 1;if(i.isLessThan(r))return-1;const s=e.leftSE.point.y,a=t.leftSE.point.y,l=e.rightSE.point.y,u=t.rightSE.point.y;if(n.isLessThan(r)){if(a.isLessThan(s)&&a.isLessThan(l))return 1;if(a.isGreaterThan(s)&&a.isGreaterThan(l))return-1;const n=e.comparePoint(t.leftSE.point);if(n<0)return 1;if(n>0)return-1;const r=t.comparePoint(e.rightSE.point);return 0!==r?r:-1}if(n.isGreaterThan(r)){if(s.isLessThan(a)&&s.isLessThan(u))return-1;if(s.isGreaterThan(a)&&s.isGreaterThan(u))return 1;const n=t.comparePoint(e.leftSE.point);if(0!==n)return n;const r=e.comparePoint(t.rightSE.point);return r<0?1:r>0?-1:1}if(s.isLessThan(a))return-1;if(s.isGreaterThan(a))return 1;if(i.isLessThan(o)){const n=t.comparePoint(e.rightSE.point);if(0!==n)return n}if(i.isGreaterThan(o)){const n=e.comparePoint(t.rightSE.point);if(n<0)return 1;if(n>0)return-1}if(!i.eq(o)){const e=l.minus(s),t=i.minus(n),c=u.minus(a),h=o.minus(r);if(e.isGreaterThan(t)&&c.isLessThan(h))return 1;if(e.isLessThan(t)&&c.isGreaterThan(h))return-1}return i.isGreaterThan(o)?1:i.isLessThan(o)||l.isLessThan(u)?-1:l.isGreaterThan(u)?1:e.id<t.id?-1:e.id>t.id?1:0}constructor(e,t,n,r){this.id=++fn,this.leftSE=e,e.segment=this,e.otherSE=t,this.rightSE=t,t.segment=this,t.otherSE=e,this.rings=n,this.windings=r}static fromRing(t,n,r){let i,o,s;const a=sn.comparePoints(t,n);if(a<0)i=t,o=n,s=1;else{if(!(a>0))throw new Error(`Tried to create degenerate segment at [${t.x}, ${t.y}]`);i=n,o=t,s=-1}const l=new sn(i,!0),u=new sn(o,!1);return new e(l,u,[r],[s])}replaceRightSE(e){this.rightSE=e,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}bbox(){const e=this.leftSE.point.y,t=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:e.isLessThan(t)?e:t},ur:{x:this.rightSE.point.x,y:e.isGreaterThan(t)?e:t}}}vector(){return{x:this.rightSE.point.x.minus(this.leftSE.point.x),y:this.rightSE.point.y.minus(this.leftSE.point.y)}}isAnEndpoint(e){return e.x.eq(this.leftSE.point.x)&&e.y.eq(this.leftSE.point.y)||e.x.eq(this.rightSE.point.x)&&e.y.eq(this.rightSE.point.y)}comparePoint(e){return Kt.orient(this.leftSE.point,e,this.rightSE.point)}getIntersection(e){const t=this.bbox(),n=e.bbox(),r=Zt(t,n);if(null===r)return null;const i=this.leftSE.point,o=this.rightSE.point,s=e.leftSE.point,a=e.rightSE.point,l=$t(t,s)&&0===this.comparePoint(s),u=$t(n,i)&&0===e.comparePoint(i),c=$t(t,a)&&0===this.comparePoint(a),h=$t(n,o)&&0===e.comparePoint(o);if(u&&l)return h&&!c?o:!h&&c?a:null;if(u)return c&&i.x.eq(a.x)&&i.y.eq(a.y)?null:i;if(l)return h&&o.x.eq(s.x)&&o.y.eq(s.y)?null:s;if(h&&c)return null;if(h)return o;if(c)return a;const p=((e,t,n,r)=>{if(t.x.isZero())return on(n,r,e.x);if(r.x.isZero())return on(e,t,n.x);if(t.y.isZero())return rn(n,r,e.y);if(r.y.isZero())return rn(e,t,n.y);const i=Jt(t,r);if(i.isZero())return null;const o={x:n.x.minus(e.x),y:n.y.minus(e.y)},s=Jt(o,t).div(i),a=Jt(o,r).div(i),l=e.x.plus(a.times(t.x)),u=n.x.plus(s.times(r.x)),c=e.y.plus(a.times(t.y)),h=n.y.plus(s.times(r.y));return{x:l.plus(u).div(2),y:c.plus(h).div(2)}})(i,this.vector(),s,e.vector());return null===p?null:$t(r,p)?Kt.snap(p):null}split(t){const n=[],r=void 0!==t.events,i=new sn(t,!0),o=new sn(t,!1),s=this.rightSE;this.replaceRightSE(o),n.push(o),n.push(i);const a=new e(i,s,this.rings.slice(),this.windings.slice());return sn.comparePoints(a.leftSE.point,a.rightSE.point)>0&&a.swapEvents(),sn.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),r&&(i.checkForConsuming(),o.checkForConsuming()),n}swapEvents(){const e=this.rightSE;this.rightSE=this.leftSE,this.leftSE=e,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(let e=0,t=this.windings.length;e<t;e++)this.windings[e]*=-1}consume(t){let n=this,r=t;for(;n.consumedBy;)n=n.consumedBy;for(;r.consumedBy;)r=r.consumedBy;const i=e.compare(n,r);if(0!==i){if(i>0){const e=n;n=r,r=e}if(n.prev===r){const e=n;n=r,r=e}for(let e=0,t=r.rings.length;e<t;e++){const t=r.rings[e],i=r.windings[e],o=n.rings.indexOf(t);-1===o?(n.rings.push(t),n.windings.push(i)):n.windings[o]+=i}r.rings=null,r.windings=null,r.consumedBy=n,r.leftSE.consumedBy=n.leftSE,r.rightSE.consumedBy=n.rightSE}}prevInResult(){return void 0!==this._prevInResult||(this.prev?this.prev.isInResult()?this._prevInResult=this.prev:this._prevInResult=this.prev.prevInResult():this._prevInResult=null),this._prevInResult}beforeState(){if(void 0!==this._beforeState)return this._beforeState;if(this.prev){const e=this.prev.consumedBy||this.prev;this._beforeState=e.afterState()}else this._beforeState={rings:[],windings:[],multiPolys:[]};return this._beforeState}afterState(){if(void 0!==this._afterState)return this._afterState;const e=this.beforeState();this._afterState={rings:e.rings.slice(0),windings:e.windings.slice(0),multiPolys:[]};const t=this._afterState.rings,n=this._afterState.windings,r=this._afterState.multiPolys;for(let e=0,r=this.rings.length;e<r;e++){const r=this.rings[e],i=this.windings[e],o=t.indexOf(r);-1===o?(t.push(r),n.push(i)):n[o]+=i}const i=[],o=[];for(let e=0,r=t.length;e<r;e++){if(0===n[e])continue;const r=t[e],s=r.poly;if(-1===o.indexOf(s))if(r.isExterior)i.push(s);else{-1===o.indexOf(s)&&o.push(s);const e=i.indexOf(r.poly);-1!==e&&i.splice(e,1)}}for(let e=0,t=i.length;e<t;e++){const t=i[e].multiPoly;-1===r.indexOf(t)&&r.push(t)}return this._afterState}isInResult(){if(this.consumedBy)return!1;if(void 0!==this._isInResult)return this._isInResult;const e=this.beforeState().multiPolys,t=this.afterState().multiPolys;switch(pn.type){case"union":{const n=0===e.length,r=0===t.length;this._isInResult=n!==r;break}case"intersection":{let n,r;e.length<t.length?(n=e.length,r=t.length):(n=t.length,r=e.length),this._isInResult=r===pn.numMultiPolys&&n<r;break}case"xor":{const n=Math.abs(e.length-t.length);this._isInResult=n%2==1;break}case"difference":{const n=e=>1===e.length&&e[0].isSubject;this._isInResult=n(e)!==n(t);break}}return this._isInResult}},gn=class{poly;isExterior;segments;bbox;constructor(e,t,n){if(!Array.isArray(e)||0===e.length)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=t,this.isExterior=n,this.segments=[],"number"!=typeof e[0][0]||"number"!=typeof e[0][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");const r=Kt.snap({x:new Nt(e[0][0]),y:new Nt(e[0][1])});this.bbox={ll:{x:r.x,y:r.y},ur:{x:r.x,y:r.y}};let i=r;for(let t=1,n=e.length;t<n;t++){if("number"!=typeof e[t][0]||"number"!=typeof e[t][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");const n=Kt.snap({x:new Nt(e[t][0]),y:new Nt(e[t][1])});n.x.eq(i.x)&&n.y.eq(i.y)||(this.segments.push(dn.fromRing(i,n,this)),n.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=n.x),n.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=n.y),n.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=n.x),n.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=n.y),i=n)}r.x.eq(i.x)&&r.y.eq(i.y)||this.segments.push(dn.fromRing(i,r,this))}getSweepEvents(){const e=[];for(let t=0,n=this.segments.length;t<n;t++){const n=this.segments[t];e.push(n.leftSE),e.push(n.rightSE)}return e}},yn=class{multiPoly;exteriorRing;interiorRings;bbox;constructor(e,t){if(!Array.isArray(e))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");this.exteriorRing=new gn(e[0],this,!0),this.bbox={ll:{x:this.exteriorRing.bbox.ll.x,y:this.exteriorRing.bbox.ll.y},ur:{x:this.exteriorRing.bbox.ur.x,y:this.exteriorRing.bbox.ur.y}},this.interiorRings=[];for(let t=1,n=e.length;t<n;t++){const n=new gn(e[t],this,!1);n.bbox.ll.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=n.bbox.ll.x),n.bbox.ll.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=n.bbox.ll.y),n.bbox.ur.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=n.bbox.ur.x),n.bbox.ur.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=n.bbox.ur.y),this.interiorRings.push(n)}this.multiPoly=t}getSweepEvents(){const e=this.exteriorRing.getSweepEvents();for(let t=0,n=this.interiorRings.length;t<n;t++){const n=this.interiorRings[t].getSweepEvents();for(let t=0,r=n.length;t<r;t++)e.push(n[t])}return e}},mn=class{isSubject;polys;bbox;constructor(e,t){if(!Array.isArray(e))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");try{"number"==typeof e[0][0][0]&&(e=[e])}catch(e){}this.polys=[],this.bbox={ll:{x:new Nt(Number.POSITIVE_INFINITY),y:new Nt(Number.POSITIVE_INFINITY)},ur:{x:new Nt(Number.NEGATIVE_INFINITY),y:new Nt(Number.NEGATIVE_INFINITY)}};for(let t=0,n=e.length;t<n;t++){const n=new yn(e[t],this);n.bbox.ll.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=n.bbox.ll.x),n.bbox.ll.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=n.bbox.ll.y),n.bbox.ur.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=n.bbox.ur.x),n.bbox.ur.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=n.bbox.ur.y),this.polys.push(n)}this.isSubject=t}getSweepEvents(){const e=[];for(let t=0,n=this.polys.length;t<n;t++){const n=this.polys[t].getSweepEvents();for(let t=0,r=n.length;t<r;t++)e.push(n[t])}return e}};Kt.set;var vn=function(e,t={}){const n=[];if(T(e,e=>{n.push(e.coordinates)}),n.length<2)throw new Error("Must have at least 2 geometries");const r=((e,...t)=>pn.run("union",e,t))(n[0],...n.slice(1));return 0===r.length?null:1===r.length?g(r[0],t.properties):function(e,t,n={}){return f({type:"MultiPolygon",coordinates:e},t,n)}(r,t.properties)};function En(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function bn(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?En(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):En(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var wn=(e,t)=>{var n,r,i,o,s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01,n=e.geometry.coordinates.map(e=>[...e]),r=n.length-1,i=(e,n)=>[e[0]+(e[0]-n[0])*t,e[1]+(e[1]-n[1])*t],o=i(n[0],n[1]),s=i(n[r],n[r-1]);return n[0]=o,n[r]=s,y(n)}(t);try{o=ut(e,s)}catch(e){return null}var a=[];if("MultiPolygon"!==o.geometry.type)return null;if(2!==o.geometry.coordinates.length)return null;a=o.geometry.coordinates.map(t=>g(t,e.properties));var l=null!==(n=null!==(r=e.id)&&void 0!==r?r:null===(i=e.properties)||void 0===i?void 0:i.id)&&void 0!==n?n:"poly";return m(a.map((t,n)=>g(t.geometry.coordinates,bn(bn({},e.properties),{},{id:l}),{id:"".concat(l,"-").concat(n+1)})))},Sn=(e,t)=>{var[n,r]=e,[i,o]=t,s=e=>e*Math.PI/180,a=s(o-r),l=s(i-n),u=Math.sin(a/2)**2+Math.cos(s(r))*Math.cos(s(o))*Math.sin(l/2)**2;return 12742e3*Math.atan2(Math.sqrt(u),Math.sqrt(1-u))},Pn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01,n=e[0];return n.length<=1||!(n.length<=3&&((e,t)=>{for(var n=0;n<e.length;n++)for(var r=n+1;r<e.length;r++)if(Sn(e[n],e[r])<t)return!0;return!1})(n,t))},xn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01;if(e.length<=1)return!0;var n=e[e.length-1],r=e[e.length-2];return Sn(n,r)>=t},_n=e=>e[0].length<=1||Pn(e),On=(e,t,n)=>{var r=t.filter(t=>{var r=Math.abs(t[0]-e[0]),i=Math.abs(t[1]-e[1]);return("ArrowUp"===n?t[1]<=e[1]&&i>=r:"ArrowDown"===n?t[1]>e[1]&&i>=r:"ArrowLeft"===n?t[0]<=e[0]&&i<r:"ArrowRight"!==n||t[0]>e[0]&&i<r)&&JSON.stringify(t)!==JSON.stringify(e)});r.length||r.push(e);var i=r.map(t=>{return n=Math.abs(e[0]-t[0]),r=Math.abs(e[1]-t[1]),Math.sqrt(Math.pow(n,2)+Math.pow(r,2));var n,r}),o=r[i.indexOf(Math.min(...i))];return t.findIndex(e=>JSON.stringify(e)===JSON.stringify(o))},Tn="_splitter",An=e=>{var{draw:t,polygonFeature:n,feature:r}=e,i=((e,t)=>{var n,r=null===(n=t.geometry)||void 0===n?void 0:n.coordinates;return!(!r||r.length<2||!wn(e,{id:Tn,geometry:t.geometry}))})(n,r);return t.setDrawingPreviewProperty("splitter",i?"valid":"invalid"),i},Cn=e=>{var{draw:t,dispatch:n,polygonFeature:r}=e;return e=>{var i,{feature:o,phase:s}=e;if("preview"===s)i=An({draw:t,polygonFeature:r,feature:o});else{if(null==s||!s.startsWith("commit-"))return{valid:!0};i=(e=>{var{draw:t,dispatch:n,polygonFeature:r,feature:i}=e,o=An({draw:t,polygonFeature:r,feature:i});return n({type:"SET_ACTION",payload:{name:"split",isValid:o}}),n({type:"SET_GEOMETRY_VALID",payload:o}),t.setGeometryValid(o),o})({draw:t,dispatch:n,polygonFeature:r,feature:o})}return i?{valid:!0}:{valid:!1,reason:"Line does not split the shape into two parts"}}};function Ln(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function kn(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?Ln(Object(r),!0).forEach(function(n){e(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ln(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}var Mn,Rn="top-middle",In="undefined"!=typeof navigator&&/mac/i.test((null===(Mn=navigator.userAgentData)||void 0===Mn?void 0:Mn.platform)||navigator.platform||"")?"<kbd>Command</kbd> + <kbd>Z</kbd>":"<kbd>Ctrl</kbd> + <kbd>Z</kbd>",Nn=e=>({mobile:{slot:"actions",showLabel:e},tablet:{slot:"actions",showLabel:e},desktop:{slot:"actions",showLabel:e}}),Dn={reducer:{initialState:{mode:null,action:null,actionValid:!1,feature:null,tempFeature:null,selectedVertexIndex:-1,numVertices:null,geometryValid:!0,canAddPoint:!0,snap:!1,hasSnapLayers:!1,undoStackLength:0},actions:a},InitComponent:e=>{var{appState:n,appConfig:r,mapState:i,pluginConfig:o,pluginState:s,services:a,mapProvider:c,buttonConfig:h}=e,{eventBus:p,hints:f}=a,{crossHair:d}=i,g=["touch","keyboard"].includes(n.interfaceType);t(()=>{var e,t,r,a,h=null===(e=null===(t=o.includeModes)||void 0===t?void 0:t.includes(n.mode))||void 0===e||e,f=null!==(r=null===(a=o.excludeModes)||void 0===a?void 0:a.includes(n.mode))&&void 0!==r&&r;if(i.isMapReady&&h&&!f){var d=!0;return u(c,{mapStyle:i.mapStyle,snapLayers:o.snapLayers,pluginConfig:o,events:l,eventBus:p}).then(e=>{var t;d&&(c.draw=e,s.dispatch({type:"SET_HAS_SNAP_LAYERS",payload:(null===(t=o.snapLayers)||void 0===t?void 0:t.length)>0}),p.emit("draw:ready"))}),()=>{var e;d=!1,null===(e=c.draw)||void 0===e||e.remove(),c.draw=null,c.activeMoveTarget=null}}},[i.isMapReady,n.mode]),t(()=>{if(["draw_polygon","draw_line"].includes(s.mode)&&g){var e=d.isVisible;return d.fixAtCenter(),()=>{e||["touch","keyboard"].includes(n.interfaceType)||d.hide()}}},[s.mode,n.interfaceType]),t(()=>{["edit_vertex","draw_polygon","draw_line"].includes(s.mode)&&c.draw&&c.draw.setInterfaceType(n.interfaceType)},[n.interfaceType,s.mode]),t(()=>{if(c.draw)return me({appState:n,appConfig:r,mapState:i,mapProvider:c,buttonConfig:h,pluginState:s,eventBus:p,hints:f})},[c,n,s])},buttons:[kn({id:"drawCancel",label:"Cancel",variant:"tertiary",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!t.mode}},Nn(!0)),kn({id:"drawAddPoint",label:"Add point",variant:"primary",exclusiveSlot:!0,hiddenWhen:e=>{var{appState:t,pluginState:n}=e;return!["draw_polygon","draw_line"].includes(n.mode)||"touch"!==t.interfaceType},enableWhen:e=>{var{pluginState:t}=e;return t.canAddPoint}},Nn(!0)),kn({id:"drawDone",label:"Done",variant:"primary",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!["draw_polygon","draw_line","edit_vertex"].includes(t.mode)},enableWhen:e=>{var{pluginState:t}=e,{mode:n,geometryValid:r}=t;return["draw_polygon","draw_line","edit_vertex"].includes(n)&&r}},Nn(!0)),{id:"drawMenu",label:e=>{var{pluginState:t}=e;return"edit_vertex"===t.mode?"Edit actions":"Draw actions"},iconId:"menu",exclusiveSlot:!0,hiddenWhen:e=>{var{pluginState:t}=e;return!["draw_polygon","draw_line","edit_vertex"].includes(t.mode)},menuItems:[{id:"drawUndo",label:"Undo",iconId:"undo",hiddenWhen:e=>{var{pluginState:t}=e;return!["draw_polygon","draw_line","edit_vertex"].includes(t.mode)},enableWhen:e=>{var{pluginState:t}=e;return["draw_polygon","draw_line"].includes(t.mode)?t.numVertices>0:t.undoStackLength>0}},{id:"drawSnap",label:"Snap to feature",iconId:"magnet",hiddenWhen:e=>{var{pluginState:t}=e;return!t.mode||!t.hasSnapLayers},pressedWhen:e=>{var{pluginState:t}=e;return!!t.snap}},{id:"drawDeletePoint",label:"Delete point",iconId:"trash",enableWhen:e=>{var t,{pluginState:n}=e;return!(n.selectedVertexIndex<0)&&("Polygon"===(null===(t=n.feature)||void 0===t||null===(t=t.geometry)||void 0===t?void 0:t.type)?n.numVertices>3:n.numVertices>2)},hiddenWhen:e=>{var{pluginState:t}=e;return"edit_vertex"!==t.mode}}],mobile:{slot:Rn},tablet:{slot:Rn},desktop:{slot:Rn}}],keyboardShortcuts:[{id:"drawAddPoint",group:"Drawing",title:"Add point (draw)",command:"<kbd>Enter</kbd>"},{id:"drawSelectPoint",group:"Drawing",title:"Select nearest point (edit)",command:"<kbd>Spacebar</kbd>"},{id:"drawSelectAdjacentPoint",group:"Drawing",title:"Select adjacent point (edit)",command:"<kbd>Alt</kbd> + <kbd>↑</kbd> <kbd>↓</kbd> <kbd>←</kbd> or <kbd>→</kbd>"},{id:"drawMovePoint",group:"Drawing",title:"Move point (edit)",command:"<kbd>↑</kbd> <kbd>↓</kbd> <kbd>←</kbd> or <kbd>→</kbd>"},{id:"drawNudgePoint",group:"Drawing",title:"Nudge point (edit)",command:"<kbd>Shift</kbd> + <kbd>↑</kbd> <kbd>↓</kbd> <kbd>←</kbd> or <kbd>→</kbd>"},{id:"drawDeletePoint",group:"Drawing",title:"Delete point (edit)",command:"<kbd>Delete</kbd>"},{id:"drawUndo",group:"Drawing",title:"Undo",command:In}],icons:[{id:"menu",svgContent:'<path d="m6 9 6 6 6-6"/>'},{id:"undo",svgContent:'<path d="M9 14 4 9l5-5"/><path d="M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11"/>'},{id:"magnet",svgContent:'<path d="m12 15 4 4"/><path d="M2.352 10.648a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l6.029-6.029a1 1 0 1 1 3 3l-6.029 6.029a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l6.365-6.367A1 1 0 0 0 8.716 4.282z"/><path d="m5 8 4 4"/>'},{id:"trash",svgContent:'<path d="M10 11v6"/><path d="M14 11v6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/><path d="M3 6h18"/><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/>'}],api:{newPolygon:function(e,t){var n,{appState:i,appConfig:o,pluginConfig:s,pluginState:a,mapState:l,mapProvider:u,services:c}=e,h=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{dispatch:p}=a,{draw:f}=u,{eventBus:d}=c;if(f){d.emit("draw:started",{mode:"draw_polygon"});var g=void 0===h.snapLayers?null!==(n=s.snapLayers)&&void 0!==n?n:null:h.snapLayers;f.setSnapLayers(g),p({type:"SET_HAS_SNAP_LAYERS",payload:(null==g?void 0:g.length)>0});var{stroke:y,fill:m,strokeWidth:v,properties:E,onGeometryChange:b}=h,w=r(h,be);f._geometryValidator=null!=b?b:s.onGeometryChange;var S=Se(Se({},E),Ee({stroke:y,fill:m,strokeWidth:v}));f.changeMode("draw_polygon",Se(Se({container:i.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(o.id,"-draw-add-point"),interfaceType:i.interfaceType,crossHair:l.crossHair,getSnapEnabled:()=>f.isSnapEnabled(),featureId:t},w),{},{properties:S})),p({type:"SET_MODE",payload:"draw_polygon"})}},newLine:function(e,t){var n,{appState:i,appConfig:o,pluginConfig:s,pluginState:a,mapState:l,mapProvider:u,services:c}=e,h=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{dispatch:p}=a,{draw:f}=u,{eventBus:d}=c;if(f){d.emit("draw:started",{mode:"draw_line"});var g=void 0===h.snapLayers?null!==(n=s.snapLayers)&&void 0!==n?n:null:h.snapLayers;f.setSnapLayers(g),p({type:"SET_HAS_SNAP_LAYERS",payload:(null==g?void 0:g.length)>0});var{stroke:y,fill:m,strokeWidth:v,properties:E,onGeometryChange:b}=h,w=r(h,Pe);f._geometryValidator=null!=b?b:s.onGeometryChange;var S=_e(_e({},E),Ee({stroke:y,fill:m,strokeWidth:v}));f.changeMode("draw_line",_e(_e({container:i.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(o.id,"-draw-add-point"),interfaceType:i.interfaceType,crossHair:l.crossHair,getSnapEnabled:()=>f.isSnapEnabled(),featureId:t},w),{},{properties:S})),p({type:"SET_MODE",payload:"draw_line"})}},editFeature:function(e,t){var n,r,i,{appState:o,appConfig:s,mapState:a,pluginConfig:l,pluginState:u,mapProvider:c,services:h}=e,p=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{dispatch:f}=u,{draw:d}=c,{eventBus:g}=h;if(!d)return!1;var y=d.get(t);if(!y)return!1;d._geometryValidator=null!==(n=p.onGeometryChange)&&void 0!==n?n:l.onGeometryChange;g.emit("draw:editstart",{mode:{LineString:"edit_line",Polygon:"edit_polygon"}[y.geometry.type]});var m=void 0===p.snapLayers?null!==(r=l.snapLayers)&&void 0!==r?r:null:p.snapLayers;d.setSnapLayers(m),f({type:"SET_HAS_SNAP_LAYERS",payload:(null==m?void 0:m.length)>0}),d.changeMode("edit_vertex",{container:o.layoutRefs.viewportRef.current,deleteVertexButtonId:"".concat(s.id,"-draw-delete-point"),undoButtonId:"".concat(s.id,"-draw-undo"),isPanEnabled:"keyboard"!==o.interfaceType,interfaceType:o.interfaceType,scale:he[a.mapSize],featureId:t,getSnapEnabled:()=>d.isSnapEnabled()});var v=d.get(t);f({type:"SET_FEATURE",payload:{feature:v,tempFeature:v}}),f({type:"SET_MODE",payload:"edit_vertex"});var{valid:E}=Q(v,{phase:"edit-start",mode:"edit_vertex"},{onGeometryChange:d._geometryValidator});return f({type:"SET_GEOMETRY_VALID",payload:E}),null===(i=d.setInvalid)||void 0===i||i.call(d,!E),!0},addFeature:(e,t)=>{var{mapProvider:n,services:i}=e,{draw:o}=n,{eventBus:s}=i;if(o){var{stroke:a,fill:l,strokeWidth:u,properties:c}=t,h=Ae(Ae({},r(t,Oe)),{},{properties:Ae(Ae({},c),Ee({stroke:a,fill:l,strokeWidth:u}))});o.add(h),s.emit("draw:add",h)}},deleteFeature:(e,t)=>{var{mapProvider:n,services:r}=e,{draw:i}=n,{eventBus:o}=r;i&&(i.delete(t),o.emit("draw:delete",{featureId:t}))},split:function(e,t){var{appState:n,appConfig:r,pluginState:i,mapState:o,mapProvider:s,services:a}=e,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{dispatch:u}=i,{draw:h}=s,{eventBus:p}=a;if(h){var f=h.get(t),d=h._geometryValidator;h._geometryValidator=Cn({draw:h,dispatch:u,polygonFeature:f});var g=["stroke-inactive.cold",...l.snapLayers||[]];h.setSnapLayers(g),u({type:"SET_HAS_SNAP_LAYERS",payload:!0}),h.changeMode("draw_line",{container:n.layoutRefs.viewportRef.current,addVertexButtonId:"".concat(r.id,"-draw-add-point"),interfaceType:n.interfaceType,crossHair:null==o?void 0:o.crossHair,getSnapEnabled:()=>h.isSnapEnabled(),featureId:Tn,properties:{splitter:"invalid"}});var y=()=>{h._geometryValidator=d,h.off(c.CREATE,m),h.off(c.CANCEL,v)},m=e=>{y(),h.delete(Tn);var n=wn(f,e);u({type:"SET_ACTION",payload:{name:"split",isValid:!!n}}),n&&p.emit("draw:split",{originalFeatureId:t,featureCollection:n})},v=()=>{y()};h.on(c.CREATE,m),h.on(c.CANCEL,v),u({type:"SET_MODE",payload:"draw_line"}),u({type:"SET_ACTION",payload:{name:"split"}})}},merge:(e,t)=>{var{mapProvider:n,services:r}=e,{draw:i}=n,{eventBus:o}=r;if(!i)return null;var s=(e=>{var t,n,r,i,o;try{o=vn(m(e))}catch(e){return null}if("Polygon"!==(null===(t=o)||void 0===t||null===(t=t.geometry)||void 0===t?void 0:t.type))return null;var s=null!==(n=null!==(r=e[0].id)&&void 0!==r?r:null===(i=e[0].properties)||void 0===i?void 0:i.id)&&void 0!==n?n:"poly";return g(o.geometry.coordinates,bn(bn({},e[0].properties),{},{id:s}),{id:s})})(t.map(e=>i.get(e)));return s&&o.emit("draw:merge",{originalFeatureIds:t,feature:s}),s}}},Gn=Object.freeze({__proto__:null,manifest:Dn});export{c as A,ae as C,K as H,ce as K,X as L,I as M,le as S,ue as T,te as a,_n as b,x as c,xn as d,S as e,w as f,g,y as h,P as i,A as j,m as k,b as l,v as m,f as n,_ as o,d as p,O as q,E as r,On as s,he as t,Q as u,ne as v,ee as w,Gn as x};
@@ -0,0 +1 @@
1
+ import e from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/defineProperty";function t(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,n)}return t}function n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach(function(t){r(e,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))})}return e}function o(){var r;return n(n({},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),{},{id:"draw",load:(r=e(function*(){return(yield import(/* webpackChunkName: "im-draw-plugin" */ "./im-draw-plugin.js").then(function(e){return e.x})).manifest}),function(){return r.apply(this,arguments)})})}export{o as default};