{"version":3,"sources":["src/util.js","src/AssertionError.js","src/asserts.js","src/obj.js","src/events.js","../src/events/EventType.js","src/ObjectEventType.js","src/Disposable.js","src/array.js","src/functions.js","../src/events/Event.js","../src/events/Target.js","src/Observable.js","src/Object.js","src/Feature.js","src/CollectionEventType.js","src/Collection.js","src/MapEvent.js","src/MapBrowserEvent.js","node_modules/@openlayers/pepjs/dist/pep.js","src/has.js","src/MapBrowserEventType.js","src/MapBrowserPointerEvent.js","../src/pointer/EventType.js","src/MapBrowserEventHandler.js","src/MapEventType.js","src/MapProperty.js","../src/render/EventType.js","src/TileState.js","../src/structs/PriorityQueue.js","src/TileQueue.js","../src/tilegrid/common.js","src/math.js","src/centerconstraint.js","../src/extent/Corner.js","../src/extent/Relationship.js","src/extent.js","src/resolutionconstraint.js","src/rotationconstraint.js","src/ViewHint.js","src/ViewProperty.js","src/string.js","src/coordinate.js","src/easing.js","../src/geom/GeometryType.js","../src/geom/GeometryLayout.js","../../src/geom/flat/transform.js","src/sphere.js","../src/proj/Units.js","../src/proj/Projection.js","../src/proj/epsg3857.js","../src/proj/epsg4326.js","../src/proj/transforms.js","../src/proj/projections.js","src/proj.js","src/transform.js","../src/geom/Geometry.js","../src/geom/SimpleGeometry.js","../../src/geom/flat/area.js","../../src/geom/flat/closest.js","../../src/geom/flat/deflate.js","../../src/geom/flat/inflate.js","../../src/geom/flat/simplify.js","../src/geom/LinearRing.js","../src/geom/Point.js","../../src/geom/flat/contains.js","../../src/geom/flat/interiorpoint.js","../../src/geom/flat/segments.js","../../src/geom/flat/intersectsextent.js","../../src/geom/flat/reverse.js","../../src/geom/flat/orient.js","../src/geom/Polygon.js","src/View.js","src/dom.js","../src/layer/Property.js","../src/layer/Base.js","../src/source/State.js","../src/layer/Group.js","src/size.js","src/PluggableMap.js","../src/control/Control.js","src/css.js","../src/layer/Layer.js","../src/control/Attribution.js","../src/control/Rotate.js","../src/control/Zoom.js","../src/control/FullScreen.js","../src/control/MousePosition.js","../src/render/Event.js","src/color.js","../src/style/IconImageCache.js","src/colorlike.js","../src/render/VectorContext.js","../src/structs/LRUCache.js","../../src/render/canvas/LabelCache.js","../src/render/canvas.js","../../src/render/canvas/Immediate.js","src/ImageState.js","../../src/render/canvas/BuilderType.js","../src/renderer/vector.js","src/render.js","../src/renderer/Map.js","../src/renderer/Composite.js","src/OverlayPositioning.js","src/Overlay.js","../src/control/OverviewMap.js","../src/control/ScaleLine.js","../src/control/ZoomSlider.js","../src/control/ZoomToExtent.js","src/control.js","src/Kinetic.js","../src/interaction/Property.js","../src/interaction/Interaction.js","../src/interaction/DoubleClickZoom.js","../src/events/condition.js","../src/interaction/Pointer.js","../src/interaction/DragPan.js","../src/interaction/DragRotate.js","../src/render/Box.js","../src/interaction/DragBox.js","../src/interaction/DragZoom.js","../src/events/KeyCode.js","../src/interaction/KeyboardPan.js","../src/interaction/KeyboardZoom.js","../src/interaction/MouseWheelZoom.js","../src/interaction/PinchRotate.js","../src/interaction/PinchZoom.js","../src/interaction/DragAndDrop.js","../src/interaction/DragRotateAndZoom.js","../src/geom/Circle.js","../../src/geom/flat/interpolate.js","../../src/geom/flat/length.js","../src/geom/LineString.js","../src/geom/MultiLineString.js","../src/geom/MultiPoint.js","../../src/geom/flat/center.js","../src/geom/MultiPolygon.js","../src/style/Image.js","../src/style/RegularShape.js","../src/style/Circle.js","../src/style/Fill.js","../src/style/Stroke.js","../src/style/Style.js","../src/layer/BaseVector.js","../../src/render/canvas/Instruction.js","../../src/render/canvas/Builder.js","../../src/render/canvas/ImageBuilder.js","../../src/render/canvas/LineStringBuilder.js","../../src/render/canvas/PolygonBuilder.js","../../src/geom/flat/straightchunk.js","../src/style/TextPlacement.js","../../src/render/canvas/TextBuilder.js","../../src/render/canvas/BuilderGroup.js","../../src/geom/flat/textpath.js","node_modules/rbush/rbush.min.js","../../src/render/canvas/Executor.js","../../src/render/canvas/ExecutorGroup.js","../src/renderer/Layer.js","../../src/renderer/canvas/Layer.js","../src/style/IconAnchorUnits.js","src/ImageBase.js","src/Image.js","../src/style/IconImage.js","../src/style/IconOrigin.js","../src/style/Icon.js","../src/style/Text.js","src/style.js","../../src/render/canvas/hitdetect.js","../../src/renderer/canvas/VectorLayer.js","../src/layer/Vector.js","../src/format/FormatType.js","src/featureloader.js","src/loadingstrategy.js","../src/source/Source.js","../src/source/VectorEventType.js","../src/structs/RBush.js","../src/source/Vector.js","../src/interaction/Draw.js","../src/interaction/Extent.js","../src/interaction/Modify.js","../src/interaction/Select.js","../src/interaction/Snap.js","../src/interaction/Translate.js","src/interaction.js","src/Map.js","../src/format/Feature.js","../src/format/TextFeature.js","../../src/geom/flat/flip.js","../src/format/Polyline.js","src/webgl.js","../src/webgl/Buffer.js","../src/webgl/ContextEventType.js","../src/vec/mat4.js","../src/webgl/PostProcessingPass.js","../src/webgl/Helper.js","../../src/renderer/webgl/Layer.js","../src/worker/webgl.js","../src/webgl/RenderTarget.js","../../src/renderer/webgl/PointsLayer.js","../src/layer/Heatmap.js","../src/layer/BaseImage.js","../src/reproj/common.js","../../src/renderer/canvas/ImageLayer.js","../src/layer/Image.js","../src/layer/TileProperty.js","../src/layer/BaseTile.js","src/TileRange.js","../../src/renderer/canvas/TileLayer.js","../src/layer/Tile.js","src/ImageCanvas.js","../../src/renderer/canvas/VectorImageLayer.js","../src/layer/VectorImage.js","../src/layer/VectorTileRenderType.js","../../src/renderer/canvas/VectorTileLayer.js","../src/layer/VectorTile.js","src/layer.js","src/tilecoord.js","src/tileurlfunction.js","src/net.js","src/Tile.js","src/ImageTile.js","src/TileCache.js","src/reproj.js","../src/reproj/Triangulation.js","../src/reproj/Tile.js","../src/tilegrid/TileGrid.js","src/tilegrid.js","../src/source/Tile.js","../src/source/TileEventType.js","../src/source/UrlTile.js","../src/source/TileImage.js","../src/source/BingMaps.js","../src/source/XYZ.js","../src/source/CartoDB.js","../src/source/Cluster.js","../src/source/Zoomify.js","../src/format/IIIFInfo.js","../src/source/IIIF.js","../src/reproj/Image.js","../src/source/Image.js","src/uri.js","../src/source/ImageArcGISRest.js","../src/source/ImageCanvas.js","../src/source/ImageMapGuide.js","../src/source/ImageStatic.js","../src/source/common.js","../src/source/WMSServerType.js","../src/source/ImageWMS.js","../src/source/OSM.js","node_modules/pixelworks/lib/util.js","node_modules/pixelworks/lib/processor.js","node_modules/pixelworks/lib/index.js","../src/source/Raster.js","../src/source/Stamen.js","../src/source/TileArcGISRest.js","../src/source/TileDebug.js","../src/source/TileJSON.js","../src/source/TileWMS.js","../src/source/UTFGrid.js","src/VectorRenderTile.js","src/VectorTile.js","../src/source/VectorTile.js","../src/source/WMTSRequestEncoding.js","../src/tilegrid/WMTS.js","../src/source/WMTS.js","src/source.js","route.js","C:/Users/Kian/AppData/Roaming/npm/node_modules/parcel-bundler/src/builtins/bundle-url.js","C:/Users/Kian/AppData/Roaming/npm/node_modules/parcel-bundler/src/builtins/css-loader.js","C:/Users/Kian/AppData/Roaming/npm/node_modules/parcel-bundler/src/builtins/hmr-runtime.js"],"names":["fromTime1","toTime1","fromDate1","toDate1","deviceId1","currPath","$","on","val","length","alert","Status","ajax","async","url","dataType","method","data","fromTime","toTime","fromDate","toDate","deviceId","success","each","index","emp","aa","Array","parseFloat","LocLong","LocLat","Speed","toString","Direction","FaDate","LogTime","CarInfo","push","error","err","loadData","container","document","getElementById","content","closer","overlay","Overlay","element","autoPan","autoPanAnimation","duration","onclick","setPosition","undefined","blur","route","LineString","transform","routeCoords","getCoordinates","routeLength","center","getLength","masafat","Math","round","carInfo","summaryText","maxSpeedKi","max","apply","map","i","parseInt","innerHTML","routeFeature","Feature","type","geometry","geoMarker","Point","startMarker","endMarker","styles","Style","stroke","Stroke","width","color","image","Icon","anchor","src","CircleStyle","radius","fill","Fill","animating","speed","now","speedInput","startButton","vectorLayer","VectorLayer","source","VectorSource","features","style","feature","get","mousePositionControl","MousePosition","coordinateFormat","projection","className","target","undefinedHTML","empty","Map","overlays","view","View","zoom","minZoom","maxZoom","controls","extend","layers","TileLayer","OSM","ki1","kkk","coordinate","pLat","plong","pSpeed","pDate","pTime","pCarInfo","moveFeature","event","vectorContext","frameState","elapsedTime","time","stopAnimation","currentPoint","drawFeature","render","startAnimation","Date","getTime","value","textContent","setStyle","ended","coord","getGeometry","setCoordinates","un","addEventListener","bundleURL","getBundleURLCached","getBundleURL","Error","matches","stack","match","getBaseURL","replace","exports","bundle","require","updateLink","link","newLink","cloneNode","onload","remove","href","split","parentNode","insertBefore","nextSibling","cssTimeout","reloadCSS","setTimeout","links","querySelectorAll","module","OVERLAY_ID","OldModule","Module","moduleName","call","hot","hotData","_acceptCallbacks","_disposeCallbacks","accept","fn","dispose","checkedAssets","assetsToAccept","parent","isParcelRequire","WebSocket","hostname","location","protocol","ws","onmessage","JSON","parse","handled","assets","forEach","asset","isNew","didAccept","hmrAcceptCheck","global","parcelRequire","id","every","generated","js","console","clear","hmrApply","v","hmrAcceptRun","reload","close","onclose","log","removeErrorOverlay","message","createErrorOverlay","body","appendChild","createElement","stackTrace","innerText","getParents","modules","parents","k","d","dep","isArray","concat","Function","deps","cached","cache","some","cb"],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClRA;AACA;AACA;AACA;;;;;;;;;ACAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAjBA;;;;;AAoBA;;;;;;;;;;;;;;;;;;AAmBA;;;AAGA,IAAM,eAAe,GAAG;AACtB;;;;;AAKA,EAAA,gBAAgB,EAAE,kBANI;;AAQtB;;;;;AAKA,EAAA,eAAe,EAAE;AAbK,CAAxB;AAiBA;;;;;AAIA,IAAM,mBAAmB,GAAG;AAC1B,EAAA,KAAK,EAAE,OADmB;AAE1B,EAAA,KAAK,EAAE;AAFmB,CAA5B;AAMA;;;;;;AAKA,IAAA,iBAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAAuC,EAAA,SAAA,CAAA,iBAAA,EAAA,MAAA,CAAA;AACrC;;;;;;;AAKA,WAAA,iBAAA,CAAY,IAAZ,EAAkB,UAAlB,EAA8B,IAA9B,EAAkC;AAAlC,QAAA,KAAA,GACE,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,IAAN,KAAW,IADb;AAGE;;;;;;;AAKA,IAAA,KAAI,CAAC,MAAL,GAAc,UAAU,CAAC,MAAzB;AAEA;;;;;;AAKA,IAAA,KAAI,CAAC,UAAL,GAAkB,UAAU,CAAC,SAAX,CAAqB,UAArB,GAAkC,UAAU,CAAC,UAA/D;AAEA;;;;;;;AAMA,IAAA,KAAI,CAAC,IAAL,GAAY,IAAZ;;AAED;;AAEH,SAAA,iBAAA;AAjCA,CAAA,CAAuC,cAAvC,CAAA;;;;AAmCA;;;;;;;;;;;;;;;;;;;;AAqBA;;;;;;;;;AASA,IAAA,YAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAA2B,EAAA,SAAA,CAAA,YAAA,EAAA,MAAA,CAAA;AACzB;;;;;AAGA,WAAA,YAAA,CAAY,OAAZ,EAAmB;AAAnB,QAAA,KAAA,GACE,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM;AACJ,MAAA,UAAU,EAAE;AADR,KAAN,KAEE,IAHJ;AAKE;;;;;;AAIA,IAAA,KAAI,CAAC,OAAL,GAAe,IAAf;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,cAAL,GAAsB,OAAO,CAAC,aAAR,KAA0B,SAA1B,GACpB,OAAO,CAAC,aADY,GACI,mBAAmB,CAAC,KAD9C;AAGA;;;;;AAIA,IAAA,KAAI,CAAC,QAAL,GAAgB,OAAO,CAAC,OAAR,KAAoB,SAApB,GAAgC,OAAO,CAAC,OAAxC,GAAkD,CAAlE;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,OAAL,GAAe,YAAY,CAAC,OAAO,CAAC,OAAT,CAA3B;;AAEA,QAAM,OAAO,GAAG,KAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAAhB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAR,EAAW,EAAE,GAAG,KAAI,CAAC,OAAL,CAAa,MAAlC,EAA0C,CAAC,GAAG,EAA9C,EAAkD,EAAE,CAApD,EAAuD;AACrD,MAAA,KAAI,CAAC,OAAL,CAAa,CAAb,EAAgB,gBAAhB,CAAiC,mBAAU,MAA3C,EAAmD,OAAnD;AACD;AAED;;;;;;AAIA,IAAA,KAAI,CAAC,UAAL,GAAkB,IAAI,kBAAJ,CAAc,YAAA;AAC9B,aAAO,CAAP;AACD,KAFiB,EAEf,KAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,KAAlB,CAFe,CAAlB;AAIA;;;;;;AAKA,IAAA,KAAI,CAAC,oBAAL;AAEA;;;;;;AAKA,IAAA,KAAI,CAAC,oBAAL,GAA4B,IAA5B;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,iBAAL;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,WAAL,GAAmB;AACjB,MAAA,OAAO,EAAE,KADQ;AAEjB,MAAA,0BAA0B,EAAE,wBAFX;AAGjB,MAAA,MAAM,EAAE,IAHS;AAIjB,MAAA,KAAK,EAAE,CAJU;AAKjB,MAAA,UAAU,EAAE,CALK;AAMjB,MAAA,gBAAgB,EAAE,mBAAmB,CAAC,KAAI,CAAC,OAAN,CANpB;AAOjB,MAAA,UAAU,EAAE,CAPK;AAQjB,MAAA,0BAA0B,EAAE,wBARX;AASjB,MAAA,mBAAmB,EAAE,EATJ;AAUjB,MAAA,IAAI,EAAE,CAAC,CAAD,EAAI,CAAJ,CAVW;AAWjB,MAAA,SAAS,EAAE,KAAI,CAAC,UAXC;AAYjB,MAAA,IAAI,EAAE,IAAI,CAAC,GAAL,EAZW;AAajB,MAAA,SAAS,EAAE,EAbM;AAcjB,MAAA,SAAS;AAAE;AAA2C;AACpD,QAAA,QAAQ,EAAE;AAD0C,OAdrC;AAiBjB,MAAA,SAAS,EAAE,EAjBM;AAkBjB,MAAA,WAAW,EAAE,EAlBI;AAmBjB,MAAA,cAAc,EAAE;AAnBC,KAAnB;;AAsBA,IAAA,KAAI,CAAC,eAAL,CAAqB,UAAS,UAAT,EAAmB;AACtC,UAAM,YAAY,GAAG,EAArB;;AACA,WAAK,IAAI,KAAK,GAAG,CAAZ,EAAe,IAAI,GAAG,OAAO,CAAC,OAAR,CAAgB,MAA3C,EAAmD,KAAK,GAAG,IAA3D,EAAiE,EAAE,KAAnE,EAA0E;AACxE,YAAM,aAAa,GAAG,OAAO,CAAC,OAAR,CAAgB,KAAhB,CAAtB;AACA,YAAM,MAAM,GAAG,aAAa,YAAY,eAAzB,GAAkC,aAAlC,GAAkD,aAAa,CAAC,SAAd,EAAjE;AACA,YAAM,iBAAiB,GAAG,MAAM,CAAC,eAAP,EAA1B;;AACA,YAAI,OAAO,iBAAP,KAA6B,UAAjC,EAA6C;AAC3C,cAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAD,CAA3C;AACA,UAAA,YAAY,CAAC,IAAb,CAAkB,KAAlB,CAAwB,YAAxB,EAAsC,iBAAtC;AACD;AACF;;AACD,aAAO,YAAY,CAAC,MAAb,KAAwB,CAAxB,GAA4B,YAA5B,GAA2C,IAAlD;AACD,KAZD;;AAcA,QAAI,OAAO,CAAC,SAAR,KAAsB,SAA1B,EAAqC;AACnC,MAAA,KAAI,CAAC,YAAL,CAAkB,OAAO,CAAC,SAA1B,EAAqC,OAAO,CAAC,GAA7C;AACD;;;AAEF;AAED;;;;;;;;;AAOA,EAAA,YAAA,CAAA,SAAA,CAAA,YAAA,GAAA,UAAa,SAAb,EAAwB,OAAxB,EAA+B;AAC7B,SAAK,OAAL,GAAe,IAAI,gBAAJ,CAAc;AAC3B,MAAA,SAAS,EAAE,SADgB;AAE3B,MAAA,QAAQ,EAAE,KAAK,cAAL,KAAwB,mBAAmB,CAAC,KAF3B;AAG3B,MAAA,KAAK,EAAE,CAHoB;AAI3B,MAAA,GAAG,EAAE,OAJsB;AAK3B,MAAA,OAAO,EAAE,KAAK;AALa,KAAd,CAAf;AAOA,SAAK,OAAL;AACD,GATD;AAWA;;;;;;;;;;AAQA,EAAA,YAAA,CAAA,SAAA,CAAA,iBAAA,GAAA,UAAkB,MAAlB,EAA0B,UAA1B,EAAsC,UAAtC,EAAgD;AAE9C,QAAM,UAAU;AAAG;AAAwD,qBAAO,EAAP,EAAW,KAAK,WAAhB,CAA3E;AAEA,IAAA,UAAU,CAAC,SAAX;AAAuB;AAA2C,qBAAO,EAAP,EAAW,UAAU,CAAC,SAAtB,CAAlE;AAEA,QAAM,MAAM,GAAG,uBAAU,MAAV,CAAf;AAEA,IAAA,UAAU,CAAC,MAAX,GAAoB,MAAM,CAAC,KAAP,EAApB;AACA,IAAA,UAAU,CAAC,IAAX,CAAgB,CAAhB,IAAqB,IAAI,CAAC,KAAL,CAAW,sBAAS,MAAT,IAAmB,UAA9B,CAArB;AACA,IAAA,UAAU,CAAC,IAAX,CAAgB,CAAhB,IAAqB,IAAI,CAAC,KAAL,CAAW,uBAAU,MAAV,IAAoB,UAA/B,CAArB;AACA,IAAA,UAAU,CAAC,IAAX,GAAkB,QAAlB;AAEA,QAAM,SAAS,GAAG,UAAU,CAAC,SAA7B;AACA,IAAA,SAAS,CAAC,MAAV,GAAmB,MAAnB;AACA,IAAA,SAAS,CAAC,UAAV,GAAuB,UAAvB;AACA,IAAA,SAAS,CAAC,UAAV,GAAuB,UAAvB;AACA,WAAO,UAAP;AACD,GAlBD;AAoBA;;;;;;;AAKA,EAAA,YAAA,CAAA,SAAA,CAAA,gBAAA,GAAA,YAAA;AACE,QAAI,KAAK,GAAG,IAAZ;AACA,QAAI,MAAJ;;AACA,SAAK,IAAI,CAAC,GAAG,CAAR,EAAW,EAAE,GAAG,KAAK,OAAL,CAAa,MAAlC,EAA0C,CAAC,GAAG,EAA9C,EAAkD,EAAE,CAApD,EAAuD;AACrD,MAAA,MAAM,GAAG,KAAK,OAAL,CAAa,CAAb,EAAgB,SAAhB,EAAT;;AACA,UAAI,MAAM,CAAC,QAAP,OAAsB,eAAY,KAAtC,EAA6C;AAC3C,QAAA,KAAK,GAAG,KAAR;AACA;AACD;AACF;;AACD,WAAO,KAAP;AACD,GAXD;AAaA;;;;;AAGA,EAAA,YAAA,CAAA,SAAA,CAAA,QAAA,GAAA,UAAS,MAAT,EAAiB,UAAjB,EAA6B,UAA7B,EAAyC,UAAzC,EAAmD;AACjD,QAAI,CAAC,KAAK,gBAAL,EAAL,EAA8B;AAC5B,aAAO,IAAP;AACD;;AAED,QAAM,UAAU,GAAG,KAAK,iBAAL,CAAuB,MAAvB,EAA+B,UAA/B,EAA2C,UAA3C,CAAnB;AACA,SAAK,oBAAL,GAA4B,UAA5B,CANiD,CAQjD;;AACA,QAAI,KAAK,oBAAT,EAA+B;AAC7B,UAAM,kBAAkB,GAAG,KAAK,oBAAL,CAA0B,aAA1B,EAA3B;AACA,UAAM,cAAc,GAAG,KAAK,oBAAL,CAA0B,SAA1B,EAAvB;;AACA,UAAI,UAAU,KAAK,kBAAf,IAAqC,CAAC,oBAAO,MAAP,EAAe,cAAf,CAA1C,EAA0E;AACxE,aAAK,oBAAL,GAA4B,IAA5B;AACD;AACF;;AAED,QAAI,CAAC,KAAK,oBAAN,IAA8B,KAAK,WAAL,OAAuB,KAAK,iBAA9D,EAAiF;AAC/E,WAAK,eAAL;AACD;;AAED,IAAA,UAAU,CAAC,SAAX,CAAqB,aAArB,CAAmC,EAAnC,EAAuC,EAAvC;;AAEA,QAAI,UAAU,CAAC,OAAf,EAAwB;AACtB,MAAA,qBAAqB,CAAC,KAAK,OAAL,CAAa,IAAb,CAAkB,IAAlB,CAAD,CAArB;AACD;;AAED,WAAO,KAAK,oBAAZ;AACD,GA5BD;AA8BA;;;;;;AAIA,EAAA,YAAA,CAAA,SAAA,CAAA,eAAA,GAAA,YAAA;AACE,QAAM,UAAU,GAAG,KAAK,oBAAxB;AACA,QAAM,GAAG,GAAG,KAAK,OAAL,CAAa,MAAzB;AACA,QAAM,UAAU,GAAG,IAAI,KAAJ,CAAU,GAAV,CAAnB;;AACA,SAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,GAApB,EAAyB,EAAE,CAA3B,EAA8B;AAC5B,MAAA,UAAU,CAAC,UAAX,GAAwB,CAAxB;AACA,UAAM,SAAS,GAAG,YAAY,CAAC,KAAK,OAAL,CAAa,CAAb,CAAD,EAAkB,UAAlB,CAA9B;;AACA,UAAI,SAAJ,EAAe;AACb,QAAA,UAAU,CAAC,CAAD,CAAV,GAAgB,SAAhB;AACD,OAFD,MAEO;AACL;AACD;AACF;;AAED,QAAM,IAAI,GAAG,EAAb;AACA,SAAK,aAAL,CAAmB,IAAI,iBAAJ,CAAsB,eAAe,CAAC,gBAAtC,EAAwD,UAAxD,EAAoE,IAApE,CAAnB;AACA,SAAK,OAAL,CAAa,OAAb,CAAqB,UAArB,EAAiC,IAAjC,EAAuC,KAAK,iBAAL,CAAuB,IAAvB,CAA4B,IAA5B,EAAkC,UAAlC,CAAvC;AACD,GAjBD;AAmBA;;;;;;;;;;AAQA,EAAA,YAAA,CAAA,SAAA,CAAA,iBAAA,GAAA,UAAkB,UAAlB,EAA8B,GAA9B,EAAmC,MAAnC,EAA2C,IAA3C,EAA+C;AAC7C,QAAI,GAAG,IAAI,CAAC,MAAZ,EAAoB;AAClB;AACD,KAH4C,CAK7C;;;AACA,QAAM,MAAM,GAAG,UAAU,CAAC,MAA1B;AACA,QAAM,UAAU,GAAG,UAAU,CAAC,SAAX,CAAqB,UAAxC;;AACA,QAAI,UAAU,KAAK,KAAK,oBAAL,CAA0B,SAA1B,CAAoC,UAAnD,IACA,CAAC,oBAAO,MAAP,EAAe,KAAK,oBAAL,CAA0B,MAAzC,CADL,EACuD;AACrD;AACD;;AAED,QAAI,OAAJ;;AACA,QAAI,KAAK,oBAAT,EAA+B;AAC7B,MAAA,OAAO,GAAG,KAAK,oBAAL,CAA0B,QAA1B,GAAqC,UAArC,CAAgD,IAAhD,CAAV;AACD,KAFD,MAEO;AACL,UAAM,KAAK,GAAG,IAAI,CAAC,KAAL,CAAW,sBAAS,MAAT,IAAmB,UAA9B,CAAd;AACA,UAAM,MAAM,GAAG,IAAI,CAAC,KAAL,CAAW,uBAAU,MAAV,IAAoB,UAA/B,CAAf;AACA,MAAA,OAAO,GAAG,gCAAsB,KAAtB,EAA6B,MAA7B,CAAV;AACA,WAAK,oBAAL,GAA4B,IAAI,oBAAJ,CAAgB,MAAhB,EAAwB,UAAxB,EAAoC,CAApC,EAAuC,OAAO,CAAC,MAA/C,CAA5B;AACD;;AACD,IAAA,OAAO,CAAC,YAAR,CAAqB,MAArB,EAA6B,CAA7B,EAAgC,CAAhC;AAEA,SAAK,OAAL;AACA,SAAK,iBAAL,GAAyB,KAAK,WAAL,EAAzB;AAEA,SAAK,aAAL,CAAmB,IAAI,iBAAJ,CAAsB,eAAe,CAAC,eAAtC,EAAuD,UAAvD,EAAmE,IAAnE,CAAnB;AACD,GA5BD;AA8BA;;;;;AAGA,EAAA,YAAA,CAAA,SAAA,CAAA,gBAAA,GAAA,YAAA;AACE,WAAO,IAAP,CADF,CACe;AACd,GAFD;;AAGF,SAAA,YAAA;AArRA,CAAA,CAA2B,eAA3B,CAAA;AAwRA;;;;;;;AAKA,IAAI,aAAa,GAAG,IAApB;AAGA;;;;;;;AAMA,SAAS,YAAT,CAAsB,KAAtB,EAA6B,UAA7B,EAAuC;AACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAN,EAAjB;;AACA,MAAI,CAAC,QAAL,EAAe;AACb,UAAM,IAAI,KAAJ,CAAU,6BAA6B,KAAvC,CAAN;AACD;;AAED,MAAI,CAAC,QAAQ,CAAC,YAAT,CAAsB,UAAtB,CAAL,EAAwC;AACtC,WAAO,IAAP;AACD;;AACD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAX,CAAgB,CAAhB,CAAd;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAX,CAAgB,CAAhB,CAAf;AACA,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAT,CAAqB,UAArB,EAAiC,IAAjC,CAAlB;AACA,MAAI,OAAJ;;AACA,MAAI,SAAJ,EAAe;AACb,IAAA,OAAO,GAAG,SAAS,CAAC,iBAApB;AACD;;AACD,MAAI,EAAE,OAAO,YAAY,iBAArB,CAAJ,EAA6C;AAC3C,UAAM,IAAI,KAAJ,CAAU,mCAAmC,OAA7C,CAAN;AACD;;AACD,MAAI,OAAO,CAAC,KAAR,KAAkB,KAAlB,IAA2B,OAAO,CAAC,MAAR,KAAmB,MAAlD,EAA0D;AACxD,QAAM,OAAO,GAAG,OAAO,CAAC,UAAR,CAAmB,IAAnB,CAAhB;AACA,WAAO,OAAO,CAAC,YAAR,CAAqB,CAArB,EAAwB,CAAxB,EAA2B,KAA3B,EAAkC,MAAlC,CAAP;AACD;;AAED,MAAI,CAAC,aAAL,EAAoB;AAClB,IAAA,aAAa,GAAG,gCAAsB,KAAtB,EAA6B,MAA7B,CAAhB;AACD,GAFD,MAEO;AACL,QAAM,MAAM,GAAG,aAAa,CAAC,MAA7B;;AACA,QAAI,MAAM,CAAC,KAAP,KAAiB,KAAjB,IAA0B,MAAM,CAAC,MAAP,KAAkB,MAAhD,EAAwD;AACtD,MAAA,aAAa,GAAG,gCAAsB,KAAtB,EAA6B,MAA7B,CAAhB;AACD,KAFD,MAEO;AACL,MAAA,aAAa,CAAC,SAAd,CAAwB,CAAxB,EAA2B,CAA3B,EAA8B,KAA9B,EAAqC,MAArC;AACD;AACF;;AACD,EAAA,aAAa,CAAC,SAAd,CAAwB,OAAxB,EAAiC,CAAjC,EAAoC,CAApC,EAAuC,KAAvC,EAA8C,MAA9C;AACA,SAAO,aAAa,CAAC,YAAd,CAA2B,CAA3B,EAA8B,CAA9B,EAAiC,KAAjC,EAAwC,MAAxC,CAAP;AACD;AAGD;;;;;;;AAKA,SAAS,mBAAT,CAA6B,MAA7B,EAAmC;AACjC,SAAO,MAAM,CAAC,GAAP,CAAW,UAAS,KAAT,EAAc;AAC9B,WAAO,KAAK,CAAC,aAAN,EAAP;AACD,GAFM,CAAP;AAGD;AAGD;;;;;;;AAKA,SAAS,YAAT,CAAsB,OAAtB,EAA6B;AAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,MAApB;AACA,MAAM,MAAM,GAAG,IAAI,KAAJ,CAAU,GAAV,CAAf;;AACA,OAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,GAApB,EAAyB,EAAE,CAA3B,EAA8B;AAC5B,IAAA,MAAM,CAAC,CAAD,CAAN,GAAY,WAAW,CAAC,OAAO,CAAC,CAAD,CAAR,CAAvB;AACD;;AACD,SAAO,MAAP;AACD;AAGD;;;;;;;AAKA,SAAS,WAAT,CAAqB,aAArB,EAAkC;AAChC;AACA,MAAI,KAAJ;;AACA,MAAI,aAAa,YAAY,eAA7B,EAAqC;AACnC,QAAI,aAAa,YAAY,cAA7B,EAAyC;AACvC,MAAA,KAAK,GAAG,IAAI,aAAJ,CAAc;AAAC,QAAA,MAAM,EAAE;AAAT,OAAd,CAAR;AACD,KAFD,MAEO,IAAI,aAAa,YAAY,eAA7B,EAA0C;AAC/C,MAAA,KAAK,GAAG,IAAI,cAAJ,CAAe;AAAC,QAAA,MAAM,EAAE;AAAT,OAAf,CAAR;AACD;AACF,GAND,MAMO;AACL,IAAA,KAAK,GAAG,aAAR;AACD;;AACD,SAAO,KAAP;AACD;;eAGc;;;;;;;;;;ACpgBf;;AACA;;;;AALA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;;;;AAIA,IAAM,YAAY,GAAG,CACnB,mFACM,oFADN,GAEM,WAHa,EAInB,gBAJmB,CAArB;AAQA;;;;AAGA,IAAM,WAAW,GAAG;AAClB,aAAW;AACT,IAAA,SAAS,EAAE,KADF;AAET,IAAA,MAAM,EAAE;AAFC,GADO;AAKlB,wBAAsB;AACpB,IAAA,SAAS,EAAE,KADS;AAEpB,IAAA,MAAM,EAAE;AAFY,GALJ;AASlB,oBAAkB;AAChB,IAAA,SAAS,EAAE,KADK;AAEhB,IAAA,MAAM,EAAE;AAFQ,GATA;AAalB,mBAAiB;AACf,IAAA,SAAS,EAAE,KADI;AAEf,IAAA,MAAM,EAAE;AAFO,GAbC;AAiBlB,sBAAoB;AAClB,IAAA,SAAS,EAAE,KADO;AAElB,IAAA,MAAM,EAAE;AAFU,GAjBF;AAqBlB,WAAS;AACP,IAAA,SAAS,EAAE,KADJ;AAEP,IAAA,MAAM,EAAE;AAFD,GArBS;AAyBlB,kBAAgB;AACd,IAAA,SAAS,EAAE,KADG;AAEd,IAAA,MAAM,EAAE;AAFM,GAzBE;AA6BlB,kBAAgB;AACd,IAAA,SAAS,EAAE,KADG;AAEd,IAAA,MAAM,EAAE;AAFM,GA7BE;AAiClB,iBAAe;AACb,IAAA,SAAS,EAAE,KADE;AAEb,IAAA,MAAM,EAAE;AAFK,GAjCG;AAqClB,gBAAc;AACZ,IAAA,SAAS,EAAE,KADC;AAEZ,IAAA,MAAM,EAAE;AAFI,GArCI;AAyClB,gBAAc;AACZ,IAAA,SAAS,EAAE,KADC;AAEZ,IAAA,MAAM,EAAE;AAFI;AAzCI,CAApB;AAgDA;;;;AAGA,IAAM,cAAc,GAAG;AACrB,aAAW;AACT,IAAA,OAAO,EAAE,CADA;AAET,IAAA,OAAO,EAAE;AAFA,GADU;AAKrB,WAAS;AACP,IAAA,OAAO,EAAE,CADF;AAEP,IAAA,OAAO,EAAE;AAFF,GALY;AASrB,gBAAc;AACZ,IAAA,OAAO,EAAE,CADG;AAEZ,IAAA,OAAO,EAAE;AAFG;AATO,CAAvB;AAgBA;;;;;;;;;;;;;;;;;;;;;AAsBA;;;;;;AAKA,IAAA,MAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAAqB,EAAA,SAAA,CAAA,MAAA,EAAA,MAAA,CAAA;AACnB;;;;;AAGA,WAAA,MAAA,CAAY,OAAZ,EAAmB;AAAnB,QAAA,KAAA,GAAA,IAAA;;AACE,QAAM,CAAC,GAAG,OAAO,CAAC,KAAR,CAAc,OAAd,CAAsB,GAAtB,CAAV;AACA,QAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAN,GAAU,OAAO,CAAC,KAAlB,GAA0B,OAAO,CAAC,KAAR,CAAc,KAAd,CAAoB,CAApB,EAAuB,CAAvB,CAA3C;AACA,QAAM,cAAc,GAAG,cAAc,CAAC,QAAD,CAArC;AAEA,QAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,KAAT,CAA/B;AAEA,QAAM,GAAG,GAAG,OAAO,CAAC,GAAR,KAAgB,SAAhB,GAA4B,OAAO,CAAC,GAApC,GACV,iDAAiD,OAAO,CAAC,KAAzD,GACE,eADF,GACoB,WAAW,CAAC,SAFlC;AAIA,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM;AACJ,MAAA,YAAY,EAAE,YADV;AAEJ,MAAA,SAAS,EAAE,OAAO,CAAC,SAFf;AAGJ,MAAA,WAAW,EAAE,WAHT;AAIJ,MAAA,OAAO,EAAE,OAAO,CAAC,OAAR,IAAmB,SAAnB,GAA+B,OAAO,CAAC,OAAvC,GAAiD,cAAc,CAAC,OAJrE;AAKJ,MAAA,OAAO,EAAE,OAAO,CAAC,OAAR,IAAmB,SAAnB,GAA+B,OAAO,CAAC,OAAvC,GAAiD,cAAc,CAAC,OALrE;AAMJ,MAAA,MAAM,EAAE,WAAW,CAAC,MANhB;AAOJ,MAAA,0BAA0B,EAAE,OAAO,CAAC,0BAPhC;AAQJ,MAAA,gBAAgB,EAAE,OAAO,CAAC,gBARtB;AASJ,MAAA,UAAU,EAAE,OAAO,CAAC,UAThB;AAUJ,MAAA,GAAG,EAAE,GAVD;AAWJ,MAAA,KAAK,EAAE,OAAO,CAAC;AAXX,KAAN,KAYE,IAZF;;AAcD;;AAEH,SAAA,MAAA;AA/BA,CAAA,CAAqB,YAArB,CAAA;;eAiCe;;;;;;;;;;AClJf;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAVA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA;;;;;;;;;AASA,IAAA,cAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAA6B,EAAA,SAAA,CAAA,cAAA,EAAA,MAAA,CAAA;AAC3B;;;;;AAGA,WAAA,cAAA,CAAY,WAAZ,EAAuB;AAAvB,QAAA,KAAA,GAAA,IAAA;;AAEE,QAAM,OAAO,GAAG,WAAW,GAAG,WAAH,GAAiB,EAA5C;AAEA,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM;AACJ,MAAA,YAAY,EAAE,OAAO,CAAC,YADlB;AAEJ,MAAA,SAAS,EAAE,OAAO,CAAC,SAFf;AAGJ,MAAA,WAAW,EAAE,OAAO,CAAC,WAHjB;AAIJ,MAAA,UAAU,EAAE,OAAO,CAAC,UAJhB;AAKJ,MAAA,0BAA0B,EAAE,OAAO,CAAC,0BALhC;AAMJ,MAAA,QAAQ,EAAE,OAAO,CAAC,QANd;AAOJ,MAAA,gBAAgB,EAAE,OAAO,CAAC,gBAPtB;AAQJ,MAAA,eAAe,EAAE,eARb;AASJ,MAAA,GAAG,EAAE,OAAO,CAAC,GATT;AAUJ,MAAA,IAAI,EAAE,OAAO,CAAC,IAVV;AAWJ,MAAA,KAAK,EAAE,OAAO,CAAC,KAAR,KAAkB,SAAlB,GAA8B,OAAO,CAAC,KAAtC,GAA8C,IAXjD;AAYJ,MAAA,UAAU,EAAE,OAAO,CAAC;AAZhB,KAAN,KAaE,IAbF;AAeA;;;;;AAIA,IAAA,KAAI,CAAC,OAAL,GAAe,OAAO,CAAC,MAAR,IAAkB,EAAjC;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,MAAL,GAAc,OAAO,CAAC,KAAR,KAAkB,SAAlB,GAA8B,OAAO,CAAC,KAAtC,GAA8C,IAA5D;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,UAAL,GAAkB,0BAAlB;;AAEA,IAAA,KAAI,CAAC,MAAL,CAAY,KAAI,CAAC,gBAAL,EAAZ;;;AACD;AAED;;;;;;AAIA,EAAA,cAAA,CAAA,SAAA,CAAA,gBAAA,GAAA,YAAA;AACE,QAAI,CAAC,GAAG,CAAR;AACA,QAAM,GAAG,GAAG,EAAZ;;AACA,SAAK,IAAM,GAAX,IAAkB,KAAK,OAAvB,EAAgC;AAC9B,MAAA,GAAG,CAAC,CAAC,EAAF,CAAH,GAAW,GAAG,GAAG,GAAN,GAAY,KAAK,OAAL,CAAa,GAAb,CAAvB;AACD;;AACD,WAAO,GAAG,CAAC,IAAJ,CAAS,GAAT,CAAP;AACD,GAPD;AASA;;;;;;;;AAMA,EAAA,cAAA,CAAA,SAAA,CAAA,SAAA,GAAA,YAAA;AACE,WAAO,KAAK,OAAZ;AACD,GAFD;AAIA;;;;;;;;;;;;AAUA,EAAA,cAAA,CAAA,SAAA,CAAA,cAAA,GAAA,UAAe,SAAf,EAA0B,QAA1B,EAAoC,UAApC,EAAgD,UAAhD,EAA4D,UAA5D,EAAwE,MAAxE,EAA8E;AAE5E,QAAM,IAAI,GAAG,KAAK,IAAlB;;AACA,QAAI,CAAC,IAAL,EAAW;AACT,aAAO,SAAP;AACD,KAL2E,CAO5E;;;AACA,QAAM,IAAI,GAAG,UAAU,CAAC,OAAX,GAAqB,KAArB,CAA2B,GAA3B,EAAgC,GAAhC,EAAb;AAEA,IAAA,MAAM,CAAC,MAAD,CAAN,GAAiB,QAAQ,CAAC,CAAD,CAAR,GAAc,GAAd,GAAoB,QAAQ,CAAC,CAAD,CAA7C;AACA,IAAA,MAAM,CAAC,MAAD,CAAN,GAAiB,UAAU,CAAC,IAAX,CAAgB,GAAhB,CAAjB;AACA,IAAA,MAAM,CAAC,QAAD,CAAN,GAAmB,IAAnB;AACA,IAAA,MAAM,CAAC,SAAD,CAAN,GAAoB,IAApB;AACA,IAAA,MAAM,CAAC,KAAD,CAAN,GAAgB,IAAI,CAAC,KAAL,CACd,MAAM,CAAC,KAAD,CAAN,GAAgB,MAAM,CAAC,KAAD,CAAN,GAAgB,UAAhC,GAA6C,KAAK,UADpC,CAAhB;AAIA,QAAI,GAAJ;;AACA,QAAI,IAAI,CAAC,MAAL,IAAe,CAAnB,EAAsB;AACpB,MAAA,GAAG,GAAG,IAAI,CAAC,CAAD,CAAV;AACD,KAFD,MAEO;AACL,UAAM,KAAK,GAAG,kBAAO,qBAAc,SAAd,CAAP,EAAiC,IAAI,CAAC,MAAtC,CAAd;AACA,MAAA,GAAG,GAAG,IAAI,CAAC,KAAD,CAAV;AACD;;AAED,QAAM,WAAW,GAAG,GAAG,CACpB,OADiB,CACT,eADS,EACQ,kBADR,EAEjB,OAFiB,CAET,iBAFS,EAEU,yBAFV,CAApB;AAGA,WAAO,uBAAa,WAAb,EAA0B,MAA1B,CAAP;AACD,GA9BD;AAgCA;;;;;AAGA,EAAA,cAAA,CAAA,SAAA,CAAA,iBAAA,GAAA,UAAkB,UAAlB,EAA4B;AAC1B,WAAO,KAAK,MAAL;AAAc;AAAuB,IAAA,UAArC,GAAmD,CAA1D;AACD,GAFD;AAIA;;;;;;;AAKA,EAAA,cAAA,CAAA,SAAA,CAAA,YAAA,GAAA,UAAa,MAAb,EAAmB;AACjB,qBAAO,KAAK,OAAZ,EAAqB,MAArB;AACA,SAAK,MAAL,CAAY,KAAK,gBAAL,EAAZ;AACD,GAHD;;AAIF,SAAA,cAAA;AA7HA,CAAA,CAA6B,kBAA7B,CAAA;AA+HA;;;;;;;;;AAOA,SAAS,eAAT,CAAyB,SAAzB,EAAoC,UAApC,EAAgD,UAAhD,EAA0D;AAExD,MAAI,QAAQ,GAAG,KAAK,WAAL,EAAf;;AACA,MAAI,CAAC,QAAL,EAAe;AACb,IAAA,QAAQ,GAAG,KAAK,wBAAL,CAA8B,UAA9B,CAAX;AACD;;AAED,MAAI,QAAQ,CAAC,cAAT,GAA0B,MAA1B,IAAoC,SAAS,CAAC,CAAD,CAAjD,EAAsD;AACpD,WAAO,SAAP;AACD;;AAED,MAAI,UAAU,IAAI,CAAd,IAAmB,CAAC,KAAK,MAA7B,EAAqC;AACnC,IAAA,UAAU,GAAG,CAAb;AACD;;AAED,MAAM,UAAU,GAAG,QAAQ,CAAC,kBAAT,CACjB,SADiB,EACN,KAAK,UADC,CAAnB;AAEA,MAAI,QAAQ,GAAG,kBACb,QAAQ,CAAC,WAAT,CAAqB,SAAS,CAAC,CAAD,CAA9B,CADa,EACuB,KAAK,OAD5B,CAAf;;AAGA,MAAI,UAAU,IAAI,CAAlB,EAAqB;AACnB,IAAA,QAAQ,GAAG,iBAAU,QAAV,EAAoB,UAApB,EAAgC,KAAK,OAArC,CAAX;AACD,GAtBuD,CAwBxD;;;AACA,MAAM,UAAU,GAAG;AACjB,SAAK,OADY;AAEjB,cAAU,OAFO;AAGjB,mBAAe;AAHE,GAAnB;AAKA,mBAAO,UAAP,EAAmB,KAAK,OAAxB;AAEA,SAAO,KAAK,cAAL,CAAoB,SAApB,EAA+B,QAA/B,EAAyC,UAAzC,EACL,UADK,EACO,UADP,EACmB,UADnB,CAAP;AAED;;eAGc;;;;;;;;;;ACrOf;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AATA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,IAAA,WAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAA0B,EAAA,SAAA,CAAA,WAAA,EAAA,MAAA,CAAA;AACxB;;;;;;;AAKA,WAAA,WAAA,CAAY,SAAZ,EAAuB,QAAvB,EAAiC,IAAjC,EAAqC;AAArC,QAAA,KAAA,GAEE,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,SAAN,EAAiB,mBAAU,MAA3B,KAAkC,IAFpC;AAIE;;;;;;AAIA,IAAA,KAAI,CAAC,SAAL,GAAiB,QAAjB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,KAAL,GAAa,IAAb;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,OAAL,GAAe,IAAf;;AAED;AAED;;;;;;AAIA,EAAA,WAAA,CAAA,SAAA,CAAA,QAAA,GAAA,YAAA;AACE,QAAI,KAAK,OAAT,EAAkB;AAChB,aAAO,KAAK,OAAZ;AACD,KAFD,MAEO;AACL,UAAM,QAAQ,GAAG,KAAK,SAAtB;AACA,UAAM,OAAO,GAAG,gCAAsB,QAAQ,CAAC,CAAD,CAA9B,EAAmC,QAAQ,CAAC,CAAD,CAA3C,CAAhB;AAEA,MAAA,OAAO,CAAC,WAAR,GAAsB,MAAtB;AACA,MAAA,OAAO,CAAC,UAAR,CAAmB,GAAnB,EAAwB,GAAxB,EAA6B,QAAQ,CAAC,CAAD,CAAR,GAAc,GAA3C,EAAgD,QAAQ,CAAC,CAAD,CAAR,GAAc,GAA9D;AAEA,MAAA,OAAO,CAAC,SAAR,GAAoB,MAApB;AACA,MAAA,OAAO,CAAC,WAAR,GAAsB,OAAtB;AACA,MAAA,OAAO,CAAC,SAAR,GAAoB,QAApB;AACA,MAAA,OAAO,CAAC,YAAR,GAAuB,QAAvB;AACA,MAAA,OAAO,CAAC,IAAR,GAAe,iBAAf;AACA,MAAA,OAAO,CAAC,SAAR,GAAoB,CAApB;AACA,MAAA,OAAO,CAAC,UAAR,CAAmB,KAAK,KAAxB,EAA+B,QAAQ,CAAC,CAAD,CAAR,GAAc,CAA7C,EAAgD,QAAQ,CAAC,CAAD,CAAR,GAAc,CAA9D,EAAiE,QAAQ,CAAC,CAAD,CAAzE;AACA,MAAA,OAAO,CAAC,QAAR,CAAiB,KAAK,KAAtB,EAA6B,QAAQ,CAAC,CAAD,CAAR,GAAc,CAA3C,EAA8C,QAAQ,CAAC,CAAD,CAAR,GAAc,CAA5D,EAA+D,QAAQ,CAAC,CAAD,CAAvE;AAEA,WAAK,OAAL,GAAe,OAAO,CAAC,MAAvB;AACA,aAAO,OAAO,CAAC,MAAf;AACD;AACF,GAtBD;AAwBA;;;;;AAGA,EAAA,WAAA,CAAA,SAAA,CAAA,IAAA,GAAA,YAAA,CAAS,CAAT;;AACF,SAAA,WAAA;AA9DA,CAAA,CAA0B,aAA1B,CAAA;AAiEA;;;;;;;;;;;;AAaA;;;;;;;;;;;AASA,IAAA,SAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAAwB,EAAA,SAAA,CAAA,SAAA,EAAA,MAAA,CAAA;AACtB;;;;;AAGA,WAAA,SAAA,CAAY,WAAZ,EAAuB;AAAvB,QAAA,KAAA,GAAA,IAAA;AACE;;;;;AAGA,QAAM,OAAO,GAAG,WAAW,IAAI,EAA/B;AAEA,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM;AACJ,MAAA,MAAM,EAAE,KADJ;AAEJ,MAAA,UAAU,EAAE,OAAO,CAAC,UAFhB;AAGJ,MAAA,QAAQ,EAAE,OAAO,CAAC,QAHd;AAIJ,MAAA,KAAK,EAAE,OAAO,CAAC,KAAR,KAAkB,SAAlB,GAA8B,OAAO,CAAC,KAAtC,GAA8C,IAJjD;AAKJ,MAAA,UAAU,EAAE,OAAO,CAAC;AALhB,KAAN,KAME,IANF;;AAQD;AAED;;;;;AAGA,EAAA,SAAA,CAAA,SAAA,CAAA,OAAA,GAAA,UAAQ,CAAR,EAAW,CAAX,EAAc,CAAd,EAAe;AACb,QAAM,YAAY,GAAG,0BAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB;;AACA,QAAI,KAAK,SAAL,CAAe,WAAf,CAA2B,YAA3B,CAAJ,EAA8C;AAC5C;AAAO;AAA6B,aAAK,SAAL,CAAe,GAAf,CAAmB,YAAnB;AAApC;AACD,KAFD,MAEO;AACL,UAAM,QAAQ,GAAG,kBAAO,KAAK,QAAL,CAAc,WAAd,CAA0B,CAA1B,CAAP,CAAjB;AACA,UAAM,SAAS,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAlB;AACA,UAAM,aAAa,GAAG,KAAK,8BAAL,CAAoC,SAApC,CAAtB;AACA,UAAI,IAAI,GAAA,KAAA,CAAR;;AACA,UAAI,aAAJ,EAAmB;AACjB,QAAA,IAAI,GAAG,OAAO,aAAa,CAAC,CAAD,CAApB,GAA0B,KAA1B,GAAkC,aAAa,CAAC,CAAD,CAA/C,GAAqD,KAArD,GAA6D,aAAa,CAAC,CAAD,CAAjF;AACD,OAFD,MAEO;AACL,QAAA,IAAI,GAAG,MAAP;AACD;;AACD,UAAM,IAAI,GAAG,IAAI,WAAJ,CAAgB,SAAhB,EAA2B,QAA3B,EAAqC,IAArC,CAAb;AACA,WAAK,SAAL,CAAe,GAAf,CAAmB,YAAnB,EAAiC,IAAjC;AACA,aAAO,IAAP;AACD;AACF,GAlBD;;AAmBF,SAAA,SAAA;AA1CA,CAAA,CAAwB,YAAxB,CAAA;;eA6Ce;;;;;;;;;;ACtIf;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAjBA;;;AAGA;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;;;AAeA;;;;;;;;;;;;;;;;;AAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA;;;;;AAKA,IAAA,QAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAAuB,EAAA,SAAA,CAAA,QAAA,EAAA,MAAA,CAAA;AACrB;;;;;AAGA,WAAA,QAAA,CAAY,OAAZ,EAAmB;AAAnB,QAAA,KAAA,GACE,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM;AACJ,MAAA,YAAY,EAAE,OAAO,CAAC,YADlB;AAEJ,MAAA,SAAS,EAAE,OAAO,CAAC,SAFf;AAGJ,MAAA,WAAW,EAAE,OAAO,CAAC,WAHjB;AAIJ,MAAA,UAAU,EAAE,eAAc,WAAd,CAJR;AAKJ,MAAA,0BAA0B,EAAE,OAAO,CAAC,0BALhC;AAMJ,MAAA,KAAK,EAAE,eAAY,OANf;AAOJ,MAAA,gBAAgB,EAAE,OAAO,CAAC,gBAPtB;AAQJ,MAAA,KAAK,EAAE,OAAO,CAAC,KAAR,KAAkB,SAAlB,GAA8B,OAAO,CAAC,KAAtC,GAA8C,IARjD;AASJ,MAAA,UAAU,EAAE,OAAO,CAAC;AAThB,KAAN,KAUE,IAXJ;AAaE;;;;;;AAIA,IAAA,KAAI,CAAC,SAAL,GAAiB,IAAjB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,SAAL,GAAiB,OAAO,CAAC,QAAzB;;AAGA,QAAI,OAAO,CAAC,GAAZ,EAAiB;AACf,UAAI,OAAO,CAAC,KAAZ,EAAmB;AACjB,wBAAa,OAAO,CAAC,GAArB,EAA0B,KAAI,CAAC,sBAAL,CAA4B,IAA5B,CAAiC,KAAjC,CAA1B,EACE,KAAI,CAAC,mBAAL,CAAyB,IAAzB,CAA8B,KAA9B,CADF;AAED,OAHD,MAGO;AACL,YAAM,MAAM,GAAG,IAAI,cAAJ,EAAf;AACA,QAAA,MAAM,CAAC,gBAAP,CAAwB,MAAxB,EAAgC,KAAI,CAAC,UAAL,CAAgB,IAAhB,CAAqB,KAArB,CAAhC;AACA,QAAA,MAAM,CAAC,gBAAP,CAAwB,OAAxB,EAAiC,KAAI,CAAC,WAAL,CAAiB,IAAjB,CAAsB,KAAtB,CAAjC;AACA,QAAA,MAAM,CAAC,IAAP,CAAY,KAAZ,EAAmB,OAAO,CAAC,GAA3B;AACA,QAAA,MAAM,CAAC,IAAP;AACD;AACF,KAXD,MAWO,IAAI,OAAO,CAAC,QAAZ,EAAsB;AAC3B,MAAA,KAAI,CAAC,sBAAL,CAA4B,OAAO,CAAC,QAApC;AACD,KAFM,MAEA;AACL,2BAAO,KAAP,EAAc,EAAd,EADK,CACc;AACpB;;;AAEF;AAED;;;;;;AAIA,EAAA,QAAA,CAAA,SAAA,CAAA,UAAA,GAAA,UAAW,KAAX,EAAgB;AACd,QAAM,MAAM;AAAG;AAA+B,IAAA,KAAK,CAAC,MAApD,CADc,CAEd;;AACA,QAAI,CAAC,MAAM,CAAC,MAAR,IAAkB,MAAM,CAAC,MAAP,IAAiB,GAAjB,IAAwB,MAAM,CAAC,MAAP,GAAgB,GAA9D,EAAmE;AACjE,UAAI,QAAQ,GAAA,KAAA,CAAZ;;AACA,UAAI;AACF,QAAA,QAAQ;AAAG;AAAwB,QAAA,IAAI,CAAC,KAAL,CAAW,MAAM,CAAC,YAAlB,CAAnC;AACD,OAFD,CAEE,OAAO,GAAP,EAAY;AACZ,aAAK,mBAAL;AACA;AACD;;AACD,WAAK,sBAAL,CAA4B,QAA5B;AACD,KATD,MASO;AACL,WAAK,mBAAL;AACD;AACF,GAfD;AAiBA;;;;;;AAIA,EAAA,QAAA,CAAA,SAAA,CAAA,WAAA,GAAA,UAAY,KAAZ,EAAiB;AACf,SAAK,mBAAL;AACD,GAFD;AAIA;;;;;;AAIA,EAAA,QAAA,CAAA,SAAA,CAAA,WAAA,GAAA,YAAA;AACE,WAAO,KAAK,SAAZ;AACD,GAFD;AAIA;;;;;;AAIA,EAAA,QAAA,CAAA,SAAA,CAAA,sBAAA,GAAA,UAAuB,QAAvB,EAA+B;AAE7B,QAAM,kBAAkB,GAAG,eAAc,WAAd,CAA3B;AAEA,QAAM,gBAAgB,GAAG,KAAK,aAAL,EAAzB;AACA,QAAI,MAAJ;;AACA,QAAI,QAAQ,CAAC,QAAD,CAAR,KAAuB,SAA3B,EAAsC;AACpC,UAAM,SAAS,GAAG,uCAChB,kBADgB,EACI,gBADJ,CAAlB;AAEA,MAAA,MAAM,GAAG,4BAAe,QAAQ,CAAC,QAAD,CAAvB,EAAmC,SAAnC,CAAT;AACD;;AAED,QAAM,OAAO,GAAG,QAAQ,CAAC,SAAD,CAAR,IAAuB,CAAvC;AACA,QAAM,OAAO,GAAG,QAAQ,CAAC,SAAD,CAAR,IAAuB,EAAvC;AACA,QAAM,QAAQ,GAAG,yBAAU;AACzB,MAAA,MAAM,EAAE,oCAAqB,gBAArB,CADiB;AAEzB,MAAA,OAAO,EAAE,OAFgB;AAGzB,MAAA,OAAO,EAAE,OAHgB;AAIzB,MAAA,QAAQ,EAAE,KAAK;AAJU,KAAV,CAAjB;AAMA,SAAK,QAAL,GAAgB,QAAhB;AAEA,SAAK,eAAL,GAAuB,0CAAoB,QAAQ,CAAC,OAAD,CAA5B,EAAuC,QAAvC,CAAvB;;AAEA,QAAI,QAAQ,CAAC,aAAD,CAAR,KAA4B,SAA5B,IAAyC,CAAC,KAAK,eAAL,EAA9C,EAAsE;AACpE,UAAM,mBAAiB,GAAG,MAAM,KAAK,SAAX,GACxB,MADwB,GACf,kBAAkB,CAAC,SAAnB,EADX;AAGA,WAAK,eAAL,CAAqB,UAAS,UAAT,EAAmB;AACtC,YAAI,wBAAW,mBAAX,EAA8B,UAAU,CAAC,MAAzC,CAAJ,EAAsD;AACpD,iBAAO,CAAC,QAAQ,CAAC,aAAD,CAAT,CAAP;AACD;;AACD,eAAO,IAAP;AACD,OALD;AAOD;;AACD,SAAK,SAAL,GAAiB,QAAjB;AACA,SAAK,QAAL,CAAc,eAAY,KAA1B;AAED,GAvCD;AAyCA;;;;;AAGA,EAAA,QAAA,CAAA,SAAA,CAAA,mBAAA,GAAA,YAAA;AACE,SAAK,QAAL,CAAc,eAAY,KAA1B;AACD,GAFD;;AAGF,SAAA,QAAA;AAzIA,CAAA,CAAuB,kBAAvB,CAAA;;eA4Ie;;;;;;;;;;AC/Mf;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAjBA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA;;;;;AAKA,IAAA,OAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAAsB,EAAA,SAAA,CAAA,OAAA,EAAA,MAAA,CAAA;AACpB;;;;;AAGA,WAAA,OAAA,CAAY,WAAZ,EAAuB;AAAvB,QAAA,KAAA,GAAA,IAAA;;AAEE,QAAM,OAAO,GAAG,WAAW,GAAG,WAAH;AAAiB;AAAwB,MAApE;AAEA,QAAM,MAAM,GAAG,OAAO,CAAC,MAAR,IAAkB,EAAjC;AAEA,QAAM,WAAW,GAAG,iBAAiB,MAAjB,GAA0B,MAAM,CAAC,aAAD,CAAhC,GAAkD,IAAtE;AAEA,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM;AACJ,MAAA,YAAY,EAAE,OAAO,CAAC,YADlB;AAEJ,MAAA,SAAS,EAAE,OAAO,CAAC,SAFf;AAGJ,MAAA,WAAW,EAAE,OAAO,CAAC,WAHjB;AAIJ,MAAA,MAAM,EAAE,CAAC,WAJL;AAKJ,MAAA,UAAU,EAAE,OAAO,CAAC,UALhB;AAMJ,MAAA,0BAA0B,EAAE,OAAO,CAAC,0BANhC;AAOJ,MAAA,SAAS,EAAE,OAAO,CAAC,SAPf;AAQJ,MAAA,QAAQ,EAAE,OAAO,CAAC,QARd;AASJ,MAAA,gBAAgB,EAAE,OAAO,CAAC,gBATtB;AAUJ,MAAA,eAAe,EAAE,eAVb;AAWJ,MAAA,GAAG,EAAE,OAAO,CAAC,GAXT;AAYJ,MAAA,IAAI,EAAE,OAAO,CAAC,IAZV;AAaJ,MAAA,KAAK,EAAE,OAAO,CAAC,KAAR,KAAkB,SAAlB,GAA8B,OAAO,CAAC,KAAtC,GAA8C,IAbjD;AAcJ,MAAA,UAAU,EAAE,OAAO,CAAC;AAdhB,KAAN,KAeE,IAfF;AAiBA;;;;;AAIA,IAAA,KAAI,CAAC,OAAL,GAAe,OAAO,CAAC,MAAR,KAAmB,SAAnB,GAA+B,OAAO,CAAC,MAAvC,GAAgD,CAA/D;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,OAAL,GAAe,MAAf;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,IAAL,GAAY,IAAZ;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,WAAL;AAAmB;AAA+D,IAAA,OAAO,CAAC,UAA1F;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,MAAL,GAAc,OAAO,CAAC,KAAR,KAAkB,SAAlB,GAA8B,OAAO,CAAC,KAAtC,GAA8C,IAA5D;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,UAAL,GAAkB,0BAAlB;;AAEA,IAAA,KAAI,CAAC,UAAL;;AACA,IAAA,KAAI,CAAC,MAAL,CAAY,KAAI,CAAC,gBAAL,EAAZ;;;AAED;AAED;;;;;;;;;;;;;;;;AAcA,EAAA,OAAA,CAAA,SAAA,CAAA,iBAAA,GAAA,UAAkB,UAAlB,EAA8B,UAA9B,EAA0C,UAA1C,EAAsD,MAAtD,EAA4D;AAC1D,QAAM,aAAa,GAAG,eAAc,UAAd,CAAtB;AACA,QAAM,mBAAmB,GAAG,KAAK,aAAL,EAA5B;AAEA,QAAI,QAAQ,GAAG,KAAK,WAAL,EAAf;;AACA,QAAI,CAAC,QAAL,EAAe;AACb,MAAA,QAAQ,GAAG,KAAK,wBAAL,CAA8B,aAA9B,CAAX;AACD;;AAED,QAAM,CAAC,GAAG,QAAQ,CAAC,iBAAT,CAA2B,UAA3B,EAAuC,KAAK,UAA5C,CAAV;AACA,QAAM,SAAS,GAAG,QAAQ,CAAC,wBAAT,CAAkC,UAAlC,EAA8C,CAA9C,CAAlB;;AAEA,QAAI,QAAQ,CAAC,cAAT,GAA0B,MAA1B,IAAoC,SAAS,CAAC,CAAD,CAAjD,EAAsD;AACpD,aAAO,SAAP;AACD;;AAED,QAAI,cAAc,GAAG,QAAQ,CAAC,aAAT,CAAuB,SAAS,CAAC,CAAD,CAAhC,CAArB;AACA,QAAI,UAAU,GAAG,QAAQ,CAAC,kBAAT,CAA4B,SAA5B,EAAuC,KAAK,UAA5C,CAAjB;AACA,QAAI,QAAQ,GAAG,kBAAO,QAAQ,CAAC,WAAT,CAAqB,SAAS,CAAC,CAAD,CAA9B,CAAP,EAA2C,KAAK,OAAhD,CAAf;AAGA,QAAM,MAAM,GAAG,KAAK,OAApB;;AACA,QAAI,MAAM,KAAK,CAAf,EAAkB;AAChB,MAAA,QAAQ,GAAG,kBAAW,QAAX,EAAqB,MAArB,EAA6B,KAAK,OAAlC,CAAX;AACA,MAAA,UAAU,GAAG,oBAAO,UAAP,EAAmB,cAAc,GAAG,MAApC,EAA4C,UAA5C,CAAb;AACD;;AAED,QAAI,mBAAmB,IAAI,mBAAmB,KAAK,aAAnD,EAAkE;AAChE,MAAA,cAAc,GAAG,uCAA0B,mBAA1B,EAA+C,aAA/C,EAA8D,UAA9D,EAA0E,cAA1E,CAAjB;AACA,MAAA,UAAU,GAAG,2BAAgB,UAAhB,EAA4B,aAA5B,EAA2C,mBAA3C,CAAb;AACA,MAAA,UAAU,GAAG,qBAAU,UAAV,EAAsB,aAAtB,EAAqC,mBAArC,CAAb;AACD;;AAED,QAAM,UAAU,GAAG;AACjB,iBAAW,KADM;AAEjB,iBAAW,2BAFM;AAGjB,iBAAW,gBAHM;AAIjB,gBAAU,WAJO;AAKjB,qBAAe,IALE;AAMjB,sBAAgB,KAAK,OAAL,CAAa,QAAb;AANC,KAAnB;AAQA,qBAAO,UAAP,EAAmB,KAAK,OAAxB,EAAiC,MAAjC;AAEA,QAAM,CAAC,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,UAAU,CAAC,CAAD,CAAV,GAAgB,UAAU,CAAC,CAAD,CAA3B,IAAkC,cAA7C,CAAV;AACA,QAAM,CAAC,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,UAAU,CAAC,CAAD,CAAV,GAAgB,UAAU,CAAC,CAAD,CAA3B,IAAkC,cAA7C,CAAV;AAEA,IAAA,UAAU,CAAC,KAAK,IAAL,GAAY,GAAZ,GAAkB,GAAnB,CAAV,GAAoC,CAApC;AACA,IAAA,UAAU,CAAC,KAAK,IAAL,GAAY,GAAZ,GAAkB,GAAnB,CAAV,GAAoC,CAApC;AAEA,WAAO,KAAK,cAAL,CAAoB,SAApB,EAA+B,QAA/B,EAAyC,UAAzC,EACL,CADK,EACF,mBAAmB,IAAI,aADrB,EACoC,UADpC,CAAP;AAED,GAnDD;AAqDA;;;;;;;;;;;;;;;;AAcA,EAAA,OAAA,CAAA,SAAA,CAAA,YAAA,GAAA,UAAa,UAAb,EAAyB,MAAzB,EAA+B;AAC7B,QAAI,KAAK,IAAL,CAAU,CAAV,MAAiB,SAArB,EAAgC;AAC9B,aAAO,SAAP;AACD;;AAED,QAAM,UAAU,GAAG;AACjB,iBAAW,KADM;AAEjB,iBAAW,2BAFM;AAGjB,iBAAW,kBAHM;AAIjB,gBAAU;AAJO,KAAnB;;AAOA,QAAI,MAAM,KAAK,SAAX,IAAwB,MAAM,CAAC,OAAD,CAAN,KAAoB,SAAhD,EAA2D;AACzD,UAAM,MAAM,GAAG,KAAK,OAAL,CAAa,MAA5B;AACA,UAAM,aAAa,GAAG,CAAC,KAAK,CAAC,OAAN,CAAc,MAAd,CAAD,IAA0B,MAAM,CAAC,MAAP,KAAkB,CAAlE;;AACA,UAAI,CAAC,aAAL,EAAoB;AAClB,eAAO,SAAP;AACD;;AACD,MAAA,UAAU,CAAC,OAAD,CAAV,GAAsB,MAAtB;AACD;;AAED,QAAI,UAAU,KAAK,SAAnB,EAA8B;AAC5B,UAAM,GAAG,GAAG,KAAK,aAAL,KAAuB,KAAK,aAAL,GAAqB,gBAArB,EAAvB,GAAiE,CAA7E;AACA,UAAM,GAAG,GAAG,OAAO,IAAnB;AACA,UAAM,cAAc,GAAG,KAAvB;AACA,MAAA,UAAU,CAAC,OAAD,CAAV,GAAsB,UAAU,GAAG,GAAb,GAAmB,cAAnB,GAAoC,GAA1D;AACD;;AAED,qBAAO,UAAP,EAAmB,MAAnB;AAEA,WAAO;AAAa;AAAuB,SAAK,IAAL,CAAU,CAAV,CAApC,EAAmD,UAAnD,CAAP;AACD,GA/BD;AAiCA;;;;;AAGA,EAAA,OAAA,CAAA,SAAA,CAAA,SAAA,GAAA,YAAA;AACE,WAAO,KAAK,OAAZ;AACD,GAFD;AAIA;;;;;;;;AAMA,EAAA,OAAA,CAAA,SAAA,CAAA,SAAA,GAAA,YAAA;AACE,WAAO,KAAK,OAAZ;AACD,GAFD;AAIA;;;;;;;;;;;;AAUA,EAAA,OAAA,CAAA,SAAA,CAAA,cAAA,GAAA,UAAe,SAAf,EAA0B,QAA1B,EAAoC,UAApC,EAAgD,UAAhD,EAA4D,UAA5D,EAAwE,MAAxE,EAA8E;AAE5E,QAAM,IAAI,GAAG,KAAK,IAAlB;;AACA,QAAI,CAAC,IAAL,EAAW;AACT,aAAO,SAAP;AACD;;AAED,IAAA,MAAM,CAAC,OAAD,CAAN,GAAkB,QAAQ,CAAC,CAAD,CAA1B;AACA,IAAA,MAAM,CAAC,QAAD,CAAN,GAAmB,QAAQ,CAAC,CAAD,CAA3B;AAEA,IAAA,MAAM,CAAC,KAAK,IAAL,GAAY,KAAZ,GAAoB,KAArB,CAAN,GAAoC,UAAU,CAAC,OAAX,EAApC;;AAEA,QAAI,EAAE,YAAY,KAAK,OAAnB,CAAJ,EAAiC;AAC/B,MAAA,MAAM,CAAC,QAAD,CAAN,GAAmB,EAAnB;AACD;;AAED,QAAI,UAAU,IAAI,CAAlB,EAAqB;AACnB,cAAQ,KAAK,WAAb;AACE,aAAK,uBAAc,SAAnB;AACE,cAAM,GAAG,GAAI,KAAK,UAAL,GAAkB,GAAnB,GAA0B,CAAtC;;AACA,cAAI,oBAAoB,MAAxB,EAAgC;AAC9B,YAAA,MAAM,CAAC,gBAAD,CAAN,IAA4B,UAAU,GAAtC;AACD,WAFD,MAEO;AACL,YAAA,MAAM,CAAC,gBAAD,CAAN,GAA2B,SAAS,GAApC;AACD;;AACD;;AACF,aAAK,uBAAc,SAAnB;AACE,UAAA,MAAM,CAAC,gBAAD,CAAN,GAA2B,KAAK,UAAhC;AACA;;AACF,aAAK,uBAAc,eAAnB;AACA,aAAK,uBAAc,IAAnB;AACE,UAAA,MAAM,CAAC,KAAD,CAAN,GAAgB,KAAK,UAArB;AACA;;AACF;AACE,+BAAO,KAAP,EAAc,EAAd,EADF,CACqB;;AACnB;AAlBJ;AAoBD;;AAED,QAAM,eAAe,GAAG,UAAU,CAAC,kBAAX,EAAxB;AACA,QAAM,IAAI,GAAG,UAAb;;AACA,QAAI,KAAK,IAAL,IAAa,eAAe,CAAC,MAAhB,CAAuB,CAAvB,EAA0B,CAA1B,KAAgC,IAAjD,EAAuD;AACrD,UAAI,GAAG,GAAA,KAAA,CAAP;AACA,MAAA,GAAG,GAAG,UAAU,CAAC,CAAD,CAAhB;AACA,MAAA,IAAI,CAAC,CAAD,CAAJ,GAAU,UAAU,CAAC,CAAD,CAApB;AACA,MAAA,IAAI,CAAC,CAAD,CAAJ,GAAU,GAAV;AACA,MAAA,GAAG,GAAG,UAAU,CAAC,CAAD,CAAhB;AACA,MAAA,IAAI,CAAC,CAAD,CAAJ,GAAU,UAAU,CAAC,CAAD,CAApB;AACA,MAAA,IAAI,CAAC,CAAD,CAAJ,GAAU,GAAV;AACD;;AACD,IAAA,MAAM,CAAC,MAAD,CAAN,GAAiB,IAAI,CAAC,IAAL,CAAU,GAAV,CAAjB;AAEA,QAAI,GAAJ;;AACA,QAAI,IAAI,CAAC,MAAL,IAAe,CAAnB,EAAsB;AACpB,MAAA,GAAG,GAAG,IAAI,CAAC,CAAD,CAAV;AACD,KAFD,MAEO;AACL,UAAM,KAAK,GAAG,kBAAO,qBAAc,SAAd,CAAP,EAAiC,IAAI,CAAC,MAAtC,CAAd;AACA,MAAA,GAAG,GAAG,IAAI,CAAC,KAAD,CAAV;AACD;;AACD,WAAO,uBAAa,GAAb,EAAkB,MAAlB,CAAP;AACD,GA5DD;AA8DA;;;;;AAGA,EAAA,OAAA,CAAA,SAAA,CAAA,iBAAA,GAAA,UAAkB,UAAlB,EAA4B;AAC1B,WAAQ,CAAC,KAAK,MAAN,IAAgB,KAAK,WAAL,KAAqB,SAAtC,GAAmD,CAAnD;AACP;AAAuB,IAAA,UADvB;AAED,GAHD;AAKA;;;;;;AAIA,EAAA,OAAA,CAAA,SAAA,CAAA,gBAAA,GAAA,YAAA;AACE,QAAI,CAAC,GAAG,CAAR;AACA,QAAM,GAAG,GAAG,EAAZ;;AACA,SAAK,IAAM,GAAX,IAAkB,KAAK,OAAvB,EAAgC;AAC9B,MAAA,GAAG,CAAC,CAAC,EAAF,CAAH,GAAW,GAAG,GAAG,GAAN,GAAY,KAAK,OAAL,CAAa,GAAb,CAAvB;AACD;;AACD,WAAO,GAAG,CAAC,IAAJ,CAAS,GAAT,CAAP;AACD,GAPD;AASA;;;;;;;AAKA,EAAA,OAAA,CAAA,SAAA,CAAA,YAAA,GAAA,UAAa,MAAb,EAAmB;AACjB,qBAAO,KAAK,OAAZ,EAAqB,MAArB;AACA,SAAK,UAAL;AACA,SAAK,MAAL,CAAY,KAAK,gBAAL,EAAZ;AACD,GAJD;AAMA;;;;;AAGA,EAAA,OAAA,CAAA,SAAA,CAAA,UAAA,GAAA,YAAA;AACE,QAAM,OAAO,GAAG,KAAK,OAAL,CAAa,SAAb,KAA2B,2BAA3C;AACA,SAAK,IAAL,GAAY,6BAAgB,OAAhB,EAAyB,KAAzB,KAAmC,CAA/C;AACD,GAHD;;AAIF,SAAA,OAAA;AAxTA,CAAA,CAAsB,kBAAtB,CAAA;AA0TA;;;;;;;;;AAOA,SAAS,eAAT,CAAyB,SAAzB,EAAoC,UAApC,EAAgD,UAAhD,EAA0D;AAExD,MAAI,QAAQ,GAAG,KAAK,WAAL,EAAf;;AACA,MAAI,CAAC,QAAL,EAAe;AACb,IAAA,QAAQ,GAAG,KAAK,wBAAL,CAA8B,UAA9B,CAAX;AACD;;AAED,MAAI,QAAQ,CAAC,cAAT,GAA0B,MAA1B,IAAoC,SAAS,CAAC,CAAD,CAAjD,EAAsD;AACpD,WAAO,SAAP;AACD;;AAED,MAAI,UAAU,IAAI,CAAd,KAAoB,CAAC,KAAK,MAAN,IAAgB,KAAK,WAAL,KAAqB,SAAzD,CAAJ,EAAyE;AACvE,IAAA,UAAU,GAAG,CAAb;AACD;;AAED,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAT,CAAuB,SAAS,CAAC,CAAD,CAAhC,CAAvB;AACA,MAAI,UAAU,GAAG,QAAQ,CAAC,kBAAT,CAA4B,SAA5B,EAAuC,KAAK,UAA5C,CAAjB;AACA,MAAI,QAAQ,GAAG,kBACb,QAAQ,CAAC,WAAT,CAAqB,SAAS,CAAC,CAAD,CAA9B,CADa,EACuB,KAAK,OAD5B,CAAf;AAGA,MAAM,MAAM,GAAG,KAAK,OAApB;;AACA,MAAI,MAAM,KAAK,CAAf,EAAkB;AAChB,IAAA,QAAQ,GAAG,kBAAW,QAAX,EAAqB,MAArB,EAA6B,KAAK,OAAlC,CAAX;AACA,IAAA,UAAU,GAAG,oBAAO,UAAP,EAAmB,cAAc,GAAG,MAApC,EAA4C,UAA5C,CAAb;AACD;;AAED,MAAI,UAAU,IAAI,CAAlB,EAAqB;AACnB,IAAA,QAAQ,GAAG,iBAAU,QAAV,EAAoB,UAApB,EAAgC,KAAK,OAArC,CAAX;AACD;;AAED,MAAM,UAAU,GAAG;AACjB,eAAW,KADM;AAEjB,eAAW,2BAFM;AAGjB,eAAW,QAHM;AAIjB,cAAU,WAJO;AAKjB,mBAAe;AALE,GAAnB;AAOA,mBAAO,UAAP,EAAmB,KAAK,OAAxB;AAEA,SAAO,KAAK,cAAL,CAAoB,SAApB,EAA+B,QAA/B,EAAyC,UAAzC,EACL,UADK,EACO,UADP,EACmB,UADnB,CAAP;AAED;;eAGc;;;;;;;;;;ACtbf;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAhBA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA;;;;;;AAQA,IAAA,UAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAAgC,EAAA,SAAA,CAAA,UAAA,EAAA,MAAA,CAAA;AAE9B;;;;;;;;;;AAQA,WAAA,UAAA,CAAY,SAAZ,EAAuB,KAAvB,EAA8B,GAA9B,EAAmC,MAAnC,EAA2C,UAA3C,EAAuD,KAAvD,EAA4D;AAA5D,QAAA,KAAA,GAEE,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,SAAN,EAAiB,KAAjB,KAAuB,IAFzB;AAIE;;;;;;AAIA,IAAA,KAAI,CAAC,IAAL,GAAY,GAAZ;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,OAAL,GAAe,MAAf;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,WAAL,GAAmB,UAAnB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,KAAL,GAAa,IAAb;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,KAAL,GAAa,IAAb;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,KAAL,GAAa,IAAb;AAGA;;;;;AAIA,IAAA,KAAI,CAAC,MAAL,GAAc,KAAd;;AAED;AAED;;;;;;AAIA,EAAA,UAAA,CAAA,SAAA,CAAA,QAAA,GAAA,YAAA;AACE,WAAO,IAAP;AACD,GAFD;AAKA;;;;;;;AAKA,EAAA,UAAA,CAAA,SAAA,CAAA,OAAA,GAAA,UAAQ,UAAR,EAAkB;AAChB,QAAI,CAAC,KAAK,KAAN,IAAe,CAAC,KAAK,KAAzB,EAAgC;AAC9B,aAAO,IAAP;AACD;;AACD,QAAM,SAAS,GAAG,CAAC,UAAU,CAAC,CAAD,CAAV,GAAgB,KAAK,OAAL,CAAa,CAAb,CAAjB,KACb,KAAK,OAAL,CAAa,CAAb,IAAkB,KAAK,OAAL,CAAa,CAAb,CADL,CAAlB;AAEA,QAAM,SAAS,GAAG,CAAC,UAAU,CAAC,CAAD,CAAV,GAAgB,KAAK,OAAL,CAAa,CAAb,CAAjB,KACb,KAAK,OAAL,CAAa,CAAb,IAAkB,KAAK,OAAL,CAAa,CAAb,CADL,CAAlB;AAGA,QAAM,GAAG,GAAG,KAAK,KAAL,CAAW,IAAI,CAAC,KAAL,CAAW,CAAC,IAAI,SAAL,IAAkB,KAAK,KAAL,CAAW,MAAxC,CAAX,CAAZ;;AAEA,QAAI,OAAO,GAAP,KAAe,QAAnB,EAA6B;AAC3B,aAAO,IAAP;AACD;;AAED,QAAI,IAAI,GAAG,GAAG,CAAC,UAAJ,CAAe,IAAI,CAAC,KAAL,CAAW,SAAS,GAAG,GAAG,CAAC,MAA3B,CAAf,CAAX;;AACA,QAAI,IAAI,IAAI,EAAZ,EAAgB;AACd,MAAA,IAAI;AACL;;AACD,QAAI,IAAI,IAAI,EAAZ,EAAgB;AACd,MAAA,IAAI;AACL;;AACD,IAAA,IAAI,IAAI,EAAR;AAEA,QAAI,IAAI,GAAG,IAAX;;AACA,QAAI,IAAI,IAAI,KAAK,KAAjB,EAAwB;AACtB,UAAM,EAAE,GAAG,KAAK,KAAL,CAAW,IAAX,CAAX;;AACA,UAAI,KAAK,KAAL,IAAc,EAAE,IAAI,KAAK,KAA7B,EAAoC;AAClC,QAAA,IAAI,GAAG,KAAK,KAAL,CAAW,EAAX,CAAP;AACD,OAFD,MAEO;AACL,QAAA,IAAI,GAAG,EAAP;AACD;AACF;;AACD,WAAO,IAAP;AACD,GAlCD;AAqCA;;;;;;;;;;AAQA,EAAA,UAAA,CAAA,SAAA,CAAA,mBAAA,GAAA,UAAoB,UAApB,EAAgC,QAAhC,EAA0C,WAA1C,EAAqD;AACnD,QAAI,KAAK,KAAL,IAAc,mBAAU,IAAxB,IAAgC,WAAW,KAAK,IAApD,EAA0D;AACxD,8BAAW,IAAX,EAAiB,mBAAU,MAA3B,EAAmC,UAAS,CAAT,EAAU;AAC3C,QAAA,QAAQ,CAAC,KAAK,OAAL,CAAa,UAAb,CAAD,CAAR;AACD,OAFD,EAEG,IAFH;AAGA,WAAK,aAAL;AACD,KALD,MAKO;AACL,UAAI,WAAW,KAAK,IAApB,EAA0B;AACxB,QAAA,UAAU,CAAC,YAAA;AACT,UAAA,QAAQ,CAAC,KAAK,OAAL,CAAa,UAAb,CAAD,CAAR;AACD,SAFU,CAET,IAFS,CAEJ,IAFI,CAAD,EAEI,CAFJ,CAAV;AAGD,OAJD,MAIO;AACL,QAAA,QAAQ,CAAC,KAAK,OAAL,CAAa,UAAb,CAAD,CAAR;AACD;AACF;AACF,GAfD;AAkBA;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,MAAA,GAAA,YAAA;AACE,WAAO,KAAK,IAAZ;AACD,GAFD;AAKA;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,YAAA,GAAA,YAAA;AACE,SAAK,KAAL,GAAa,mBAAU,KAAvB;AACA,SAAK,OAAL;AACD,GAHD;AAMA;;;;;;AAIA,EAAA,UAAA,CAAA,SAAA,CAAA,WAAA,GAAA,UAAY,IAAZ,EAAgB;AACd,SAAK,KAAL,GAAa,IAAI,CAAC,MAAD,CAAjB;AACA,SAAK,KAAL,GAAa,IAAI,CAAC,MAAD,CAAjB;AACA,SAAK,KAAL,GAAa,IAAI,CAAC,MAAD,CAAjB;AAEA,SAAK,KAAL,GAAa,mBAAU,KAAvB;AACA,SAAK,OAAL;AACD,GAPD;AAUA;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,aAAA,GAAA,YAAA;AACE,QAAI,KAAK,KAAL,IAAc,mBAAU,IAA5B,EAAkC;AAChC,WAAK,KAAL,GAAa,mBAAU,OAAvB;;AACA,UAAI,KAAK,MAAT,EAAiB;AACf,wBAAa,KAAK,IAAlB,EAAwB,KAAK,WAAL,CAAiB,IAAjB,CAAsB,IAAtB,CAAxB,EACE,KAAK,YAAL,CAAkB,IAAlB,CAAuB,IAAvB,CADF;AAED,OAHD,MAGO;AACL,YAAM,MAAM,GAAG,IAAI,cAAJ,EAAf;AACA,QAAA,MAAM,CAAC,gBAAP,CAAwB,MAAxB,EAAgC,KAAK,UAAL,CAAgB,IAAhB,CAAqB,IAArB,CAAhC;AACA,QAAA,MAAM,CAAC,gBAAP,CAAwB,OAAxB,EAAiC,KAAK,WAAL,CAAiB,IAAjB,CAAsB,IAAtB,CAAjC;AACA,QAAA,MAAM,CAAC,IAAP,CAAY,KAAZ,EAAmB,KAAK,IAAxB;AACA,QAAA,MAAM,CAAC,IAAP;AACD;AACF;AACF,GAdD;AAiBA;;;;;;AAIA,EAAA,UAAA,CAAA,SAAA,CAAA,UAAA,GAAA,UAAW,KAAX,EAAgB;AACd,QAAM,MAAM;AAAG;AAA+B,IAAA,KAAK,CAAC,MAApD,CADc,CAEd;;AACA,QAAI,CAAC,MAAM,CAAC,MAAR,IAAkB,MAAM,CAAC,MAAP,IAAiB,GAAjB,IAAwB,MAAM,CAAC,MAAP,GAAgB,GAA9D,EAAmE;AACjE,UAAI,QAAQ,GAAA,KAAA,CAAZ;;AACA,UAAI;AACF,QAAA,QAAQ;AAAG;AAA4B,QAAA,IAAI,CAAC,KAAL,CAAW,MAAM,CAAC,YAAlB,CAAvC;AACD,OAFD,CAEE,OAAO,GAAP,EAAY;AACZ,aAAK,YAAL;AACA;AACD;;AACD,WAAK,WAAL,CAAiB,QAAjB;AACD,KATD,MASO;AACL,WAAK,YAAL;AACD;AACF,GAfD;AAkBA;;;;;;AAIA,EAAA,UAAA,CAAA,SAAA,CAAA,WAAA,GAAA,UAAY,KAAZ,EAAiB;AACf,SAAK,YAAL;AACD,GAFD;AAKA;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,IAAA,GAAA,YAAA;AACE,QAAI,KAAK,WAAT,EAAsB;AACpB,WAAK,aAAL;AACD;AACF,GAJD;;AAKF,SAAA,UAAA;AAlOA,CAAA,CAAgC,aAAhC,CAAA;;;;AAqOA;;;;;;;;;;;;;;;;AAiBA;;;;;AAKA,IAAA,OAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAAsB,EAAA,SAAA,CAAA,OAAA,EAAA,MAAA,CAAA;AACpB;;;;;AAGA,WAAA,OAAA,CAAY,OAAZ,EAAmB;AAAnB,QAAA,KAAA,GACE,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM;AACJ,MAAA,UAAU,EAAE,eAAc,WAAd,CADR;AAEJ,MAAA,KAAK,EAAE,eAAY;AAFf,KAAN,KAGE,IAJJ;AAME;;;;;;AAIA,IAAA,KAAI,CAAC,WAAL,GAAmB,OAAO,CAAC,UAAR,KAAuB,SAAvB,GACjB,OAAO,CAAC,UADS,GACI,IADvB;AAGA;;;;;AAIA,IAAA,KAAI,CAAC,gBAAL,GAAwB,oCAAxB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,SAAL,GAAiB,SAAjB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,MAAL,GAAc,OAAO,CAAC,KAAR,IAAiB,KAA/B;;AAEA,QAAI,OAAO,CAAC,GAAZ,EAAiB;AACf,UAAI,KAAI,CAAC,MAAT,EAAiB;AACf,wBAAa,OAAO,CAAC,GAArB,EAA0B,KAAI,CAAC,sBAAL,CAA4B,IAA5B,CAAiC,KAAjC,CAA1B,EACE,KAAI,CAAC,mBAAL,CAAyB,IAAzB,CAA8B,KAA9B,CADF;AAED,OAHD,MAGO;AACL,YAAM,MAAM,GAAG,IAAI,cAAJ,EAAf;AACA,QAAA,MAAM,CAAC,gBAAP,CAAwB,MAAxB,EAAgC,KAAI,CAAC,UAAL,CAAgB,IAAhB,CAAqB,KAArB,CAAhC;AACA,QAAA,MAAM,CAAC,gBAAP,CAAwB,OAAxB,EAAiC,KAAI,CAAC,WAAL,CAAiB,IAAjB,CAAsB,KAAtB,CAAjC;AACA,QAAA,MAAM,CAAC,IAAP,CAAY,KAAZ,EAAmB,OAAO,CAAC,GAA3B;AACA,QAAA,MAAM,CAAC,IAAP;AACD;AACF,KAXD,MAWO,IAAI,OAAO,CAAC,QAAZ,EAAsB;AAC3B,MAAA,KAAI,CAAC,sBAAL,CAA4B,OAAO,CAAC,QAApC;AACD,KAFM,MAEA;AACL,2BAAO,KAAP,EAAc,EAAd,EADK,CACc;AACpB;;;AAEF;AAGD;;;;;;AAIA,EAAA,OAAA,CAAA,SAAA,CAAA,UAAA,GAAA,UAAW,KAAX,EAAgB;AACd,QAAM,MAAM;AAAG;AAA+B,IAAA,KAAK,CAAC,MAApD,CADc,CAEd;;AACA,QAAI,CAAC,MAAM,CAAC,MAAR,IAAkB,MAAM,CAAC,MAAP,IAAiB,GAAjB,IAAwB,MAAM,CAAC,MAAP,GAAgB,GAA9D,EAAmE;AACjE,UAAI,QAAQ,GAAA,KAAA,CAAZ;;AACA,UAAI;AACF,QAAA,QAAQ;AAAG;AAA8C,QAAA,IAAI,CAAC,KAAL,CAAW,MAAM,CAAC,YAAlB,CAAzD;AACD,OAFD,CAEE,OAAO,GAAP,EAAY;AACZ,aAAK,mBAAL;AACA;AACD;;AACD,WAAK,sBAAL,CAA4B,QAA5B;AACD,KATD,MASO;AACL,WAAK,mBAAL;AACD;AACF,GAfD;AAkBA;;;;;;AAIA,EAAA,OAAA,CAAA,SAAA,CAAA,WAAA,GAAA,UAAY,KAAZ,EAAiB;AACf,SAAK,mBAAL;AACD,GAFD;AAKA;;;;;;;AAKA,EAAA,OAAA,CAAA,SAAA,CAAA,WAAA,GAAA,YAAA;AACE,WAAO,KAAK,SAAZ;AACD,GAFD;AAKA;;;;;;;;;;;;;AAWA,EAAA,OAAA,CAAA,SAAA,CAAA,gCAAA,GAAA,UACE,UADF,EACc,UADd,EAC0B,QAD1B,EACoC,WADpC,EAC+C;AAC7C,QAAI,KAAK,QAAT,EAAmB;AACjB,UAAM,CAAC,GAAG,KAAK,QAAL,CAAc,iBAAd,CAAgC,UAAhC,EAA4C,KAAK,UAAjD,CAAV;AACA,UAAM,SAAS,GAAG,KAAK,QAAL,CAAc,wBAAd,CAAuC,UAAvC,EAAmD,CAAnD,CAAlB;AACA,UAAM,IAAI;AAAG;AAA2B,WAAK,OAAL,CACtC,SAAS,CAAC,CAAD,CAD6B,EACxB,SAAS,CAAC,CAAD,CADe,EACV,SAAS,CAAC,CAAD,CADC,EACI,CADJ,EACO,KAAK,aAAL,EADP,CAAxC;AAEA,MAAA,IAAI,CAAC,mBAAL,CAAyB,UAAzB,EAAqC,QAArC,EAA+C,WAA/C;AACD,KAND,MAMO;AACL,UAAI,WAAW,KAAK,IAApB,EAA0B;AACxB,QAAA,UAAU,CAAC,YAAA;AACT,UAAA,QAAQ,CAAC,IAAD,CAAR;AACD,SAFS,EAEP,CAFO,CAAV;AAGD,OAJD,MAIO;AACL,QAAA,QAAQ,CAAC,IAAD,CAAR;AACD;AACF;AACF,GAjBD;AAoBA;;;;;AAGA,EAAA,OAAA,CAAA,SAAA,CAAA,mBAAA,GAAA,YAAA;AACE,SAAK,QAAL,CAAc,eAAY,KAA1B;AACD,GAFD;AAKA;;;;;;;AAKA,EAAA,OAAA,CAAA,SAAA,CAAA,sBAAA,GAAA,UAAuB,QAAvB,EAA+B;AAE7B,QAAM,kBAAkB,GAAG,eAAc,WAAd,CAA3B;AAEA,QAAM,gBAAgB,GAAG,KAAK,aAAL,EAAzB;AACA,QAAI,MAAJ;;AACA,QAAI,QAAQ,CAAC,QAAD,CAAR,KAAuB,SAA3B,EAAsC;AACpC,UAAM,SAAS,GAAG,uCAChB,kBADgB,EACI,gBADJ,CAAlB;AAEA,MAAA,MAAM,GAAG,4BAAe,QAAQ,CAAC,QAAD,CAAvB,EAAmC,SAAnC,CAAT;AACD;;AAED,QAAM,OAAO,GAAG,QAAQ,CAAC,SAAD,CAAR,IAAuB,CAAvC;AACA,QAAM,OAAO,GAAG,QAAQ,CAAC,SAAD,CAAR,IAAuB,EAAvC;AACA,QAAM,QAAQ,GAAG,yBAAU;AACzB,MAAA,MAAM,EAAE,oCAAqB,gBAArB,CADiB;AAEzB,MAAA,OAAO,EAAE,OAFgB;AAGzB,MAAA,OAAO,EAAE;AAHgB,KAAV,CAAjB;AAKA,SAAK,QAAL,GAAgB,QAAhB;AAEA,SAAK,SAAL,GAAiB,QAAQ,CAAC,UAAD,CAAzB;AAEA,QAAM,KAAK,GAAG,QAAQ,CAAC,OAAD,CAAtB;;AACA,QAAI,CAAC,KAAL,EAAY;AACV,WAAK,QAAL,CAAc,eAAY,KAA1B;AACA;AACD;;AAED,SAAK,gBAAL,GAAwB,0CAAoB,KAApB,EAA2B,QAA3B,CAAxB;;AAEA,QAAI,QAAQ,CAAC,aAAD,CAAR,KAA4B,SAAhC,EAA2C;AACzC,UAAM,mBAAiB,GAAG,MAAM,KAAK,SAAX,GACxB,MADwB,GACf,kBAAkB,CAAC,SAAnB,EADX;AAGA,WAAK,eAAL,CAAqB,UAAS,UAAT,EAAmB;AACtC,YAAI,wBAAW,mBAAX,EAA8B,UAAU,CAAC,MAAzC,CAAJ,EAAsD;AACpD,iBAAO,CAAC,QAAQ,CAAC,aAAD,CAAT,CAAP;AACD;;AACD,eAAO,IAAP;AACD,OALD;AAMD;;AAED,SAAK,QAAL,CAAc,eAAY,KAA1B;AAED,GA7CD;AAgDA;;;;;AAGA,EAAA,OAAA,CAAA,SAAA,CAAA,OAAA,GAAA,UAAQ,CAAR,EAAW,CAAX,EAAc,CAAd,EAAiB,UAAjB,EAA6B,UAA7B,EAAuC;AACrC,QAAM,YAAY,GAAG,0BAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB;;AACA,QAAI,KAAK,SAAL,CAAe,WAAf,CAA2B,YAA3B,CAAJ,EAA8C;AAC5C;AACE;AAA8C,aAAK,SAAL,CAAe,GAAf,CAAmB,YAAnB;AADhD;AAGD,KAJD,MAIO;AACL,UAAM,SAAS,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAlB;AACA,UAAM,YAAY,GACd,KAAK,8BAAL,CAAoC,SAApC,EAA+C,UAA/C,CADJ;AAEA,UAAM,OAAO,GAAG,KAAK,gBAAL,CAAsB,YAAtB,EAAoC,UAApC,EAAgD,UAAhD,CAAhB;AACA,UAAM,IAAI,GAAG,IAAI,UAAJ,CACX,SADW,EAEX,OAAO,KAAK,SAAZ,GAAwB,mBAAU,IAAlC,GAAyC,mBAAU,KAFxC,EAGX,OAAO,KAAK,SAAZ,GAAwB,OAAxB,GAAkC,EAHvB,EAIX,KAAK,QAAL,CAAc,kBAAd,CAAiC,SAAjC,CAJW,EAKX,KAAK,WALM,EAMX,KAAK,MANM,CAAb;AAOA,WAAK,SAAL,CAAe,GAAf,CAAmB,YAAnB,EAAiC,IAAjC;AACA,aAAO,IAAP;AACD;AACF,GArBD;AAwBA;;;;;AAGA,EAAA,OAAA,CAAA,SAAA,CAAA,OAAA,GAAA,UAAQ,CAAR,EAAW,CAAX,EAAc,CAAd,EAAe;AACb,QAAM,YAAY,GAAG,0BAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAArB;;AACA,QAAI,KAAK,SAAL,CAAe,WAAf,CAA2B,YAA3B,CAAJ,EAA8C;AAC5C,WAAK,SAAL,CAAe,GAAf,CAAmB,YAAnB;AACD;AACF,GALD;;AAMF,SAAA,OAAA;AAhOA,CAAA,CAAsB,cAAtB,CAAA;;eAmOe;;;;;;;;;;ACrff;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AANA;;;;;AASA;;;;;;;;;;;AAaA,IAAA,gBAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAA+B,EAAA,SAAA,CAAA,gBAAA,EAAA,MAAA,CAAA;AAE7B;;;;;;;;;;;;AAUA,WAAA,gBAAA,CAAY,SAAZ,EAAuB,KAAvB,EAA8B,YAA9B,EAA4C,cAA5C,EAA4D,cAA5D,EAA4E,iBAA5E,EAA6F;AAA7F,QAAA,KAAA,GAEE,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,SAAN,EAAiB,KAAjB,EAAwB;AAAC,MAAA,UAAU,EAAE;AAAb,KAAxB,KAAwC,IAF1C;AAIE;;;;;;AAIA,IAAA,KAAI,CAAC,QAAL,GAAgB,EAAhB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,cAAL,GAAsB,EAAtB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,kBAAL,GAA0B,CAA1B;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,mBAAL,GAA2B,EAA3B;AAEA;;;;AAGA,IAAA,KAAI,CAAC,qBAAL,GAA6B,IAA7B;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,YAAL,GAAoB,EAApB;AAEA;;;;AAGA,IAAA,KAAI,CAAC,gBAAL;AAEA;;;;AAGA,IAAA,KAAI,CAAC,cAAL,GAAsB,cAAc,CAAC,IAAf,CAAoB,KAApB,EAA0B,KAA1B,CAAtB;AAEA;;;;AAGA,IAAA,KAAI,CAAC,kBAAL,GAA0B,iBAA1B;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,eAAL,GAAuB,cAAvB;AAEA;;;;AAGA,IAAA,KAAI,CAAC,sBAAL,GAA8B,EAA9B;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,OAAL,GAAe,CAAC,CAAhB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,IAAL,GAAY,KAAZ;AAEA;;;;AAGA,IAAA,KAAI,CAAC,gBAAL,GAAwB,YAAxB;;AACD;AAED;;;;;AAGA,EAAA,gBAAA,CAAA,SAAA,CAAA,eAAA,GAAA,YAAA;AACE,SAAK,sBAAL,CAA4B,OAA5B,CAAoC,qBAApC;AACA,SAAK,sBAAL,CAA4B,MAA5B,GAAqC,CAArC;AACA,SAAK,kBAAL,CAAwB,IAAxB;;AACA,SAAK,IAAM,GAAX,IAAkB,KAAK,QAAvB,EAAiC;AAC/B,UAAM,MAAM,GAAG,KAAK,QAAL,CAAc,GAAd,EAAmB,MAAlC;AACA,MAAA,MAAM,CAAC,KAAP,GAAe,CAAf;AACA,MAAA,MAAM,CAAC,MAAP,GAAgB,CAAhB;AACD;;AACD,SAAK,IAAM,GAAX,IAAkB,KAAK,cAAvB,EAAuC;AACrC,UAAM,cAAc,GAAG,KAAK,cAAL,CAAoB,GAApB,CAAvB;;AACA,WAAK,IAAI,CAAC,GAAG,CAAR,EAAW,EAAE,GAAG,cAAc,CAAC,MAApC,EAA4C,CAAC,GAAG,EAAhD,EAAoD,EAAE,CAAtD,EAAyD;AACvD,QAAA,cAAc,CAAC,CAAD,CAAd,CAAkB,eAAlB;AACD;AACF;;AACD,IAAA,MAAA,CAAA,SAAA,CAAM,eAAN,CAAqB,IAArB,CAAqB,IAArB;AACD,GAhBD;AAkBA;;;;;;AAIA,EAAA,gBAAA,CAAA,SAAA,CAAA,UAAA,GAAA,UAAW,KAAX,EAAgB;AACd,QAAM,GAAG,GAAG,kBAAO,KAAP,CAAZ;;AACA,QAAI,EAAE,GAAG,IAAI,KAAK,QAAd,CAAJ,EAA6B;AAC3B,WAAK,QAAL,CAAc,GAAd,IAAqB,iCAArB;AACD;;AACD,WAAO,KAAK,QAAL,CAAc,GAAd,CAAP;AACD,GAND;AAQA;;;;;;AAIA,EAAA,gBAAA,CAAA,SAAA,CAAA,UAAA,GAAA,UAAW,KAAX,EAAgB;AACd,WAAO,kBAAO,KAAP,KAAiB,KAAK,QAA7B;AACD,GAFD;AAIA;;;;;;;AAKA,EAAA,gBAAA,CAAA,SAAA,CAAA,QAAA,GAAA,UAAS,KAAT,EAAc;AACZ,WAAO,KAAK,UAAL,CAAgB,KAAhB,IAAyB,KAAK,UAAL,CAAgB,KAAhB,EAAuB,MAAhD,GAAyD,IAAhE;AACD,GAFD;AAIA;;;;;;AAIA,EAAA,gBAAA,CAAA,SAAA,CAAA,cAAA,GAAA,UAAe,KAAf,EAAoB;AAClB,QAAM,GAAG,GAAG,kBAAO,KAAP,CAAZ;;AACA,QAAI,EAAE,GAAG,IAAI,KAAK,YAAd,CAAJ,EAAiC;AAC/B,WAAK,YAAL,CAAkB,GAAlB,IAAyB;AACvB,QAAA,KAAK,EAAE,KADgB;AAEvB,QAAA,mBAAmB,EAAE,IAFE;AAGvB,QAAA,kBAAkB,EAAE,GAHG;AAIvB,QAAA,gBAAgB,EAAE,CAAC,CAJI;AAKvB,QAAA,sBAAsB,EAAE,GALD;AAMvB,QAAA,oBAAoB,EAAE,CAAC,CANA;AAOvB,QAAA,SAAS,EAAE,CAAC,CAPW;AAQvB,QAAA,aAAa,EAAE,CAAC;AARO,OAAzB;AAUD;;AACD,WAAO,KAAK,YAAL,CAAkB,GAAlB,CAAP;AACD,GAfD;AAiBA;;;;;AAGA,EAAA,gBAAA,CAAA,SAAA,CAAA,IAAA,GAAA,YAAA;AACE,SAAK,cAAL;AACD,GAFD;;AAGF,SAAA,gBAAA;AA5KA,CAAA,CAA+B,aAA/B,CAAA;;eA+Ke;;;;;;;;;;AClMf;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAJA;;;;;AAMA,IAAA,UAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAAyB,EAAA,SAAA,CAAA,UAAA,EAAA,MAAA,CAAA;AAEvB;;;;;;;;;;AAQA,WAAA,UAAA,CAAY,SAAZ,EAAuB,KAAvB,EAA8B,GAA9B,EAAmC,MAAnC,EAA2C,gBAA3C,EAA6D,WAA7D,EAAwE;AAAxE,QAAA,KAAA,GAEE,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,SAAN,EAAiB,KAAjB,EAAwB,WAAxB,KAAoC,IAFtC;AAIE;;;;;AAGA,IAAA,KAAI,CAAC,SAAL,GAAiB,CAAjB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,MAAL,GAAc,IAAd;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,OAAL,GAAe,MAAf;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,SAAL,GAAiB,IAAjB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,OAAL;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,UAAL,GAAkB,IAAlB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,UAAL;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,iBAAL,GAAyB,gBAAzB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,IAAL,GAAY,GAAZ;;AAED;AAED;;;;;;;AAKA,EAAA,UAAA,CAAA,SAAA,CAAA,SAAA,GAAA,YAAA;AACE,WAAO,KAAK,OAAZ;AACD,GAFD;AAIA;;;;;;;AAKA,EAAA,UAAA,CAAA,SAAA,CAAA,WAAA,GAAA,YAAA;AACE,WAAO,KAAK,SAAZ;AACD,GAFD;AAIA;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,MAAA,GAAA,YAAA;AACE,WAAO,KAAK,IAAZ;AACD,GAFD;AAIA;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,IAAA,GAAA,YAAA;AACE,QAAI,KAAK,KAAL,IAAc,mBAAU,IAA5B,EAAkC;AAChC,WAAK,QAAL,CAAc,mBAAU,OAAxB;AACA,WAAK,iBAAL,CAAuB,IAAvB,EAA6B,KAAK,IAAlC;AACA,WAAK,OAAL,CAAa,KAAK,MAAlB,EAA0B,KAAK,UAA/B,EAA2C,KAAK,UAAhD;AACD;AACF,GAND;AAQA;;;;;;;AAKA,EAAA,UAAA,CAAA,SAAA,CAAA,MAAA,GAAA,UAAO,QAAP,EAAiB,cAAjB,EAA+B;AAC7B,SAAK,WAAL,CAAiB,QAAjB;AACD,GAFD;AAIA;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,OAAA,GAAA,YAAA;AACE,SAAK,QAAL,CAAc,mBAAU,KAAxB;AACD,GAFD;AAIA;;;;;;;;AAMA,EAAA,UAAA,CAAA,SAAA,CAAA,WAAA,GAAA,UAAY,QAAZ,EAAoB;AAClB,SAAK,SAAL,GAAiB,QAAjB;AACA,SAAK,QAAL,CAAc,mBAAU,MAAxB;AACD,GAHD;AAKA;;;;;;;AAKA,EAAA,UAAA,CAAA,SAAA,CAAA,SAAA,GAAA,UAAU,MAAV,EAAgB;AACd,SAAK,OAAL,GAAe,MAAf;AACD,GAFD;;AAGF,SAAA,UAAA;AA5IA,CAAA,CAAyB,aAAzB,CAAA;;eA8Ie;;;;;;;;;;;AChJf;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAfA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDA;;;;;;;;;;;;;AAaA,IAAA,UAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAAyB,EAAA,SAAA,CAAA,UAAA,EAAA,MAAA,CAAA;AACvB;;;;;AAGA,WAAA,UAAA,CAAY,OAAZ,EAAmB;AAAnB,QAAA,KAAA,GAAA,IAAA;;AACE,QAAM,UAAU,GAAG,OAAO,CAAC,UAAR,IAAsB,WAAzC;AAEA,QAAM,MAAM,GAAG,OAAO,CAAC,MAAR,IAAkB,oCAAqB,UAArB,CAAjC;AAEA,QAAM,QAAQ,GAAG,OAAO,CAAC,QAAR,IAAoB,yBAAU;AAC7C,MAAA,MAAM,EAAE,MADqC;AAE7C,MAAA,OAAO,EAAE,OAAO,CAAC,OAAR,KAAoB,SAApB,GAAgC,OAAO,CAAC,OAAxC,GAAkD,EAFd;AAG7C,MAAA,OAAO,EAAE,OAAO,CAAC,OAH4B;AAI7C,MAAA,QAAQ,EAAE,OAAO,CAAC,QAAR,IAAoB;AAJe,KAAV,CAArC;AAOA,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM;AACJ,MAAA,YAAY,EAAE,OAAO,CAAC,YADlB;AAEJ,MAAA,uBAAuB,EAAE,OAAO,CAAC,uBAF7B;AAGJ,MAAA,SAAS,EAAE,OAAO,CAAC,SAHf;AAIJ,MAAA,MAAM,EAAE,KAJJ;AAKJ,MAAA,UAAU,EAAE,UALR;AAMJ,MAAA,KAAK,EAAE,OAAO,CAAC,KANX;AAOJ,MAAA,QAAQ,EAAE,QAPN;AAQJ,MAAA,gBAAgB,EAAE,OAAO,CAAC,gBAAR,GAA2B,OAAO,CAAC,gBAAnC,GAAsD,mBARpE;AASJ,MAAA,eAAe,EAAE,OAAO,CAAC,eATrB;AAUJ,MAAA,GAAG,EAAE,OAAO,CAAC,GAVT;AAWJ,MAAA,IAAI,EAAE,OAAO,CAAC,IAXV;AAYJ,MAAA,KAAK,EAAE,OAAO,CAAC,KAAR,KAAkB,SAAlB,GAA8B,IAA9B,GAAqC,OAAO,CAAC,KAZhD;AAaJ,MAAA,UAAU,EAAE,OAAO,CAAC,UAbhB;AAcJ,MAAA,UAAU,EAAE,OAAO,CAAC,UAAR,KAAuB,SAAvB,GAAmC,CAAnC,GAAuC,OAAO,CAAC;AAdvD,KAAN,KAeE,IAfF;AAiBA;;;;;AAIA,IAAA,KAAI,CAAC,OAAL,GAAe,OAAO,CAAC,MAAR,GAAiB,OAAO,CAAC,MAAzB,GAAkC,IAAjD;AAEA;;;;AAGA,IAAA,KAAI,CAAC,aAAL,GAAqB,EAArB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,qBAAL,GAA6B,EAA7B;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,qBAAL,GAA6B,EAA7B;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,SAAL,GAAiB,OAAO,CAAC,QAAR,IAAoB,SAApB,GAAgC,IAAhC,GAAuC,OAAO,CAAC,QAAhE;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,SAAL,GAAiB,OAAO,CAAC,SAAR,GAAoB,OAAO,CAAC,SAA5B,GAAwC,mBAAzD;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,UAAL,GAAkB,EAAlB;;AAED;AAED;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,WAAA,GAAA,YAAA;AACE,WAAO,KAAK,SAAZ;AACD,GAFD;AAIA;;;;;;AAIA,EAAA,UAAA,CAAA,SAAA,CAAA,KAAA,GAAA,YAAA;AACE,SAAK,SAAL,CAAe,KAAf;AACA,SAAK,qBAAL,GAA6B,EAA7B;AACA,SAAK,qBAAL,GAA6B,EAA7B;AACD,GAJD;AAMA;;;;;;;;AAMA,EAAA,UAAA,CAAA,SAAA,CAAA,cAAA,GAAA,UAAe,UAAf,EAA2B,UAA3B,EAAuC,IAAvC,EAA2C;AACzC,QAAM,YAAY,GAAG,IAAI,CAAC,gBAA1B;AACA,QAAM,QAAQ,GAAG,KAAK,wBAAL,CAA8B,UAA9B,CAAjB;AACA,QAAM,MAAM,GAAG,QAAQ,CAAC,kBAAT,CAA4B,YAA5B,CAAf;AACA,QAAM,CAAC,GAAG,YAAY,CAAC,CAAD,CAAtB;AACA,QAAM,UAAU,GAAG,QAAQ,CAAC,aAAT,CAAuB,CAAvB,CAAnB,CALyC,CAMzC;;AACA,wBAAa,MAAb,EAAqB,CAAC,UAAtB,EAAkC,MAAlC;AACA,QAAM,cAAc,GAAG,KAAK,QAA5B;AACA,QAAM,YAAY,GAAG,cAAc,CAAC,SAAf,EAArB;;AACA,QAAI,YAAJ,EAAkB;AAChB,mCAAgB,MAAhB,EAAwB,YAAxB,EAAsC,MAAtC;AACD;;AACD,QAAM,OAAO,GAAG,cAAc,CAAC,iBAAf,CAAiC,UAAjC,EAA6C,CAA7C,CAAhB;AACA,QAAM,OAAO,GAAG,cAAc,CAAC,UAAf,EAAhB;AAEA,QAAM,mBAAmB,GAAG,KAAK,qBAAL,CAA2B,IAAI,CAAC,MAAL,EAA3B,CAA5B;AACA,QAAI,WAAJ,EAAiB,OAAjB,EAA0B,OAA1B;;AACA,QAAI,mBAAmB,IAAI,mBAAmB,CAAC,MAApB,GAA6B,CAApD,IAAyD,mBAAmB,CAAC,CAAD,CAAnB,CAAuB,SAAvB,CAAiC,CAAjC,MAAwC,OAArG,EAA8G;AAC5G,MAAA,WAAW,GAAG,mBAAd;AACA,MAAA,OAAO,GAAG,IAAV;AACA,MAAA,OAAO,GAAG,OAAV;AACD,KAJD,MAIO;AACL,MAAA,WAAW,GAAG,EAAd;AACA,MAAA,OAAO,GAAG,OAAO,GAAG,CAApB;;AACA,SAAG;AACD,UAAE,OAAF;AACA,QAAA,OAAO,GAAG,IAAV;AACA,QAAA,cAAc,CAAC,gBAAf,CAAgC,MAAhC,EAAwC,OAAxC,EAAiD,UAAS,eAAT,EAAwB;AACvE,cAAM,QAAQ,GAAG,uBAAO,eAAP,CAAjB;AACA,cAAI,UAAJ;;AACA,cAAI,QAAQ,IAAI,KAAK,qBAArB,EAA4C;AAC1C,YAAA,UAAU,GAAG,KAAK,qBAAL,CAA2B,QAA3B,CAAb;AACA,gBAAM,KAAK,GAAG,UAAU,CAAC,QAAX,EAAd;;AACA,gBAAI,KAAK,KAAK,mBAAU,MAApB,IAA8B,KAAK,KAAK,mBAAU,KAAlD,IAA2D,KAAK,KAAK,mBAAU,KAAnF,EAA0F;AACxF,cAAA,WAAW,CAAC,IAAZ,CAAiB,UAAjB;AACA;AACD;AACF,WAPD,MAOO,IAAI,OAAO,KAAK,OAAhB,EAAyB;AAC9B,gBAAM,OAAO,GAAG,KAAK,eAAL,CAAqB,eAArB,EAAsC,UAAtC,EAAkD,UAAlD,CAAhB;;AACA,gBAAI,OAAO,KAAK,SAAhB,EAA2B;AACzB,cAAA,UAAU,GAAG,IAAI,KAAK,SAAT,CAAmB,eAAnB,EAAoC,mBAAU,IAA9C,EAAoD,OAApD,EACX,KAAK,OADM,EACG,KAAK,gBADR,CAAb;AAEA,cAAA,UAAU,CAAC,MAAX,GAAoB,cAAc,CAAC,kBAAf,CAAkC,eAAlC,CAApB;AACA,cAAA,UAAU,CAAC,UAAX,GAAwB,UAAxB;AACA,cAAA,UAAU,CAAC,UAAX,GAAwB,cAAc,CAAC,aAAf,CAA6B,eAAe,CAAC,CAAD,CAA5C,CAAxB;AACA,mBAAK,qBAAL,CAA2B,QAA3B,IAAuC,UAAvC;AACA,cAAA,UAAU,CAAC,gBAAX,CAA4B,mBAAU,MAAtC,EAA8C,KAAK,gBAAL,CAAsB,IAAtB,CAA2B,IAA3B,CAA9C;AACA,cAAA,UAAU,CAAC,IAAX;AACD;AACF;;AACD,UAAA,OAAO,GAAG,KAAV;;AACA,cAAI,CAAC,UAAL,EAAiB;AACf;AACD;;AACD,cAAI,UAAU,CAAC,QAAX,OAA0B,mBAAU,KAApC,IAA6C,IAAI,CAAC,QAAL,OAAoB,mBAAU,IAA/E,EAAqF;AACnF,YAAA,IAAI,CAAC,kBAAL;AACA,gBAAM,KAAG,GAAG,oBAAO,UAAP,EAAmB,mBAAU,MAA7B,EAAqC,YAAA;AAC/C,kBAAM,KAAK,GAAG,UAAU,CAAC,QAAX,EAAd;AACA,kBAAM,aAAa,GAAG,UAAU,CAAC,MAAX,EAAtB;;AACA,kBAAI,KAAK,KAAK,mBAAU,MAApB,IAA8B,KAAK,KAAK,mBAAU,KAAtD,EAA6D;AAC3D,oBAAI,KAAK,KAAK,mBAAU,MAAxB,EAAgC;AAC9B,qCAAO,IAAI,CAAC,sBAAZ,EAAoC,KAApC;AACA,6CAAc,KAAd;AACA,kBAAA,IAAI,CAAC,kBAAL;AACA,yBAAO,IAAI,CAAC,mBAAL,CAAyB,aAAzB,CAAP;AACD,iBALD,MAKO,IAAI,KAAK,KAAK,mBAAU,KAAxB,EAA+B;AACpC,kBAAA,IAAI,CAAC,mBAAL,CAAyB,aAAzB,IAA0C,IAA1C;AACD;;AACD,oBAAM,cAAc,GAAG,MAAM,CAAC,IAAP,CAAY,IAAI,CAAC,mBAAjB,EAAsC,MAA7D;;AACA,oBAAI,IAAI,CAAC,kBAAL,GAA0B,cAA1B,KAA6C,CAAjD,EAAoD;AAClD,kBAAA,IAAI,CAAC,IAAL,GAAY,cAAc,KAAK,CAA/B;AACA,kBAAA,IAAI,CAAC,OAAL,GAAe,OAAf;AACA,kBAAA,IAAI,CAAC,QAAL,CAAc,mBAAU,MAAxB;AACD;AACF;AACF,aAnBW,CAAZ;AAoBA,YAAA,IAAI,CAAC,sBAAL,CAA4B,IAA5B,CAAiC,KAAjC;AACD;AACF,SAnDgD,CAmD/C,IAnD+C,CAmD1C,IAnD0C,CAAjD;;AAoDA,YAAI,CAAC,OAAL,EAAc;AACZ,UAAA,WAAW,CAAC,MAAZ,GAAqB,CAArB;AACD;AACF,OA1DD,QA0DS,CAAC,OAAD,IAAY,OAAO,GAAG,OA1D/B;AA2DD;;AAED,QAAI,IAAI,CAAC,QAAL,OAAoB,mBAAU,IAAlC,EAAwC;AACtC,MAAA,IAAI,CAAC,QAAL,CAAc,mBAAU,OAAxB;AACD;;AACD,QAAI,OAAJ,EAAa;AACX,MAAA,IAAI,CAAC,IAAL,GAAY,OAAO,KAAK,OAAxB;AACA,MAAA,IAAI,CAAC,OAAL,GAAe,OAAf;;AACA,UAAI,IAAI,CAAC,QAAL,KAAkB,mBAAU,MAAhC,EAAwC;AACtC,QAAA,IAAI,CAAC,QAAL,CAAc,mBAAU,MAAxB;AACD,OAFD,MAEO,IAAI,CAAC,mBAAD,IAAwB,CAAC,mBAAO,WAAP,EAAoB,mBAApB,CAA7B,EAAuE;AAC5E,aAAK,iBAAL,CAAuB,IAAvB;AACA,aAAK,cAAL,CAAoB,IAApB,EAA0B,WAA1B;AACD;AACF;;AACD,WAAO,WAAP;AACD,GApGD;AAsGA;;;;;;AAIA,EAAA,UAAA,CAAA,SAAA,CAAA,cAAA,GAAA,UAAe,IAAf,EAAqB,WAArB,EAAgC;AAC9B,SAAK,qBAAL,CAA2B,IAAI,CAAC,MAAL,EAA3B,IAA4C,WAA5C;;AACA,SAAK,IAAI,CAAC,GAAG,CAAR,EAAW,EAAE,GAAG,WAAW,CAAC,MAAjC,EAAyC,CAAC,GAAG,EAA7C,EAAiD,EAAE,CAAnD,EAAsD;AACpD,MAAA,WAAW,CAAC,CAAD,CAAX,CAAe,SAAf;AACD;AACF,GALD;AAOA;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,iBAAA,GAAA,UAAkB,IAAlB,EAAsB;AACpB,QAAM,OAAO,GAAG,IAAI,CAAC,MAAL,EAAhB;;AACA,QAAI,OAAO,IAAI,KAAK,qBAApB,EAA2C;AACzC,UAAM,WAAW,GAAG,KAAK,qBAAL,CAA2B,OAA3B,CAApB;;AACA,WAAK,IAAI,CAAC,GAAG,CAAR,EAAW,EAAE,GAAG,WAAW,CAAC,MAAjC,EAAyC,CAAC,GAAG,EAA7C,EAAiD,EAAE,CAAnD,EAAsD;AACpD,YAAM,UAAU,GAAG,WAAW,CAAC,CAAD,CAA9B;AACA,QAAA,UAAU,CAAC,SAAX;;AACA,YAAI,UAAU,CAAC,SAAX,KAAyB,CAA7B,EAAgC;AAC9B,UAAA,UAAU,CAAC,OAAX;AACA,iBAAO,KAAK,qBAAL,CAA2B,uBAAO,UAAU,CAAC,SAAlB,CAA3B,CAAP;AACD;AACF;AACF;;AACD,WAAO,KAAK,qBAAL,CAA2B,OAA3B,CAAP;AACD,GAdD;AAgBA;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,OAAA,GAAA,UAAQ,CAAR,EAAW,CAAX,EAAc,CAAd,EAAiB,UAAjB,EAA6B,UAA7B,EAAuC;AACrC,QAAM,QAAQ,GAAG,0BAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAjB;AACA,QAAM,GAAG,GAAG,KAAK,MAAL,EAAZ;AACA,QAAI,IAAJ;;AACA,QAAI,KAAK,SAAL,CAAe,WAAf,CAA2B,QAA3B,CAAJ,EAA0C;AACxC,MAAA,IAAI;AAAG;AAA8C,WAAK,SAAL,CAAe,GAAf,CAAmB,QAAnB,CAArD;;AACA,UAAI,IAAI,CAAC,GAAL,KAAa,GAAjB,EAAsB;AACpB,eAAO,IAAP;AACD;AACF;;AACD,QAAM,SAAS,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAlB;AACA,QAAI,YAAY,GAAG,KAAK,8BAAL,CAAoC,SAApC,EAA+C,UAA/C,CAAnB;AACA,QAAM,YAAY,GAAG,KAAK,WAAL,GAAmB,SAAnB,EAArB;AACA,QAAM,QAAQ,GAAG,KAAK,wBAAL,CAA8B,UAA9B,CAAjB;;AACA,QAAI,YAAY,IAAI,YAApB,EAAkC;AAChC,UAAM,UAAU,GAAG,QAAQ,CAAC,kBAAT,CAA4B,YAA5B,CAAnB,CADgC,CAEhC;;AACA,0BAAa,UAAb,EAAyB,CAAC,QAAQ,CAAC,aAAT,CAAuB,CAAvB,CAA1B,EAAqD,UAArD;;AACA,UAAI,CAAC,wBAAW,YAAX,EAAyB,UAAzB,CAAL,EAA2C;AACzC,QAAA,YAAY,GAAG,IAAf;AACD;AACF;;AACD,QAAI,KAAK,GAAG,IAAZ;;AACA,QAAI,YAAY,KAAK,IAArB,EAA2B;AACzB,UAAM,cAAc,GAAG,KAAK,QAA5B;AACA,UAAM,UAAU,GAAG,QAAQ,CAAC,aAAT,CAAuB,CAAvB,CAAnB;AACA,UAAM,OAAO,GAAG,cAAc,CAAC,iBAAf,CAAiC,UAAjC,EAA6C,CAA7C,CAAhB,CAHyB,CAIzB;;AACA,UAAM,MAAM,GAAG,QAAQ,CAAC,kBAAT,CAA4B,YAA5B,CAAf;AACA,0BAAa,MAAb,EAAqB,CAAC,UAAtB,EAAkC,MAAlC;AACA,MAAA,cAAc,CAAC,gBAAf,CAAgC,MAAhC,EAAwC,OAAxC,EAAiD,UAAS,eAAT,EAAwB;AACvE,QAAA,KAAK,GAAG,KAAK,IAAI,CAAC,KAAK,eAAL,CAAqB,eAArB,EAAsC,UAAtC,EAAkD,UAAlD,CAAlB;AACD,OAFgD,CAE/C,IAF+C,CAE1C,IAF0C,CAAjD;AAGD;;AACD,QAAM,OAAO,GAAG,IAAI,yBAAJ,CACd,SADc,EAEd,KAAK,GAAG,mBAAU,KAAb,GAAqB,mBAAU,IAFtB,EAGd,YAHc,EAId,KAAK,QAJS,EAKd,KAAK,cAAL,CAAoB,IAApB,CAAyB,IAAzB,EAA+B,UAA/B,EAA2C,UAA3C,CALc,EAMd,KAAK,iBAAL,CAAuB,IAAvB,CAA4B,IAA5B,CANc,CAAhB;AAQA,IAAA,OAAO,CAAC,GAAR,GAAc,GAAd;;AACA,QAAI,IAAJ,EAAU;AACR,MAAA,OAAO,CAAC,WAAR,GAAsB,IAAtB;AACA,MAAA,OAAO,CAAC,mBAAR;AACA,WAAK,SAAL,CAAe,OAAf,CAAuB,QAAvB,EAAiC,OAAjC;AACD,KAJD,MAIO;AACL,WAAK,SAAL,CAAe,GAAf,CAAmB,QAAnB,EAA6B,OAA7B;AACD;;AACD,WAAO,OAAP;AACD,GAnDD;AAqDA;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,wBAAA,GAAA,UAAyB,UAAzB,EAAmC;AACjC,QAAM,IAAI,GAAG,UAAU,CAAC,OAAX,EAAb;AACA,QAAI,QAAQ,GAAG,KAAK,UAAL,CAAgB,IAAhB,CAAf;;AACA,QAAI,CAAC,QAAL,EAAe;AACb;AACA;AACA,UAAM,cAAc,GAAG,KAAK,QAA5B;AACA,MAAA,QAAQ,GAAG,mCAAoB,UAApB,EAAgC,SAAhC,EACT,cAAc,GAAG,cAAc,CAAC,WAAf,CAA2B,cAAc,CAAC,UAAf,EAA3B,CAAH,GAA6D,SADlE,CAAX;AAEA,WAAK,UAAL,CAAgB,IAAhB,IAAwB,QAAxB;AACD;;AACD,WAAO,QAAP;AACD,GAZD;AAcA;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,iBAAA,GAAA,UAAkB,UAAlB,EAA4B;AAC1B,WAAO,UAAP;AACD,GAFD;AAIA;;;;;AAGA,EAAA,UAAA,CAAA,SAAA,CAAA,gBAAA,GAAA,UAAiB,CAAjB,EAAoB,UAApB,EAAgC,UAAhC,EAA0C;AACxC,QAAM,QAAQ,GAAG,KAAK,wBAAL,CAA8B,UAA9B,CAAjB;AACA,QAAM,QAAQ,GAAG,kBAAO,QAAQ,CAAC,WAAT,CAAqB,CAArB,CAAP,EAAgC,KAAK,OAArC,CAAjB;AACA,WAAO,CAAC,IAAI,CAAC,KAAL,CAAW,QAAQ,CAAC,CAAD,CAAR,GAAc,UAAzB,CAAD,EAAuC,IAAI,CAAC,KAAL,CAAW,QAAQ,CAAC,CAAD,CAAR,GAAc,UAAzB,CAAvC,CAAP;AACD,GAJD;;AAKF,SAAA,UAAA;AA/TA,CAAA,CAAyB,gBAAzB,CAAA;;eAkUe;AAGf;;;;;;;;AAKM,SAAU,mBAAV,CAA8B,IAA9B,EAAoC,GAApC,EAAuC;AAC3C,MAAM,MAAM,GAAG,oCAAgB,GAAhB,EAAqB,IAAI,CAAC,SAAL,EAArB,EAAuC,IAAI,CAAC,MAAL,CAAY,IAAZ,CAAiB,IAAjB,CAAvC,EAA+D,IAAI,CAAC,OAAL,CAAa,IAAb,CAAkB,IAAlB,CAA/D,CAAf;AACA,EAAA,IAAI,CAAC,SAAL,CAAe,MAAf;AACD;;;;;;;;;AClaD;;;;AAIA;;;;eAIe;AACb,EAAA,GAAG,EAAE,KADQ;AAEb,EAAA,IAAI,EAAE,MAFO,CAEA;;AAFA;;;;;;;;;;;ACJf;;AACA;;AACA;;;;AANA;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA;;;;;AAKA,IAAA,YAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAA2B,EAAA,SAAA,CAAA,YAAA,EAAA,MAAA,CAAA;AACzB;;;;;AAGA,WAAA,YAAA,CAAY,OAAZ,EAAmB;AAAnB,QAAA,KAAA,GACE,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM;AACJ,MAAA,MAAM,EAAE,OAAO,CAAC,MADZ;AAEJ,MAAA,MAAM,EAAE,OAAO,CAAC,MAFZ;AAGJ,MAAA,OAAO,EAAE,OAAO,CAAC,OAHb;AAIJ,MAAA,WAAW,EAAE,OAAO,CAAC,WAJjB;AAKJ,MAAA,QAAQ,EAAE,OAAO,CAAC,QALd;AAMJ,MAAA,SAAS,EAAE,OAAO,CAAC,SANf;AAOJ,MAAA,KAAK,EAAE,OAAO,CAAC;AAPX,KAAN,KAQE,IATJ;AAWE;;;;;;AAIA,IAAA,KAAI,CAAC,UAAL,GAAkB,OAAO,CAAC,SAA1B;;AACD;AAED;;;;;;AAIA,EAAA,YAAA,CAAA,SAAA,CAAA,WAAA,GAAA,UAAY,CAAZ,EAAa;AACX,WAAO,KAAK,UAAL,CAAgB,CAAhB,CAAP;AACD,GAFD;AAIA;;;;;;;AAKA,EAAA,YAAA,CAAA,SAAA,CAAA,YAAA,GAAA,YAAA;AACE,WAAO,KAAK,UAAZ;AACD,GAFD;;AAGF,SAAA,YAAA;AAtCA,CAAA,CAA2B,iBAA3B,CAAA;;eAyCe;AAEf;;;;;;;;;;;;;;;AAYM,SAAU,+BAAV,CAA0C,SAA1C,EAAqD,UAArD,EAAiE,gBAAjE,EAAiF;AAErF;AACA,MAAM,WAAW,GAAG,EAApB;AACA;;AACA,MAAM,SAAS,GAAG,EAAlB;AACA;;AACA,MAAM,OAAO,GAAG,EAAhB;AACA;;AACA,MAAM,SAAS,GAAG,EAAlB;AACA;;AACA,MAAM,KAAK,GAAG,EAAd;AAEA,MAAM,YAAY,GAAG,gBAAgB,KAAK,SAArB,GAAiC,gBAAjC,GAAoD,EAAzE;AAEA,MAAM,oBAAoB,GAAG,cAA7B;AACA,MAAM,iBAAiB,GAAG,YAA1B;AACA,MAAM,kBAAkB,GAAG,YAA3B;AACA,MAAM,wBAAwB,GAAG,kBAAjC;AACA,MAAM,qBAAqB,GAAG,eAA9B;AACA,MAAM,iBAAiB,GAAG,WAA1B;AACA,MAAM,kBAAkB,GAAG,YAA3B;AAEA,MAAM,IAAI,GAAG,SAAS,CAAC,oBAAD,CAAtB;AACA,MAAM,UAAU,GAAG,eAAc,IAAI,CAAC,OAAL,CAAa,oCAAb,EAAmD,OAAnD,CAAd,KACf,eAAc,IAAd,CADJ;AAEA,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAX,EAAtB,CA1BqF,CA2BrF;;AACA,MAAM,cAAc,GAAG,UAAU,CAAC,kBAAX,GAAgC,MAAhC,CAAuC,CAAvC,EAA0C,CAA1C,KAAgD,IAAvE;AAEA,EAAA,SAAS,CAAC,iBAAD,CAAT,CAA6B,IAA7B,CAAkC,UAAS,CAAT,EAAY,CAAZ,EAAa;AAC7C,WAAO,CAAC,CAAC,wBAAD,CAAD,GAA8B,CAAC,CAAC,wBAAD,CAAtC;AACD,GAFD;AAIA,EAAA,SAAS,CAAC,iBAAD,CAAT,CAA6B,OAA7B,CAAqC,UAAS,GAAT,EAAY;AAE/C,QAAI,eAAJ,CAF+C,CAG/C;AACA;;AACA,QAAI,YAAY,CAAC,MAAb,GAAsB,CAA1B,EAA6B;AAC3B,MAAA,eAAe,GAAG,iBAAK,YAAL,EAAmB,UAAS,MAAT,EAAe;AAClD,YAAI,GAAG,CAAC,kBAAD,CAAH,IAA2B,MAAM,CAAC,iBAAD,CAArC,EAA0D;AACxD,iBAAO,IAAP;AACD,SAHiD,CAIlD;AACA;;;AACA,YAAI,GAAG,CAAC,kBAAD,CAAH,CAAwB,OAAxB,CAAgC,GAAhC,MAAyC,CAAC,CAA9C,EAAiD;AAC/C,iBAAO,SAAS,CAAC,kBAAD,CAAT,GAAgC,GAAhC,GAAsC,GAAG,CAAC,kBAAD,CAAzC,KAAkE,MAAM,CAAC,iBAAD,CAA/E;AACD;;AACD,eAAO,KAAP;AACD,OAViB,CAAlB;AAWD,KAZD,MAYO;AACL,MAAA,eAAe,GAAG,IAAlB;AACD;;AAED,QAAI,eAAJ,EAAqB;AACnB,MAAA,SAAS,CAAC,IAAV,CAAe,GAAG,CAAC,kBAAD,CAAlB;AACA,UAAM,UAAU,GAAG,GAAG,CAAC,wBAAD,CAAH,GAAgC,OAAhC,GAA0C,aAA7D;AACA,UAAM,SAAS,GAAG,GAAG,CAAC,iBAAD,CAArB;AACA,UAAM,UAAU,GAAG,GAAG,CAAC,kBAAD,CAAtB;;AACA,UAAI,cAAJ,EAAoB;AAClB,QAAA,OAAO,CAAC,IAAR,CAAa,CAAC,GAAG,CAAC,qBAAD,CAAH,CAA2B,CAA3B,CAAD,EACX,GAAG,CAAC,qBAAD,CAAH,CAA2B,CAA3B,CADW,CAAb;AAED,OAHD,MAGO;AACL,QAAA,OAAO,CAAC,IAAR,CAAa,GAAG,CAAC,qBAAD,CAAhB;AACD;;AACD,MAAA,WAAW,CAAC,IAAZ,CAAiB,UAAjB;AACA,MAAA,SAAS,CAAC,IAAV,CAAe,SAAS,IAAI,UAAb,GACb,SADa,GACD,CAAC,SAAD,EAAY,UAAZ,CADd;AAEA,MAAA,KAAK,CAAC,IAAN,CAAW,CAAC,GAAG,CAAC,aAAD,CAAJ,EAAqB,GAAG,CAAC,cAAD,CAAxB,CAAX;AACD;AACF,GArCD;AAuCA,SAAO,IAAI,YAAJ,CAAiB;AACtB,IAAA,MAAM,EAAE,UADc;AAEtB,IAAA,OAAO,EAAE,OAFa;AAGtB,IAAA,WAAW,EAAE,WAHS;AAItB,IAAA,SAAS,EAAE,SAJW;AAKtB,IAAA,SAAS,EAAE,SALW;AAMtB,IAAA,KAAK,EAAE;AANe,GAAjB,CAAP;AAQD;;;;;;;;;;ACxLD;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAZA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA;;;;;AAKA,IAAA,IAAA;AAAA;AAAA,UAAA,MAAA,EAAA;AAAmB,EAAA,SAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AACjB;;;;;AAGA,WAAA,IAAA,CAAY,OAAZ,EAAmB;AAEjB;AAFF,QAAA,KAAA,GAAA,IAAA;;AAIE,QAAM,eAAe,GAAG,OAAO,CAAC,eAAR,KAA4B,SAA5B;AACtB;AAA2D,IAAA,OAAO,CAAC,eAD7C,GAEtB,6BAAoB,GAFtB,CAJiB,CAQjB;AACA;;AACA,QAAM,QAAQ,GAAG,OAAO,CAAC,QAAzB;AAEA,QAAI,IAAI,GAAG,OAAO,CAAC,IAAnB;;AACA,QAAI,IAAI,KAAK,SAAT,IAAsB,OAAO,CAAC,GAAR,KAAgB,SAA1C,EAAqD;AACnD,MAAA,IAAI,GAAG,gCAAU,OAAO,CAAC,GAAlB,CAAP;AACD;;AAED,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM;AACJ,MAAA,YAAY,EAAE,OAAO,CAAC,YADlB;AAEJ,MAAA,SAAS,EAAE,OAAO,CAAC,SAFf;AAGJ,MAAA,WAAW,EAAE,OAAO,CAAC,WAHjB;AAIJ,MAAA,UAAU,EAAE,OAAO,CAAC,UAJhB;AAKJ,MAAA,0BAA0B,EAAE,OAAO,CAAC,0BALhC;AAMJ,MAAA,SAAS,EAAE,OAAO,CAAC,SANf;AAOJ,MAAA,QAAQ,EAAE,QAPN;AAQJ,MAAA,gBAAgB,EAAE,OAAO,CAAC,gBARtB;AASJ,MAAA,cAAc,EAAE,OAAO,CAAC,cATpB;AAUJ,MAAA,eAAe,EAAE,oCAVb;AAWJ,MAAA,IAAI,EAAE,IAXF;AAYJ,MAAA,KAAK,EAAE,OAAO,CAAC,KAAR,KAAkB,SAAlB,GAA8B,OAAO,CAAC,KAAtC,GAA8C,KAZjD;AAaJ,MAAA,UAAU,EAAE,OAAO,CAAC;AAbhB,KAAN,KAcE,IAdF;AAgBA;;;;;AAIA,IAAA,KAAI,CAAC,QAAL,GAAgB,OAAO,CAAC,OAAR,KAAoB,SAApB,GAAgC,OAAO,CAAC,OAAxC,GAAkD,OAAlE;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,OAAL,GAAe,OAAO,CAAC,MAAR,KAAmB,SAAnB,GAA+B,OAAO,CAAC,MAAvC,GAAgD,YAA/D;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,WAAL,GAAmB,OAAO,CAAC,UAAR,KAAuB,SAAvB,GAAmC,OAAO,CAAC,UAA3C,GAAwD,EAA3E;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,MAAL,GAAc,OAAO,CAAC,KAAtB;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,UAAL,GAAkB,OAAO,CAAC,SAA1B;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,MAAL,GAAc,OAAO,CAAC,KAAtB,CAnEiB,CAqEjB;AACA;;AAEA;;;;;AAIA,IAAA,KAAI,CAAC,gBAAL,GAAwB,eAAxB;;AAEA,IAAA,KAAI,CAAC,MAAL,CAAY,KAAI,CAAC,oBAAL,EAAZ;;AAEA,QAAI,IAAI,IAAI,IAAI,CAAC,MAAL,GAAc,CAA1B,EAA6B;AAC3B,MAAA,KAAI,CAAC,eAAL,GAAuB,iDAA2B,IAAI,CAAC,GAAL,CAAS,sBAAsB,CAAC,IAAvB,CAA4B,KAA5B,CAAT,CAA3B,CAAvB;AACD;;;AAEF;AAED;;;;;;;AAKA,EAAA,IAAA,CAAA,SAAA,CAAA,OAAA,GAAA,UAAQ,IAAR,EAAY;AACV,SAAK,IAAL,GAAY,IAAZ;AACA,QAAM,GAAG,GAAG,IAAI,CAAC,IAAL,CAAU,IAAV,CAAZ;AACA,SAAK,kBAAL,CAAwB,iDAA2B,IAAI,CAAC,GAAL,CAAS,sBAAsB,CAAC,IAAvB,CAA4B,IAA5B,CAAT,CAA3B,CAAxB,EAAiG,GAAjG;AACD,GAJD;AAMA;;;;;;;;;AAOA,EAAA,IAAA,CAAA,SAAA,CAAA,aAAA,GAAA,YAAA;AACE,WAAO,KAAK,WAAZ;AACD,GAFD;AAKA;;;;;;;AAKA,EAAA,IAAA,CAAA,SAAA,CAAA,SAAA,GAAA,YAAA;AACE,WAAO,KAAK,OAAZ;AACD,GAFD;AAKA;;;;;;;AAKA,EAAA,IAAA,CAAA,SAAA,CAAA,QAAA,GAAA,YAAA;AACE,WAAO,KAAK,MAAZ;AACD,GAFD;AAKA;;;;;;;AAKA,EAAA,IAAA,CAAA,SAAA,CAAA,YAAA,GAAA,YAAA;AACE,WAAO,KAAK,UAAZ;AACD,GAFD;AAKA;;;;;;;AAKA,EAAA,IAAA,CAAA,SAAA,CAAA,kBAAA,GAAA,YAAA;AACE,WAAO,KAAK,gBAAZ;AACD,GAFD;AAKA;;;;;;;AAKA,EAAA,IAAA,CAAA,SAAA,CAAA,QAAA,GAAA,YAAA;AACE,WAAO,KAAK,MAAZ;AACD,GAFD;AAKA;;;;;;;AAKA,EAAA,IAAA,CAAA,SAAA,CAAA,UAAA,GAAA,YAAA;AACE,WAAO,KAAK,QAAZ;AACD,GAFD;AAKA;;;;;;AAIA,EAAA,IAAA,CAAA,SAAA,CAAA,oBAAA,GAAA,YAAA;AACE,QAAI,CAAC,GAAG,CAAR;AACA,QAAM,GAAG,GAAG,EAAZ;;AACA,SAAK,IAAM,GAAX,IAAkB,KAAK,WAAvB,EAAoC;AAClC,MAAA,GAAG,CAAC,CAAC,EAAF,CAAH,GAAW,GAAG,GAAG,GAAN,GAAY,KAAK,WAAL,CAAiB,GAAjB,CAAvB;AACD;;AACD,WAAO,GAAG,CAAC,IAAJ,CAAS,GAAT,CAAP;AACD,GAPD;AAUA;;;;;;;AAKA,EAAA,IAAA,CAAA,SAAA,CAAA,gBAAA,GAAA,UAAiB,UAAjB,EAA2B;AACzB,qBAAO,KAAK,WAAZ,EAAyB,UAAzB;AACA,SAAK,MAAL,CAAY,KAAK,oBAAL,EAAZ;AACD,GAHD;;AAKF,SAAA,IAAA;AArMA,CAAA,CAAmB,kBAAnB,CAAA;;eAuMe;AAEf;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBM,SAAU,uBAAV,CAAkC,OAAlC,EAA2C,MAA3C,EAAiD;AACrD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAD,CAAP,CAAoB,OAApB,CAAf;AACA,MAAM,CAAC,GAAG,iBAAK,MAAL,EAAa,UAAS,GAAT,EAAc,KAAd,EAAqB,KAArB,EAA0B;AAC/C,WAAO,GAAG,CAAC,YAAD,CAAH,IAAqB,MAAM,CAAC,OAAD,CAAlC;AACD,GAFS,CAAV;;AAGA,MAAI,CAAC,KAAK,IAAV,EAAgB;AACd,WAAO,IAAP;AACD;;AACD,MAAM,cAAc,GAAG,OAAO,CAAC,UAAD,CAAP,CAAoB,eAApB,CAAvB;AACA,MAAI,GAAJ;;AACA,MAAI,CAAC,CAAC,mBAAD,CAAD,CAAuB,MAAvB,GAAgC,CAApC,EAAuC;AACrC,QAAI,gBAAgB,MAApB,EAA4B;AAC1B,MAAA,GAAG,GAAG,sBAAU,CAAC,CAAC,mBAAD,CAAX,EACJ,UAAS,GAAT,EAAc,KAAd,EAAqB,KAArB,EAA0B;AACxB,YAAM,aAAa,GAAG,iBAAK,cAAL,EAAqB,UAAS,EAAT,EAAW;AACpD,iBAAO,EAAE,CAAC,YAAD,CAAF,IAAoB,GAAG,CAAC,eAAD,CAA9B;AACD,SAFqB,CAAtB;AAGA,YAAM,YAAY,GAAG,aAAa,CAAC,cAAD,CAAlC;AACA,YAAM,KAAK,GAAG,eAAc,YAAY,CAAC,OAAb,CAAqB,oCAArB,EAA2D,OAA3D,CAAd,KACR,eAAc,YAAd,CADN;AAEA,YAAM,KAAK,GAAG,eAAc,MAAM,CAAC,YAAD,CAApB,CAAd;;AACA,YAAI,KAAK,IAAI,KAAb,EAAoB;AAClB,iBAAO,sBAAW,KAAX,EAAkB,KAAlB,CAAP;AACD,SAFD,MAEO;AACL,iBAAO,YAAY,IAAI,MAAM,CAAC,YAAD,CAA7B;AACD;AACF,OAdG,CAAN;AAeD,KAhBD,MAgBO;AACL,MAAA,GAAG,GAAG,sBAAU,CAAC,CAAC,mBAAD,CAAX,EACJ,UAAS,GAAT,EAAc,KAAd,EAAqB,KAArB,EAA0B;AACxB,eAAO,GAAG,CAAC,eAAD,CAAH,IAAwB,MAAM,CAAC,WAAD,CAArC;AACD,OAHG,CAAN;AAID;AACF,GAvBD,MAuBO;AACL,IAAA,GAAG,GAAG,CAAN;AACD;;AACD,MAAI,GAAG,GAAG,CAAV,EAAa;AACX,IAAA,GAAG,GAAG,CAAN;AACD;;AACD,MAAM,SAAS;AAAG;AACf,EAAA,CAAC,CAAC,mBAAD,CAAD,CAAuB,GAAvB,EAA4B,eAA5B,CADH;AAEA,MAAM,YAAY;AAAG;AAClB,EAAA,CAAC,CAAC,mBAAD,CAAD,CAAuB,GAAvB,EAA4B,qBAA5B,CADH;AAGA,MAAI,MAAM;AAAG;AAAuB,EAAA,CAAC,CAAC,QAAD,CAAD,CAAY,CAAZ,CAApC;;AACA,MAAI,YAAY,MAAhB,EAAwB;AACtB,IAAA,MAAM,GAAG,MAAM,CAAC,QAAD,CAAf;AACD;;AACD,EAAA,GAAG,GAAG,sBAAU,CAAC,CAAC,OAAD,CAAX,EAAsB,UAAS,GAAT,EAAc,KAAd,EAAqB,KAArB,EAA0B;AACpD,QAAI,WAAW,MAAf,EAAuB;AACrB,aAAO,GAAG,CAAC,OAAD,CAAH,IAAgB,MAAM,CAAC,OAAD,CAA7B;AACD,KAFD,MAEO;AACL,aAAO,GAAG,CAAC,WAAD,CAAV;AACD;AACF,GANK,CAAN;;AAOA,MAAI,GAAG,GAAG,CAAV,EAAa;AACX,IAAA,GAAG,GAAG,CAAN;AACD;;AACD,MAAM,KAAK;AAAG;AAAuB,EAAA,CAAC,CAAC,OAAD,CAAD,CAAW,GAAX,EAAgB,YAAhB,CAArC;AAEA,MAAM,UAAU,GAAG,EAAnB;;AACA,MAAI,eAAe,CAAnB,EAAsB;AACpB,IAAA,CAAC,CAAC,WAAD,CAAD,CAAe,OAAf,CAAuB,UAAS,GAAT,EAAc,KAAd,EAAqB,KAArB,EAA0B;AAC/C,UAAM,GAAG,GAAG,GAAG,CAAC,YAAD,CAAf;AACA,UAAI,KAAK,GAAG,GAAG,CAAC,SAAD,CAAf;;AACA,UAAI,KAAK,KAAK,SAAd,EAAyB;AACvB,QAAA,KAAK,GAAG,GAAG,CAAC,OAAD,CAAH,CAAa,CAAb,CAAR;AACD;;AACD,MAAA,UAAU,CAAC,GAAD,CAAV,GAAkB,KAAlB;AACD,KAPD;AAQD;;AAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAD,CAAP,CAAoB,eAApB,CAAnB;AACA,MAAM,YAAY,GAAG,iBAAK,UAAL,EAAiB,UAAS,GAAT,EAAc,KAAd,EAAqB,KAArB,EAA0B;AAC9D,WAAO,GAAG,CAAC,YAAD,CAAH,IAAqB,SAA5B;AACD,GAFoB,CAArB;AAIA,MAAI,UAAJ;AACA,MAAM,IAAI,GAAG,YAAY,CAAC,cAAD,CAAzB;;AACA,MAAI,IAAJ,EAAU;AACR,IAAA,UAAU,GAAG,eAAc,IAAI,CAAC,OAAL,CAAa,oCAAb,EAAmD,OAAnD,CAAd,KACT,eAAc,IAAd,CADJ;AAED;;AACD,MAAI,gBAAgB,MAApB,EAA4B;AAC1B,QAAM,UAAU,GAAG,eAAc,MAAM,CAAC,YAAD,CAApB,CAAnB;;AACA,QAAI,UAAJ,EAAgB;AACd,UAAI,CAAC,UAAD,IAAe,sBAAW,UAAX,EAAuB,UAAvB,CAAnB,EAAuD;AACrD,QAAA,UAAU,GAAG,UAAb;AACD;AACF;AACF;;AAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,kBAAD,CAA1B;AACA,MAAI,MAAJ,EAAY,KAAZ;;AACA,MAAI,gBAAgB,KAAK,SAAzB,EAAoC;AAClC,QAAM,qBAAqB,GAAG,eAAc,WAAd,EAA2B,SAA3B,EAA9B;AACA,IAAA,KAAK,GAAI,gBAAgB,CAAC,CAAD,CAAhB,IAAuB,qBAAqB,CAAC,CAAD,CAA5C,IACL,gBAAgB,CAAC,CAAD,CAAhB,IAAuB,qBAAqB,CAAC,CAAD,CADhD;AAEA,IAAA,MAAM,GAAG,2BACP,gBADO,EACW,WADX,EACwB,UADxB,CAAT;AAEA,QAAM,gBAAgB,GAAG,UAAU,CAAC,SAAX,EAAzB;;AACA,QAAI,gBAAJ,EAAsB;AACpB;AACA;AACA,UAAI,CAAC,4BAAe,gBAAf,EAAiC,MAAjC,CAAL,EAA+C;AAC7C,QAAA,MAAM,GAAG,SAAT;AACD;AACF;AACF;;AAED,MAAM,QAAQ,GAAG,2CAAgC,YAAhC,EAA8C,MAA9C,EAAsD,YAAtD,CAAjB;AAEA;;AACA,MAAM,IAAI,GAAG,EAAb;AACA,MAAI,eAAe,GAAG,MAAM,CAAC,iBAAD,CAA5B;AACA,EAAA,eAAe,GAAG,eAAe,KAAK,SAApB,GAAgC,eAAhC,GAAkD,EAApE;;AAEA,MAAI,wBAAwB,OAAxB,IAAmC,aAAa,OAAO,CAAC,oBAAD,CAA3D,EAAmF;AACjF,QAAM,IAAI,GAAG,OAAO,CAAC,oBAAD,CAAP,CAA8B,SAA9B,EAAyC,KAAzC,EAAgD,MAAhD,EAAwD,KAAxD,CAAb;;AAEA,SAAK,IAAI,CAAC,GAAG,CAAR,EAAW,EAAE,GAAG,IAAI,CAAC,MAA1B,EAAkC,CAAC,GAAG,EAAtC,EAA0C,EAAE,CAA5C,EAA+C;AAC7C,UAAI,IAAI,CAAC,CAAD,CAAJ,CAAQ,YAAR,CAAJ,EAA2B;AACzB,YAAM,UAAU,GAAG,iBAAK,IAAI,CAAC,CAAD,CAAJ,CAAQ,YAAR,CAAL,EAA4B,UAAS,OAAT,EAAgB;AAC7D,iBAAO,OAAO,CAAC,MAAD,CAAP,IAAmB,aAA1B;AACD,SAFkB,CAAnB;AAGA,YAAM,SAAS,GAAG,UAAU,CAAC,eAAD,CAAV,CAA4B,OAA5B,CAAlB;;AAEA,YAAI,eAAe,KAAK,EAAxB,EAA4B;AAC1B;AACA,UAAA,eAAe,GAAG,SAAS,CAAC,CAAD,CAA3B;AACD;;AACD,YAAI,eAAe,KAAK,6BAAoB,GAA5C,EAAiD;AAC/C,cAAI,qBAAS,SAAT,EAAoB,6BAAoB,GAAxC,CAAJ,EAAkD;AAChD,YAAA,IAAI,CAAC,IAAL;AAAU;AAAuB,YAAA,IAAI,CAAC,CAAD,CAAJ,CAAQ,MAAR,CAAjC;AACD;AACF,SAJD,MAIO;AACL;AACD;AACF,OAjBD,MAiBO,IAAI,IAAI,CAAC,CAAD,CAAJ,CAAQ,MAAR,CAAJ,EAAqB;AAC1B,QAAA,eAAe,GAAG,6BAAoB,GAAtC;AACA,QAAA,IAAI,CAAC,IAAL;AAAU;AAAuB,QAAA,IAAI,CAAC,CAAD,CAAJ,CAAQ,MAAR,CAAjC;AACD;AACF;AACF;;AACD,MAAI,IAAI,CAAC,MAAL,KAAgB,CAApB,EAAuB;AACrB,IAAA,eAAe,GAAG,6BAAoB,IAAtC;AACA,IAAA,CAAC,CAAC,aAAD,CAAD,CAAiB,OAAjB,CAAyB,UAAS,OAAT,EAAgB;AACvC,UAAI,OAAO,CAAC,cAAD,CAAP,KAA4B,MAAhC,EAAwC;AACtC,QAAA,MAAM,GAAG,OAAO,CAAC,QAAD,CAAhB;AACA,QAAA,IAAI,CAAC,IAAL;AAAU;AAAuB,QAAA,OAAO,CAAC,UAAD,CAAxC;AACD;AACF,KALD;AAMD;;AAED,SAAO;AACL,IAAA,IAAI,EAAE,IADD;AAEL,IAAA,KAAK,EAAE,MAAM,CAAC,OAAD,CAFR;AAGL,IAAA,SAAS,EAAE,SAHN;AAIL,IAAA,MAAM,EAAE,MAJH;AAKL,IAAA,UAAU,EAAE,UALP;AAML,IAAA,eAAe,EAAE,eANZ;AAOL,IAAA,QAAQ,EAAE,QAPL;AAQL,IAAA,KAAK,EAAE,KARF;AASL,IAAA,UAAU,EAAE,UATP;AAUL,IAAA,KAAK,EAAE,KAVF;AAWL,IAAA,WAAW,EAAE,MAAM,CAAC,aAAD;AAXd,GAAP;AAaD;AAED;;;;;;;AAKA,SAAS,sBAAT,CAAgC,QAAhC,EAAwC;AACtC,MAAM,eAAe,GAAG,KAAK,gBAA7B,CADsC,CAGtC;AACA;;AACA,MAAM,OAAO,GAAG;AACd,aAAS,KAAK,MADA;AAEd,aAAS,KAAK,MAFA;AAGd,qBAAiB,KAAK;AAHR,GAAhB;;AAMA,MAAI,eAAe,IAAI,6BAAoB,GAA3C,EAAgD;AAC9C,qBAAO,OAAP,EAAgB;AACd,iBAAW,MADG;AAEd,iBAAW,SAFG;AAGd,iBAAW,KAAK,QAHF;AAId,gBAAU,KAAK;AAJD,KAAhB;AAMD,GAlBqC,CAoBtC;AACA;AACA;;;AAEA,EAAA,QAAQ,GAAI,eAAe,IAAI,6BAAoB,GAAxC,GACT,uBAAa,QAAb,EAAuB,OAAvB,CADS,GAET,QAAQ,CAAC,OAAT,CAAiB,aAAjB,EAAgC,UAAS,CAAT,EAAY,CAAZ,EAAa;AAC3C,WAAQ,CAAC,CAAC,WAAF,MAAmB,OAApB,GAA+B,OAAO,CAAC,CAAC,CAAC,WAAF,EAAD,CAAtC,GAA0D,CAAjE;AACD,GAFD,CAFF;AAMA,MAAM,QAAQ;AAAG;AACf,OAAK,QADP;AAEA,MAAM,UAAU,GAAG,KAAK,WAAxB;AAEA;AACE;;;;;;AAMA,cAAS,SAAT,EAAoB,UAApB,EAAgC,UAAhC,EAA0C;AACxC,UAAI,CAAC,SAAL,EAAgB;AACd,eAAO,SAAP;AACD,OAFD,MAEO;AACL,YAAM,cAAY,GAAG;AACnB,wBAAc,QAAQ,CAAC,WAAT,CAAqB,SAAS,CAAC,CAAD,CAA9B,CADK;AAEnB,qBAAW,SAAS,CAAC,CAAD,CAFD;AAGnB,qBAAW,SAAS,CAAC,CAAD;AAHD,SAArB;AAKA,yBAAO,cAAP,EAAqB,UAArB;AACA,YAAI,GAAG,GAAG,QAAV;;AACA,YAAI,eAAe,IAAI,6BAAoB,GAA3C,EAAgD;AAC9C,UAAA,GAAG,GAAG,uBAAa,GAAb,EAAkB,cAAlB,CAAN;AACD,SAFD,MAEO;AACL,UAAA,GAAG,GAAG,GAAG,CAAC,OAAJ,CAAY,aAAZ,EAA2B,UAAS,CAAT,EAAY,CAAZ,EAAa;AAC5C,mBAAO,cAAY,CAAC,CAAD,CAAnB;AACD,WAFK,CAAN;AAGD;;AACD,eAAO,GAAP;AACD;AACF;AA3BH;AA6BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxgBD;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AC9BA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AAMA;;AAEA;;AACA;;;;AAvBA;AACA;AAQA;AAUA;AAMA;AACA,IAAI3L,SAAJ;AACA,IAAIC,OAAJ;AACA,IAAIC,SAAJ;AACA,IAAIC,OAAJ;AACA,IAAIC,SAAJ;AACA,IAAIC,QAAQ,GAAG,EAAf;AAIAC,CAAC,CAAC,YAAY;AACVA,EAAAA,CAAC,CAAC,SAAD,CAAD,CAAaC,EAAb,CAAgB,OAAhB,EAAyB,YAAY;AACjCP,IAAAA,SAAS,GAAGM,CAAC,CAAC,WAAD,CAAD,CAAeE,GAAf,EAAZ;AACAP,IAAAA,OAAO,GAAGK,CAAC,CAAC,SAAD,CAAD,CAAaE,GAAb,EAAV;AACAN,IAAAA,SAAS,GAAGI,CAAC,CAAC,WAAD,CAAD,CAAeE,GAAf,EAAZ;AACAL,IAAAA,OAAO,GAAGG,CAAC,CAAC,SAAD,CAAD,CAAaE,GAAb,EAAV,CAJiC,CAKnC;;AACE,QAAGR,SAAS,CAACS,MAAV,GAAiB,CAApB,EAAuB;AAAET,MAAAA,SAAS,GAAC,MAAIA,SAAd;AAAwB;;AAAA;;AACjD,QAAGC,OAAO,CAACQ,MAAR,GAAe,CAAlB,EAAsB;AAACR,MAAAA,OAAO,GAAC,MAAIA,OAAZ;AAAoB;;AAAA;;AAC3C,QAAMC,SAAS,IAAIC,OAAd,IAA2BF,OAAO,GAAGD,SAAtC,IAAsDG,OAAO,GAACD,SAAlE,EAA8E;AAC1EQ,MAAAA,KAAK,CAAC,qCAAD,CAAL;AACH,KAFD,MAGK;AACD,UAAIC,MAAM,GAAGL,CAAC,CAAC,IAAD,CAAD,CAAQE,GAAR,EAAb;AAEAJ,MAAAA,SAAS,GAAGE,CAAC,CAAC,WAAD,CAAD,CAAeE,GAAf,EAAZ;AACAH,MAAAA,QAAQ,GAAG,EAAX;AACAC,MAAAA,CAAC,CAACM,IAAF,CAAO;AACHC,QAAAA,KAAK,EAAE,KADJ;AAEJC,QAAAA,GAAG,EAAE,sDAFD;AAGJ;AACCC,QAAAA,QAAQ,EAAE,MAJP;AAKHC,QAAAA,MAAM,EAAE,MALL;AAMHC,QAAAA,IAAI,EAAE;AAAEC,UAAAA,QAAQ,EAAElB,SAAZ;AAAuBmB,UAAAA,MAAM,EAAElB,OAA/B;AAAwCmB,UAAAA,QAAQ,EAAElB,SAAlD;AAA6DmB,UAAAA,MAAM,EAAElB,OAArE;AAA8EmB,UAAAA,QAAQ,EAAElB;AAAxF,SANH;AAOHmB,QAAAA,OAAO,EAAE,iBAAUN,IAAV,EAAgB;AACrBX,UAAAA,CAAC,CAACW,IAAD,CAAD,CAAQO,IAAR,CAAa,UAAUC,KAAV,EAAiBC,GAAjB,EAAsB;AAC/B,gBAAIC,EAAE,GAAG,IAAIC,KAAJ,CAAUC,UAAU,CAACH,GAAG,CAACI,OAAL,CAApB,EAAmCD,UAAU,CAACH,GAAG,CAACK,MAAL,CAA7C,EAA2DL,GAAG,CAACM,KAAJ,CAAUC,QAAV,EAA3D,EAAiFP,GAAG,CAACQ,SAAJ,CAAcD,QAAd,EAAjF,EAA2GP,GAAG,CAACS,MAA/G,EAAuHT,GAAG,CAACU,OAA3H,EAAoIV,GAAG,CAACW,OAAxI,CAAT;AACAhC,YAAAA,QAAQ,CAACiC,IAAT,CAAcX,EAAd;AACH,WAHD;AAIH,SAZE;AAaHY,QAAAA,KAAK,EAAE,eAAUC,GAAV,EAAe;AAClB9B,UAAAA,KAAK,CAAC8B,GAAD,CAAL;AACH;AAfE,OAAP;;AAiBA,UAAInC,QAAQ,IAAE,EAAd,EAAiB;AACbK,QAAAA,KAAK,CAAC,0CAAD,CAAL;AAEH,OAHD,MAKA;AACK+B,QAAAA,QAAQ;AACZ;;AAAA;AAEJ;;AAAA;AACJ,GA3CD;AA4CH,CA7CA,CAAD,EA8CA;;AAEA,SAASA,QAAT,GAAoB;AACjB;AACD;AACC;AACC;AACD;AACD;AAGE;AACA;AACA;AACA;AACA;AACA;;AAGA;AACJ;AACA;AAEI,MAAIC,SAAS,GAAGC,QAAQ,CAACC,cAAT,CAAwB,OAAxB,CAAhB;AACA,MAAIC,OAAO,GAAGF,QAAQ,CAACC,cAAT,CAAwB,eAAxB,CAAd;AACA,MAAIE,MAAM,GAAGH,QAAQ,CAACC,cAAT,CAAwB,cAAxB,CAAb;AAGA;AACJ;AACA;;AACI,MAAIG,OAAO,GAAG,IAAIC,gBAAJ,CAAY;AACtBC,IAAAA,OAAO,EAAEP,SADa;AAEtBQ,IAAAA,OAAO,EAAE,IAFa;AAGtBC,IAAAA,gBAAgB,EAAE;AACdC,MAAAA,QAAQ,EAAE;AADI;AAHI,GAAZ,CAAd;AASA;AACJ;AACA;AACA;;AACIN,EAAAA,MAAM,CAACO,OAAP,GAAiB,YAAY;AACzBN,IAAAA,OAAO,CAACO,WAAR,CAAoBC,SAApB;AACAT,IAAAA,MAAM,CAACU,IAAP;AACA,WAAO,KAAP;AACH,GAJD;;AAQA,MAAIC,KAAK,GAAG,IAAIC,mBAAJ,CAAerD,QAAf,EAAyBsD,SAAzB,CAAmC,WAAnC,EAAgD,WAAhD,CAAZ,CAlDgB,CAoDhB;AACA;AACA;;AACA,MAAIC,WAAW,GAAGH,KAAK,CAACI,cAAN,EAAlB;AACA,MAAIC,WAAW,GAAGF,WAAW,CAACnD,MAA9B;AACA,MAAIsD,MAAM,GAAGH,WAAW,CAAC,CAAD,CAAxB,CAzDgB,CAyDY;AAE5B;;AACA,MAAInD,MAAM,GAAGgD,KAAK,CAACO,SAAN,EAAb;AACA,MAAIC,OAAJ;;AACA,MAAIxD,MAAM,GAAG,GAAb,EAAkB;AACdwD,IAAAA,OAAO,GAAIC,IAAI,CAACC,KAAL,CAAW1D,MAAM,GAAG,IAAT,GAAgB,GAAhB,GAAsB,GAAjC,CAAD,GACN,GADM,GACA,IADV;AAEH,GAHD,MAGO;AACHwD,IAAAA,OAAO,GAAIC,IAAI,CAACC,KAAL,CAAW1D,MAAM,GAAG,GAApB,IAA2B,GAA5B,GACN,GADM,GACA,GADV;AAEH,GApEe,CAsEhB;AAEA;;;AACA,MAAI2D,OAAO,GAAG/D,QAAQ,CAAC,CAAD,CAAR,CAAY,CAAZ,CAAd;AACA,MAAIgE,WAAW,GAAG,wBAAwBP,WAAxB,GAAsC,YAAxD;AACA,MAAIQ,UAAU,GAAGJ,IAAI,CAACK,GAAL,CAASC,KAAT,CAAeN,IAAf,EAAqB7D,QAAQ,CAACoE,GAAT,CAAa,UAAUC,CAAV,EAAa;AAC5D,WAAOC,QAAQ,CAACD,CAAC,CAAC,CAAD,CAAF,CAAf;AACH,GAFqC,CAArB,CAAjB;AAGAL,EAAAA,WAAW,GAAGD,OAAO,GAAG,KAAV,GAAkBC,WAAlB,GAAgC,gCAAhC,GAAmEC,UAAnE,GAAgF,kBAAhF,GAAoG,mBAApG,GAAyHL,OAAvI,CA9EgB,CAgFhB;;AACAtB,EAAAA,QAAQ,CAACC,cAAT,CAAwB,WAAxB,EAAqCgC,SAArC,GAAiDP,WAAjD,CAjFgB,CAkFhB;;AACA,MAAIQ,YAAY,GAAG,IAAIC,gBAAJ,CAAY;AAC3BC,IAAAA,IAAI,EAAE,OADqB;AAE3BC,IAAAA,QAAQ,EAAEvB;AAFiB,GAAZ,CAAnB;AAIA,MAAIwB,SAAS;AAAG;AAA6D,MAAIH,gBAAJ,CAAY;AACrFC,IAAAA,IAAI,EAAE,WAD+E;AAErFC,IAAAA,QAAQ,EAAE,IAAIE,cAAJ,CAAUtB,WAAW,CAAC,CAAD,CAArB;AAF2E,GAAZ,CAA7E;AAIA,MAAIuB,WAAW,GAAG,IAAIL,gBAAJ,CAAY;AAC1BC,IAAAA,IAAI,EAAE,MADoB;AAE1BC,IAAAA,QAAQ,EAAE,IAAIE,cAAJ,CAAUtB,WAAW,CAAC,CAAD,CAArB;AAFgB,GAAZ,CAAlB;AAIA,MAAIwB,SAAS,GAAG,IAAIN,gBAAJ,CAAY;AACxBC,IAAAA,IAAI,EAAE,SADkB;AAExBC,IAAAA,QAAQ,EAAE,IAAIE,cAAJ,CAAUtB,WAAW,CAACE,WAAW,GAAG,CAAf,CAArB;AAFc,GAAZ,CAAhB;AAKA,MAAIuB,MAAM,GAAG;AACT,aAAS,IAAIC,YAAJ,CAAU;AACfC,MAAAA,MAAM,EAAE,IAAIC,aAAJ,CAAW;AACfC,QAAAA,KAAK,EAAE,CADQ;AACLC,QAAAA,KAAK,EAAE,CAAC,GAAD,EAAM,CAAN,EAAS,GAAT,EAAc,GAAd;AADF,OAAX;AADO,KAAV,CADA;AAMT,YAAQ,IAAIJ,YAAJ,CAAU;AACdK,MAAAA,KAAK,EAAE,IAAIC,WAAJ,CAAS;AACZC,QAAAA,MAAM,EAAE,CAAC,GAAD,EAAM,CAAN,CADI;AAEZC,QAAAA,GAAG,EAAE;AAFO,OAAT;AADO,KAAV,CANC;AAYT,eAAW,IAAIR,YAAJ,CAAU;AACjBK,MAAAA,KAAK,EAAE,IAAIC,WAAJ,CAAS;AACZC,QAAAA,MAAM,EAAE,CAAC,GAAD,EAAM,CAAN,CADI;AAEZC,QAAAA,GAAG,EAAE;AAFO,OAAT;AADU,KAAV,CAZF;AAkBT,iBAAa,IAAIR,YAAJ,CAAU;AACnBK,MAAAA,KAAK,EAAE,IAAII,aAAJ,CAAgB;AACnBC,QAAAA,MAAM,EAAE,CADW;AAEnBC,QAAAA,IAAI,EAAE,IAAIC,WAAJ,CAAS;AAAER,UAAAA,KAAK,EAAE;AAAT,SAAT,CAFa;AAGnBH,QAAAA,MAAM,EAAE,IAAIC,aAAJ,CAAW;AACfE,UAAAA,KAAK,EAAE,OADQ;AACCD,UAAAA,KAAK,EAAE;AADR,SAAX;AAHW,OAAhB;AADY,KAAV;AAlBJ,GAAb;AA6BA,MAAIU,SAAS,GAAG,KAAhB;AACA,MAAIC,KAAJ,EAAWC,GAAX;AACA,MAAIC,UAAU,GAAG3D,QAAQ,CAACC,cAAT,CAAwB,OAAxB,CAAjB;AACA,MAAI2D,WAAW,GAAG5D,QAAQ,CAACC,cAAT,CAAwB,iBAAxB,CAAlB;AAEA,MAAI4D,WAAW,GAAG,IAAIC,aAAJ,CAAgB;AAC9BC,IAAAA,MAAM,EAAE,IAAIC,cAAJ,CAAiB;AACrBC,MAAAA,QAAQ,EAAE,CAAC/B,YAAD,EAAeI,SAAf,EAA0BE,WAA1B,EAAuCC,SAAvC;AADW,KAAjB,CADsB;AAI9ByB,IAAAA,KAAK,EAAE,eAAUC,OAAV,EAAmB;AACtB;AACA,UAAIX,SAAS,IAAIW,OAAO,CAACC,GAAR,CAAY,MAAZ,MAAwB,WAAzC,EAAsD;AAClD,eAAO,IAAP;AACH;;AACD,aAAO1B,MAAM,CAACyB,OAAO,CAACC,GAAR,CAAY,MAAZ,CAAD,CAAb;AACH;AAV6B,GAAhB,CAAlB;AAaA,MAAIC,oBAAoB,GAAG,IAAIC,sBAAJ,CAAkB;AACzCC,IAAAA,gBAAgB,EAAE,gCAAe,CAAf,CADuB;AAEzCC,IAAAA,UAAU,EAAE,WAF6B;AAGzC;AACA;AACAC,IAAAA,SAAS,EAAE,uBAL8B;AAMzCC,IAAAA,MAAM,EAAE1E,QAAQ,CAACC,cAAT,CAAwB,gBAAxB,CANiC;AAOzC0E,IAAAA,aAAa,EAAE;AAP0B,GAAlB,CAA3B;AAUAhH,EAAAA,CAAC,CAAC,MAAD,CAAD,CAAUiH,KAAV;AACAjH,EAAAA,CAAC,CAAC,iBAAD,CAAD,CAAqBiH,KAArB,GA9JgB,CA+JjB;AACC;;AACA,MAAI9C,GAAG,GAAG,IAAI+C,YAAJ,CAAQ;AACdC,IAAAA,QAAQ,EAAE,CAAC1E,OAAD,CADI;AACM;AACpBsE,IAAAA,MAAM,EAAE1E,QAAQ,CAACC,cAAT,CAAwB,KAAxB,CAFM;AAGd8E,IAAAA,IAAI,EAAE,IAAIC,aAAJ,CAAS;AACX5D,MAAAA,MAAM,EAAEA,MADG;AAEX6D,MAAAA,IAAI,EAAE,EAFK;AAGXC,MAAAA,OAAO,EAAE,CAHE;AAIXC,MAAAA,OAAO,EAAE;AAJE,KAAT,CAHQ;AASdC,IAAAA,QAAQ,EAAE,yBAAkBC,MAAlB,CAAyB,CAAChB,oBAAD,CAAzB,CATI;AAUdiB,IAAAA,MAAM,EAAE,CACJ,IAAIC,aAAJ,CAAc;AACVxB,MAAAA,MAAM,EAAE,IAAIyB,YAAJ,CAAQ,EAAR;AADE,KAAd,CADI,EAMJ3B,WANI;AAVM,GAAR,CAAV;;AAyBA,WAAS4B,GAAT,CAAaC,GAAb,EAAkB;AACd,QAAIC,UAAU,GAAGD,GAAjB,CADc,CAEd;AACA;;AACA,QAAIE,IAAI,GAAGD,UAAU,CAAC,CAAD,CAArB;AACA,QAAIE,KAAK,GAAGF,UAAU,CAAC,CAAD,CAAtB;AACA,QAAIG,MAAM,GAAGH,UAAU,CAAC,CAAD,CAAvB,CANc,CAOd;;AACA,QAAII,KAAK,GAAGJ,UAAU,CAAC,CAAD,CAAtB;AACA,QAAIK,KAAK,GAAGL,UAAU,CAAC,CAAD,CAAtB,CATc,CAUf;;AACC,QAAIM,QAAQ,GAAC,EAAb,CAXc,CAad;;AACA/F,IAAAA,OAAO,CAAC+B,SAAR,GAAoBgE,QAAQ,GAAC,MAAT,GAAiB,SAAjB,GAA6BF,KAA7B,GAAqC,GAArC,GAA2CC,KAA3C,GAAmD,YAAnD,GAAkEF,MAAlE,GAA2E,kBAA/F;AAEA1F,IAAAA,OAAO,CAACO,WAAR,CAAoBgF,UAApB;AACH;;AAID,MAAIO,WAAW,GAAG,SAAdA,WAAc,CAAUC,KAAV,EAAiB;AAC/B,QAAIC,aAAa,GAAG,8BAAiBD,KAAjB,CAApB;AACA,QAAIE,UAAU,GAAGF,KAAK,CAACE,UAAvB;;AAEA,QAAI7C,SAAJ,EAAe;AACX,UAAI8C,WAAW,GAAGD,UAAU,CAACE,IAAX,GAAkB7C,GAApC,CADW,CAEX;AACA;AAEA;;AACA,UAAI5E,KAAK,GAAGyC,IAAI,CAACC,KAAL,CAAWiC,KAAK,GAAG6C,WAAR,GAAsB,IAAjC,CAAZ;;AAEA,UAAIxH,KAAK,IAAIqC,WAAb,EAA0B;AACtBqF,QAAAA,aAAa,CAAC,IAAD,CAAb;AACA;AACH;;AACDf,MAAAA,GAAG,CAACxE,WAAW,CAACnC,KAAD,CAAZ,CAAH;AACA,UAAI2H,YAAY,GAAG,IAAIlE,cAAJ,CAAUtB,WAAW,CAACnC,KAAD,CAArB,CAAnB;AACA,UAAIqF,OAAO,GAAG,IAAIhC,gBAAJ,CAAYsE,YAAZ,CAAd;AACAL,MAAAA,aAAa,CAACM,WAAd,CAA0BvC,OAA1B,EAAmCzB,MAAM,CAACJ,SAA1C;AACH,KApB8B,CAqB/B;;;AACAR,IAAAA,GAAG,CAAC6E,MAAJ;AACH,GAvBD;;AAyBA,WAASC,cAAT,GAA0B;AACtB,QAAIpD,SAAJ,EAAe;AACXgD,MAAAA,aAAa,CAAC,KAAD,CAAb;AACH,KAFD,MAEO;AACHhD,MAAAA,SAAS,GAAG,IAAZ;AACAE,MAAAA,GAAG,GAAG,IAAImD,IAAJ,GAAWC,OAAX,EAAN;AACArD,MAAAA,KAAK,GAAGE,UAAU,CAACoD,KAAnB;AACAnD,MAAAA,WAAW,CAACoD,WAAZ,GAA0B,aAA1B,CAJG,CAKH;;AACA1E,MAAAA,SAAS,CAAC2E,QAAV,CAAmB,IAAnB,EANG,CAOH;AACA;;AACApD,MAAAA,WAAW,CAACjG,EAAZ,CAAe,YAAf,EAA6BsI,WAA7B;AACApE,MAAAA,GAAG,CAAC6E,MAAJ;AACH;AACJ;AAGD;AACJ;AACA;;;AACI,WAASH,aAAT,CAAuBU,KAAvB,EAA8B;AAC1B1D,IAAAA,SAAS,GAAG,KAAZ;AACAI,IAAAA,WAAW,CAACoD,WAAZ,GAA0B,YAA1B,CAF0B,CAI1B;;AACA,QAAIG,KAAK,GAAGD,KAAK,GAAGjG,WAAW,CAACE,WAAW,GAAG,CAAf,CAAd,GAAkCF,WAAW,CAAC,CAAD,CAA9D;AACA,QAAIoB,QAAQ,GAAGC,SAAS,CAAC8E,WAAV,EAAf;AACA/E,IAAAA,QAAQ,CAACgF,cAAT,CAAwBF,KAAxB,EAP0B,CAQ1B;;AACAtD,IAAAA,WAAW,CAACyD,EAAZ,CAAe,YAAf,EAA6BpB,WAA7B;AACH;;AAEDtC,EAAAA,WAAW,CAAC2D,gBAAZ,CAA6B,OAA7B,EAAsCX,cAAtC,EAAsD,KAAtD;AAGH;;AAAA;;;AGtWD,IAAIyC,UAAU,GAAG,4BAAjB;AAEA,IAAIC,SAAS,GAAGF,MAAM,CAAClB,MAAP,CAAcqB,MAA9B;;AAEA,SAASA,MAAT,CAAgBC,UAAhB,EAA4B;AAC1BF,EAAAA,SAAS,CAACG,IAAV,CAAe,IAAf,EAAqBD,UAArB;AACA,OAAKE,GAAL,GAAW;AACTpL,IAAAA,IAAI,EAAE8K,MAAM,CAAClB,MAAP,CAAcyB,OADX;AAETC,IAAAA,gBAAgB,EAAE,EAFT;AAGTC,IAAAA,iBAAiB,EAAE,EAHV;AAITC,IAAAA,MAAM,EAAE,UAAUC,EAAV,EAAc;AACpB,WAAKH,gBAAL,CAAsBjK,IAAtB,CAA2BoK,EAAE,IAAI,YAAY,CAAE,CAA/C;AACD,KANQ;AAOTC,IAAAA,OAAO,EAAE,UAAUD,EAAV,EAAc;AACrB,WAAKF,iBAAL,CAAuBlK,IAAvB,CAA4BoK,EAA5B;AACD;AATQ,GAAX;AAYAX,EAAAA,MAAM,CAAClB,MAAP,CAAcyB,OAAd,GAAwB,IAAxB;AACD;;AAEDP,MAAM,CAAClB,MAAP,CAAcqB,MAAd,GAAuBA,MAAvB;AACA,IAAIU,aAAJ,EAAmBC,cAAnB;AAEA,IAAIC,MAAM,GAAGf,MAAM,CAAClB,MAAP,CAAciC,MAA3B;;AACA,IAAI,CAAC,CAACA,MAAD,IAAW,CAACA,MAAM,CAACC,eAApB,KAAwC,OAAOC,SAAP,KAAqB,WAAjE,EAA8E;AAC5E,MAAIC,QAAQ,GAAG,MAA4BC,QAAQ,CAACD,QAApD;AACA,MAAIE,QAAQ,GAAGD,QAAQ,CAACC,QAAT,KAAsB,QAAtB,GAAiC,KAAjC,GAAyC,IAAxD;AACA,MAAIC,EAAE,GAAG,IAAIJ,SAAJ,CAAcG,QAAQ,GAAG,KAAX,GAAmBF,QAAnB,GAA8B,GAA9B,aAA2D,GAAzE,CAAT;;AACAG,EAAAA,EAAE,CAACC,SAAH,GAAe,UAASvE,KAAT,EAAgB;AAC7B8D,IAAAA,aAAa,GAAG,EAAhB;AACAC,IAAAA,cAAc,GAAG,EAAjB;AAEA,QAAI5L,IAAI,GAAGqM,IAAI,CAACC,KAAL,CAAWzE,KAAK,CAAC7H,IAAjB,CAAX;;AAEA,QAAIA,IAAI,CAAC8D,IAAL,KAAc,QAAlB,EAA4B;AAC1B,UAAIyI,OAAO,GAAG,KAAd;AACAvM,MAAAA,IAAI,CAACwM,MAAL,CAAYC,OAAZ,CAAoB,UAASC,KAAT,EAAgB;AAClC,YAAI,CAACA,KAAK,CAACC,KAAX,EAAkB;AAChB,cAAIC,SAAS,GAAGC,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBL,KAAK,CAACM,EAA7B,CAA9B;;AACA,cAAIJ,SAAJ,EAAe;AACbL,YAAAA,OAAO,GAAG,IAAV;AACD;AACF;AACF,OAPD,EAF0B,CAW1B;;AACAA,MAAAA,OAAO,GAAGA,OAAO,IAAIvM,IAAI,CAACwM,MAAL,CAAYS,KAAZ,CAAkB,UAASP,KAAT,EAAgB;AACrD,eAAOA,KAAK,CAAC5I,IAAN,KAAe,KAAf,IAAwB4I,KAAK,CAACQ,SAAN,CAAgBC,EAA/C;AACD,OAFoB,CAArB;;AAIA,UAAIZ,OAAJ,EAAa;AACXa,QAAAA,OAAO,CAACC,KAAR;AAEArN,QAAAA,IAAI,CAACwM,MAAL,CAAYC,OAAZ,CAAoB,UAAUC,KAAV,EAAiB;AACnCY,UAAAA,QAAQ,CAACR,MAAM,CAACC,aAAR,EAAuBL,KAAvB,CAAR;AACD,SAFD;AAIAd,QAAAA,cAAc,CAACa,OAAf,CAAuB,UAAUc,CAAV,EAAa;AAClCC,UAAAA,YAAY,CAACD,CAAC,CAAC,CAAD,CAAF,EAAOA,CAAC,CAAC,CAAD,CAAR,CAAZ;AACD,SAFD;AAGD,OAVD,MAUO,IAAItB,QAAQ,CAACwB,MAAb,EAAqB;AAAE;AAC5BxB,QAAAA,QAAQ,CAACwB,MAAT;AACD;AACF;;AAED,QAAIzN,IAAI,CAAC8D,IAAL,KAAc,QAAlB,EAA4B;AAC1BqI,MAAAA,EAAE,CAACuB,KAAH;;AACAvB,MAAAA,EAAE,CAACwB,OAAH,GAAa,YAAY;AACvB1B,QAAAA,QAAQ,CAACwB,MAAT;AACD,OAFD;AAGD;;AAED,QAAIzN,IAAI,CAAC8D,IAAL,KAAc,gBAAlB,EAAoC;AAClCsJ,MAAAA,OAAO,CAACQ,GAAR,CAAY,2BAAZ;AAEAC,MAAAA,kBAAkB;AACnB;;AAED,QAAI7N,IAAI,CAAC8D,IAAL,KAAc,OAAlB,EAA2B;AACzBsJ,MAAAA,OAAO,CAAC9L,KAAR,CAAc,kBAAkBtB,IAAI,CAACsB,KAAL,CAAWwM,OAA7B,GAAuC,IAAvC,GAA8C9N,IAAI,CAACsB,KAAL,CAAWiI,KAAvE;AAEAsE,MAAAA,kBAAkB;AAElB,UAAI/L,OAAO,GAAGiM,kBAAkB,CAAC/N,IAAD,CAAhC;AACA0B,MAAAA,QAAQ,CAACsM,IAAT,CAAcC,WAAd,CAA0BnM,OAA1B;AACD;AACF,GA1DD;AA2DD;;AAED,SAAS+L,kBAAT,GAA8B;AAC5B,MAAI/L,OAAO,GAAGJ,QAAQ,CAACC,cAAT,CAAwBoJ,UAAxB,CAAd;;AACA,MAAIjJ,OAAJ,EAAa;AACXA,IAAAA,OAAO,CAACqI,MAAR;AACD;AACF;;AAED,SAAS4D,kBAAT,CAA4B/N,IAA5B,EAAkC;AAChC,MAAI8B,OAAO,GAAGJ,QAAQ,CAACwM,aAAT,CAAuB,KAAvB,CAAd;AACApM,EAAAA,OAAO,CAACkL,EAAR,GAAajC,UAAb,CAFgC,CAIhC;;AACA,MAAI+C,OAAO,GAAGpM,QAAQ,CAACwM,aAAT,CAAuB,KAAvB,CAAd;AACA,MAAIC,UAAU,GAAGzM,QAAQ,CAACwM,aAAT,CAAuB,KAAvB,CAAjB;AACAJ,EAAAA,OAAO,CAACM,SAAR,GAAoBpO,IAAI,CAACsB,KAAL,CAAWwM,OAA/B;AACAK,EAAAA,UAAU,CAACC,SAAX,GAAuBpO,IAAI,CAACsB,KAAL,CAAWiI,KAAlC;AAEAzH,EAAAA,OAAO,CAAC6B,SAAR,GACE,2NACE,mFADF,GAEE,yEAFF,GAGE,qEAHF,GAG0EmK,OAAO,CAACnK,SAHlF,GAG8F,QAH9F,GAIE,OAJF,GAIYwK,UAAU,CAACxK,SAJvB,GAImC,QAJnC,GAKA,QANF;AASA,SAAO7B,OAAP;AAED;;AAED,SAASuM,UAAT,CAAoBzE,MAApB,EAA4BoD,EAA5B,EAAgC;AAC9B,MAAIsB,OAAO,GAAG1E,MAAM,CAAC0E,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ,WAAO,EAAP;AACD;;AAED,MAAIC,OAAO,GAAG,EAAd;AACA,MAAIC,CAAJ,EAAOC,CAAP,EAAUC,GAAV;;AAEA,OAAKF,CAAL,IAAUF,OAAV,EAAmB;AACjB,SAAKG,CAAL,IAAUH,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,CAAV,EAAyB;AACvBE,MAAAA,GAAG,GAAGJ,OAAO,CAACE,CAAD,CAAP,CAAW,CAAX,EAAcC,CAAd,CAAN;;AACA,UAAIC,GAAG,KAAK1B,EAAR,IAAerM,KAAK,CAACgO,OAAN,CAAcD,GAAd,KAAsBA,GAAG,CAACA,GAAG,CAAClP,MAAJ,GAAa,CAAd,CAAH,KAAwBwN,EAAjE,EAAsE;AACpEuB,QAAAA,OAAO,CAAClN,IAAR,CAAamN,CAAb;AACD;AACF;AACF;;AAED,MAAI5E,MAAM,CAACiC,MAAX,EAAmB;AACjB0C,IAAAA,OAAO,GAAGA,OAAO,CAACK,MAAR,CAAeP,UAAU,CAACzE,MAAM,CAACiC,MAAR,EAAgBmB,EAAhB,CAAzB,CAAV;AACD;;AAED,SAAOuB,OAAP;AACD;;AAED,SAASjB,QAAT,CAAkB1D,MAAlB,EAA0B8C,KAA1B,EAAiC;AAC/B,MAAI4B,OAAO,GAAG1E,MAAM,CAAC0E,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAIA,OAAO,CAAC5B,KAAK,CAACM,EAAP,CAAP,IAAqB,CAACpD,MAAM,CAACiC,MAAjC,EAAyC;AACvC,QAAIJ,EAAE,GAAG,IAAIoD,QAAJ,CAAa,SAAb,EAAwB,QAAxB,EAAkC,SAAlC,EAA6CnC,KAAK,CAACQ,SAAN,CAAgBC,EAA7D,CAAT;AACAT,IAAAA,KAAK,CAACC,KAAN,GAAc,CAAC2B,OAAO,CAAC5B,KAAK,CAACM,EAAP,CAAtB;AACAsB,IAAAA,OAAO,CAAC5B,KAAK,CAACM,EAAP,CAAP,GAAoB,CAACvB,EAAD,EAAKiB,KAAK,CAACoC,IAAX,CAApB;AACD,GAJD,MAIO,IAAIlF,MAAM,CAACiC,MAAX,EAAmB;AACxByB,IAAAA,QAAQ,CAAC1D,MAAM,CAACiC,MAAR,EAAgBa,KAAhB,CAAR;AACD;AACF;;AAED,SAASG,cAAT,CAAwBjD,MAAxB,EAAgCoD,EAAhC,EAAoC;AAClC,MAAIsB,OAAO,GAAG1E,MAAM,CAAC0E,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,MAAI,CAACA,OAAO,CAACtB,EAAD,CAAR,IAAgBpD,MAAM,CAACiC,MAA3B,EAAmC;AACjC,WAAOgB,cAAc,CAACjD,MAAM,CAACiC,MAAR,EAAgBmB,EAAhB,CAArB;AACD;;AAED,MAAIrB,aAAa,CAACqB,EAAD,CAAjB,EAAuB;AACrB;AACD;;AACDrB,EAAAA,aAAa,CAACqB,EAAD,CAAb,GAAoB,IAApB;AAEA,MAAI+B,MAAM,GAAGnF,MAAM,CAACoF,KAAP,CAAahC,EAAb,CAAb;AAEApB,EAAAA,cAAc,CAACvK,IAAf,CAAoB,CAACuI,MAAD,EAASoD,EAAT,CAApB;;AAEA,MAAI+B,MAAM,IAAIA,MAAM,CAAC3D,GAAjB,IAAwB2D,MAAM,CAAC3D,GAAP,CAAWE,gBAAX,CAA4B9L,MAAxD,EAAgE;AAC9D,WAAO,IAAP;AACD;;AAED,SAAO6O,UAAU,CAACvB,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAAV,CAAqCiC,IAArC,CAA0C,UAAUjC,EAAV,EAAc;AAC7D,WAAOH,cAAc,CAACC,MAAM,CAACC,aAAR,EAAuBC,EAAvB,CAArB;AACD,GAFM,CAAP;AAGD;;AAED,SAASQ,YAAT,CAAsB5D,MAAtB,EAA8BoD,EAA9B,EAAkC;AAChC,MAAI+B,MAAM,GAAGnF,MAAM,CAACoF,KAAP,CAAahC,EAAb,CAAb;AACApD,EAAAA,MAAM,CAACyB,OAAP,GAAiB,EAAjB;;AACA,MAAI0D,MAAJ,EAAY;AACVA,IAAAA,MAAM,CAAC3D,GAAP,CAAWpL,IAAX,GAAkB4J,MAAM,CAACyB,OAAzB;AACD;;AAED,MAAI0D,MAAM,IAAIA,MAAM,CAAC3D,GAAjB,IAAwB2D,MAAM,CAAC3D,GAAP,CAAWG,iBAAX,CAA6B/L,MAAzD,EAAiE;AAC/DuP,IAAAA,MAAM,CAAC3D,GAAP,CAAWG,iBAAX,CAA6BkB,OAA7B,CAAqC,UAAUyC,EAAV,EAAc;AACjDA,MAAAA,EAAE,CAACtF,MAAM,CAACyB,OAAR,CAAF;AACD,KAFD;AAGD;;AAED,SAAOzB,MAAM,CAACoF,KAAP,CAAahC,EAAb,CAAP;AACApD,EAAAA,MAAM,CAACoD,EAAD,CAAN;AAEA+B,EAAAA,MAAM,GAAGnF,MAAM,CAACoF,KAAP,CAAahC,EAAb,CAAT;;AACA,MAAI+B,MAAM,IAAIA,MAAM,CAAC3D,GAAjB,IAAwB2D,MAAM,CAAC3D,GAAP,CAAWE,gBAAX,CAA4B9L,MAAxD,EAAgE;AAC9DuP,IAAAA,MAAM,CAAC3D,GAAP,CAAWE,gBAAX,CAA4BmB,OAA5B,CAAoC,UAAUyC,EAAV,EAAc;AAChDA,MAAAA,EAAE;AACH,KAFD;;AAGA,WAAO,IAAP;AACD;AACF","file":"route.ae16199e.js","sourceRoot":"..","sourcesContent":["/**\n * @module ol/util\n */\n\n/**\n * @return {?} Any return.\n */\nexport function abstract() {\n return /** @type {?} */ ((function() {\n throw new Error('Unimplemented abstract method.');\n })());\n}\n\n/**\n * Counter for getUid.\n * @type {number}\n * @private\n */\nlet uidCounter_ = 0;\n\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. Unique IDs are generated\n * as a strictly increasing sequence. Adapted from goog.getUid.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {string} The unique ID for the object.\n * @api\n */\nexport function getUid(obj) {\n return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));\n}\n\n/**\n * OpenLayers version.\n * @type {string}\n */\nexport const VERSION = 'latest';\n","/**\n * @module ol/AssertionError\n */\nimport {VERSION} from './util.js';\n\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nclass AssertionError extends Error {\n\n /**\n * @param {number} code Error code.\n */\n constructor(code) {\n const path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n const message = 'Assertion failed. See https://openlayers.org/en/' + path +\n '/doc/errors/#' + code + ' for details.';\n\n super(message);\n\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n this.code = code;\n\n /**\n * @type {string}\n */\n this.name = 'AssertionError';\n\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n this.message = message;\n }\n\n}\n\nexport default AssertionError;\n","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n","/**\n * @module ol/obj\n */\n\n\n/**\n * Polyfill for Object.assign(). Assigns enumerable and own properties from\n * one or more source objects to a target object.\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.\n *\n * @param {!Object} target The target object.\n * @param {...Object} var_sources The source object(s).\n * @return {!Object} The modified target object.\n */\nexport const assign = (typeof Object.assign === 'function') ? Object.assign : function(target, var_sources) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n const output = Object(target);\n for (let i = 1, ii = arguments.length; i < ii; ++i) {\n const source = arguments[i];\n if (source !== undefined && source !== null) {\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n return output;\n};\n\n\n/**\n * Removes all properties from an object.\n * @param {Object} object The object to clear.\n */\nexport function clear(object) {\n for (const property in object) {\n delete object[property];\n }\n}\n\n\n/**\n * Polyfill for Object.values(). Get an array of property values from an object.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n *\n * @param {!Object} object The object from which to get the values.\n * @return {!Array} The property values.\n * @template K,V\n */\nexport const getValues = (typeof Object.values === 'function') ? Object.values : function(object) {\n const values = [];\n for (const property in object) {\n values.push(object[property]);\n }\n return values;\n};\n\n\n/**\n * Determine if an object has any properties.\n * @param {Object} object The object to check.\n * @return {boolean} The object is empty.\n */\nexport function isEmpty(object) {\n let property;\n for (property in object) {\n return false;\n }\n return !property;\n}\n","/**\n * @module ol/events\n */\nimport {clear} from './obj.js';\n\n\n/**\n * Key to use with {@link module:ol/Observable~Observable#unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener\n * @property {import(\"./events/Target.js\").EventTargetLike} target\n * @property {string} type\n * @api\n */\n\n\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n\n\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events~unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean=} opt_once If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, opt_this, opt_once) {\n if (opt_this && opt_this !== target) {\n listener = listener.bind(opt_this);\n }\n if (opt_once) {\n const originalListener = listener;\n listener = function() {\n target.removeEventListener(type, listener);\n originalListener.apply(this, arguments);\n };\n }\n const eventsKey = {\n target: target,\n type: type,\n listener: listener\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n\n\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events~unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events~listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, opt_this) {\n return listen(target, type, listener, opt_this, true);\n}\n\n\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events~listen} or {@link module:ol/events~listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n","/**\n * @module ol/events/EventType\n */\n\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n WHEEL: 'wheel'\n};\n","/**\n * @module ol/ObjectEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange'\n};\n","/**\n * @module ol/Disposable\n */\n\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nclass Disposable {\n\n constructor() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @private\n */\n this.disposed_ = false;\n }\n\n /**\n * Clean up.\n */\n dispose() {\n if (!this.disposed_) {\n this.disposed_ = true;\n this.disposeInternal();\n }\n }\n\n /**\n * Extension point for disposable objects.\n * @protected\n */\n disposeInternal() {}\n}\n\nexport default Disposable;\n","/**\n * @module ol/array\n */\n\n\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function=} opt_comparator Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, opt_comparator) {\n let mid, cmp;\n const comparator = opt_comparator || numberSafeCompareFunction;\n let low = 0;\n let high = haystack.length;\n let found = false;\n\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + (high - low >> 1);\n cmp = +comparator(haystack[mid], needle);\n\n if (cmp < 0.0) { /* Too low. */\n low = mid + 1;\n\n } else { /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n\n /* Key not found. */\n return found ? low : ~low;\n}\n\n\n/**\n * Compare function for array sort that is safe for numbers.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function numberSafeCompareFunction(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\n\n/**\n * Whether the array contains the given object.\n * @param {Array<*>} arr The array to test for the presence of the element.\n * @param {*} obj The object for which to test.\n * @return {boolean} The object is in the array.\n */\nexport function includes(arr, obj) {\n return arr.indexOf(obj) >= 0;\n}\n\n\n/**\n * @param {Array} arr Array.\n * @param {number} target Target.\n * @param {number} direction 0 means return the nearest, > 0\n * means return the largest nearest, < 0 means return the\n * smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n const n = arr.length;\n if (arr[0] <= target) {\n return 0;\n } else if (target <= arr[n - 1]) {\n return n - 1;\n } else {\n let i;\n if (direction > 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n } else if (direction < 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n } else {\n for (i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n } else if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n } else {\n return i;\n }\n }\n }\n }\n return n - 1;\n }\n}\n\n\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n const tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n\n\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n const extension = Array.isArray(data) ? data : [data];\n const length = extension.length;\n for (let i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n\n\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n const i = arr.indexOf(obj);\n const found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n\n\n/**\n * @param {Array} arr The array to search in.\n * @param {function(VALUE, number, ?) : boolean} func The function to compare.\n * @template VALUE\n * @return {VALUE|null} The element found or null.\n */\nexport function find(arr, func) {\n const length = arr.length >>> 0;\n let value;\n\n for (let i = 0; i < length; i++) {\n value = arr[i];\n if (func(value, i, arr)) {\n return value;\n }\n }\n return null;\n}\n\n\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n const len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (let i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\n\n/**\n * Sort the passed array such that the relative order of equal elements is preverved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n const length = arr.length;\n const tmp = Array(arr.length);\n let i;\n for (i = 0; i < length; i++) {\n tmp[i] = {index: i, value: arr[i]};\n }\n tmp.sort(function(a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n\n\n/**\n * @param {Array<*>} arr The array to search in.\n * @param {Function} func Comparison function.\n * @return {number} Return index.\n */\nexport function findIndex(arr, func) {\n let index;\n const found = !arr.every(function(el, idx) {\n index = idx;\n return !func(el, idx, arr);\n });\n return found ? index : -1;\n}\n\n\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function=} opt_func Comparison function.\n * @param {boolean=} opt_strict Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, opt_func, opt_strict) {\n const compare = opt_func || numberSafeCompareFunction;\n return arr.every(function(currentVal, index) {\n if (index === 0) {\n return true;\n }\n const res = compare(arr[index - 1], currentVal);\n return !(res > 0 || opt_strict && res === 0);\n });\n}\n","/**\n * @module ol/functions\n */\n\nimport {equals as arrayEquals} from './array.js';\n\n/**\n * Always returns true.\n * @returns {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n\n/**\n * Always returns false.\n * @returns {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() {}\n\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n let called = false;\n\n /** @type {ReturnType} */\n let lastResult;\n\n /** @type {Array} */\n let lastArgs;\n\n let lastThis;\n\n return function() {\n const nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n","/**\n * @module ol/events/Event\n */\n\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nclass BaseEvent {\n\n /**\n * @param {string} type Type.\n */\n constructor(type) {\n\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n\n /**\n * Stop event propagation.\n * @api\n */\n preventDefault() {\n this.propagationStopped = true;\n }\n\n /**\n * Stop event propagation.\n * @api\n */\n stopPropagation() {\n this.propagationStopped = true;\n }\n\n}\n\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\n\nexport default BaseEvent;\n","/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport {VOID} from '../functions.js';\nimport Event from './Event.js';\nimport {clear} from '../obj.js';\n\n\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n\n\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nclass Target extends Disposable {\n\n /**\n * @param {*=} opt_target Default event target for dispatched events.\n */\n constructor(opt_target) {\n\n super();\n\n /**\n * @private\n * @type {*}\n */\n this.eventTarget_ = opt_target;\n\n /**\n * @private\n * @type {!Object}\n */\n this.pendingRemovals_ = {};\n\n /**\n * @private\n * @type {!Object}\n */\n this.dispatching_ = {};\n\n /**\n * @private\n * @type {!Object>}\n */\n this.listeners_ = {};\n\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").ListenerFunction} listener Listener.\n */\n addEventListener(type, listener) {\n if (!type || !listener) {\n return;\n }\n let listeners = this.listeners_[type];\n if (!listeners) {\n listeners = [];\n this.listeners_[type] = listeners;\n }\n if (listeners.indexOf(listener) === -1) {\n listeners.push(listener);\n }\n }\n\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {{type: string,\n * target: (EventTargetLike|undefined),\n * propagationStopped: (boolean|undefined)}|\n * import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n dispatchEvent(event) {\n const evt = typeof event === 'string' ? new Event(event) : event;\n const type = evt.type;\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n const listeners = this.listeners_[type];\n let propagate;\n if (listeners) {\n if (!(type in this.dispatching_)) {\n this.dispatching_[type] = 0;\n this.pendingRemovals_[type] = 0;\n }\n ++this.dispatching_[type];\n for (let i = 0, ii = listeners.length; i < ii; ++i) {\n if (listeners[i].call(this, evt) === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n --this.dispatching_[type];\n if (this.dispatching_[type] === 0) {\n let pendingRemovals = this.pendingRemovals_[type];\n delete this.pendingRemovals_[type];\n while (pendingRemovals--) {\n this.removeEventListener(type, VOID);\n }\n delete this.dispatching_[type];\n }\n return propagate;\n }\n }\n\n /**\n * @inheritDoc\n */\n disposeInternal() {\n clear(this.listeners_);\n }\n\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array} Listeners.\n */\n getListeners(type) {\n return this.listeners_[type];\n }\n\n /**\n * @param {string=} opt_type Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n hasListener(opt_type) {\n return opt_type ?\n opt_type in this.listeners_ :\n Object.keys(this.listeners_).length > 0;\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").ListenerFunction} listener Listener.\n */\n removeEventListener(type, listener) {\n const listeners = this.listeners_[type];\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n if (type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n } else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n }\n}\n\n\nexport default Target;\n","/**\n * @module ol/Observable\n */\nimport {listen, unlistenByKey, listenOnce} from './events.js';\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nclass Observable extends EventTarget {\n constructor() {\n\n super();\n\n /**\n * @private\n * @type {number}\n */\n this.revision_ = 0;\n\n }\n\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n changed() {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n getRevision() {\n return this.revision_;\n }\n\n /**\n * Listen for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n on(type, listener) {\n if (Array.isArray(type)) {\n const len = type.length;\n const keys = new Array(len);\n for (let i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n } else {\n return listen(this, /** @type {string} */ (type), listener);\n }\n }\n\n /**\n * Listen once for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n once(type, listener) {\n if (Array.isArray(type)) {\n const len = type.length;\n const keys = new Array(len);\n for (let i = 0; i < len; ++i) {\n keys[i] = listenOnce(this, type[i], listener);\n }\n return keys;\n } else {\n return listenOnce(this, /** @type {string} */ (type), listener);\n }\n }\n\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @api\n */\n un(type, listener) {\n if (Array.isArray(type)) {\n for (let i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n } else {\n this.removeEventListener(type, listener);\n }\n }\n}\n\n\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (let i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n } else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\n\n\nexport default Observable;\n","/**\n * @module ol/Object\n */\nimport {getUid} from './util.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport Event from './events/Event.js';\nimport {assign} from './obj.js';\n\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nexport class ObjectEvent extends Event {\n\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n constructor(type, key, oldValue) {\n super(type);\n\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n this.key = key;\n\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n this.oldValue = oldValue;\n\n }\n\n}\n\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nclass BaseObject extends Observable {\n\n /**\n * @param {Object=} opt_values An object with key-value pairs.\n */\n constructor(opt_values) {\n super();\n\n // Call {@link module:ol/util~getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(this);\n\n /**\n * @private\n * @type {!Object}\n */\n this.values_ = {};\n\n if (opt_values !== undefined) {\n this.setProperties(opt_values);\n }\n }\n\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n get(key) {\n let value;\n if (this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n }\n\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n getKeys() {\n return Object.keys(this.values_);\n }\n\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n getProperties() {\n return assign({}, this.values_);\n }\n\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n notify(key, oldValue) {\n let eventType;\n eventType = getChangeEventType(key);\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n eventType = ObjectEventType.PROPERTYCHANGE;\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n set(key, value, opt_silent) {\n if (opt_silent) {\n this.values_[key] = value;\n } else {\n const oldValue = this.values_[key];\n this.values_[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n }\n\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n setProperties(values, opt_silent) {\n for (const key in values) {\n this.set(key, values[key], opt_silent);\n }\n }\n\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean=} opt_silent Unset without triggering an event.\n * @api\n */\n unset(key, opt_silent) {\n if (key in this.values_) {\n const oldValue = this.values_[key];\n delete this.values_[key];\n if (!opt_silent) {\n this.notify(key, oldValue);\n }\n }\n }\n}\n\n\n/**\n * @type {Object}\n */\nconst changeEventTypeCache = {};\n\n\n/**\n * @param {string} key Key name.\n * @return {string} Change name.\n */\nexport function getChangeEventType(key) {\n return changeEventTypeCache.hasOwnProperty(key) ?\n changeEventTypeCache[key] :\n (changeEventTypeCache[key] = 'change:' + key);\n}\n\n\nexport default BaseObject;\n","/**\n * @module ol/Feature\n */\nimport {assert} from './asserts.js';\nimport {listen, unlistenByKey} from './events.js';\nimport EventType from './events/EventType.js';\nimport BaseObject, {getChangeEventType} from './Object.js';\n\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature';\n * import Polygon from 'ol/geom/Polygon';\n * import Point from 'ol/geom/Point';\n *\n * var feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon'\n * });\n *\n * // get the polygon geometry\n * var poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * var point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} Geometry\n */\nclass Feature extends BaseObject {\n /**\n * @param {Geometry|Object=} opt_geometryOrProperties\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n constructor(opt_geometryOrProperties) {\n\n super();\n\n /**\n * @private\n * @type {number|string|undefined}\n */\n this.id_ = undefined;\n\n /**\n * @type {string}\n * @private\n */\n this.geometryName_ = 'geometry';\n\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n this.style_ = null;\n\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n this.styleFunction_ = undefined;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.geometryChangeKey_ = null;\n\n this.addEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n\n if (opt_geometryOrProperties) {\n if (typeof /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry === 'function') {\n const geometry = /** @type {Geometry} */ (opt_geometryOrProperties);\n this.setGeometry(geometry);\n } else {\n /** @type {Object} */\n const properties = opt_geometryOrProperties;\n this.setProperties(properties);\n }\n }\n }\n\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n clone() {\n const clone = new Feature(this.getProperties());\n clone.setGeometryName(this.getGeometryName());\n const geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(geometry.clone());\n }\n const style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n }\n\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n getGeometry() {\n return (\n /** @type {Geometry|undefined} */ (this.get(this.geometryName_))\n );\n }\n\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id_;\n }\n\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n getGeometryName() {\n return this.geometryName_;\n }\n\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike} The feature style.\n * @api\n */\n getStyle() {\n return this.style_;\n }\n\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n getStyleFunction() {\n return this.styleFunction_;\n }\n\n /**\n * @private\n */\n handleGeometryChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleGeometryChanged_() {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n const geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(geometry,\n EventType.CHANGE, this.handleGeometryChange_, this);\n }\n this.changed();\n }\n\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n setGeometry(geometry) {\n this.set(this.geometryName_, geometry);\n }\n\n /**\n * Set the style for the feature. This can be a single style object, an array\n * of styles, or a function that takes a resolution and returns an array of\n * styles. If it is `null` the feature has no style (a `null` style).\n * @param {import(\"./style/Style.js\").StyleLike} style Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setStyle(style) {\n this.style_ = style;\n this.styleFunction_ = !style ? undefined : createStyleFunction(style);\n this.changed();\n }\n\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setId(id) {\n this.id_ = id;\n this.changed();\n }\n\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n setGeometryName(name) {\n this.removeEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n }\n}\n\n\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n } else {\n /**\n * @type {Array}\n */\n let styles;\n if (Array.isArray(obj)) {\n styles = obj;\n } else {\n assert(typeof /** @type {?} */ (obj).getZIndex === 'function',\n 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n const style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles = [style];\n }\n return function() {\n return styles;\n };\n }\n}\nexport default Feature;\n","/**\n * @module ol/CollectionEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove'\n};\n","/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport BaseObject from './Object.js';\nimport Event from './events/Event.js';\n\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n LENGTH: 'length'\n};\n\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n */\nexport class CollectionEvent extends Event {\n\n /**\n * @param {CollectionEventType} type Type.\n * @param {*=} opt_element Element.\n * @param {number} opt_index The index of the added or removed element.\n */\n constructor(type, opt_element, opt_index) {\n super(type);\n\n /**\n * The element that is added to or removed from the collection.\n * @type {*}\n * @api\n */\n this.element = opt_element;\n\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n this.index = opt_index;\n }\n\n}\n\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nclass Collection extends BaseObject {\n\n /**\n * @param {Array=} opt_array Array.\n * @param {Options=} opt_options Collection options.\n */\n constructor(opt_array, opt_options) {\n\n super();\n\n const options = opt_options || {};\n\n /**\n * @private\n * @type {boolean}\n */\n this.unique_ = !!options.unique;\n\n /**\n * @private\n * @type {!Array}\n */\n this.array_ = opt_array ? opt_array : [];\n\n if (this.unique_) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n this.assertUnique_(this.array_[i], i);\n }\n }\n\n this.updateLength_();\n\n }\n\n /**\n * Remove all elements from the collection.\n * @api\n */\n clear() {\n while (this.getLength() > 0) {\n this.pop();\n }\n }\n\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n extend(arr) {\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n }\n\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n forEach(f) {\n const array = this.array_;\n for (let i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n }\n\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n getArray() {\n return this.array_;\n }\n\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n item(index) {\n return this.array_[index];\n }\n\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n getLength() {\n return this.get(Property.LENGTH);\n }\n\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n insertAt(index, elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.ADD, elem, index));\n }\n\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n pop() {\n return this.removeAt(this.getLength() - 1);\n }\n\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n push(elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n const n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n }\n\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n remove(elem) {\n const arr = this.array_;\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n }\n\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n removeAt(index) {\n const prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n return prev;\n }\n\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n setAt(index, elem) {\n const n = this.getLength();\n if (index < n) {\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n const prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.ADD, elem, index));\n } else {\n for (let j = n; j < index; ++j) {\n this.insertAt(j, undefined);\n }\n this.insertAt(index, elem);\n }\n }\n\n /**\n * @private\n */\n updateLength_() {\n this.set(Property.LENGTH, this.array_.length);\n }\n\n /**\n * @private\n * @param {T} elem Element.\n * @param {number=} opt_except Optional index to ignore.\n */\n assertUnique_(elem, opt_except) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== opt_except) {\n throw new AssertionError(58);\n }\n }\n }\n}\n\n\nexport default Collection;\n","/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map event.\n */\nclass MapEvent extends Event {\n\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n constructor(type, map, opt_frameState) {\n\n super(type);\n\n /**\n * The map where the event occurred.\n * @type {import(\"./PluggableMap.js\").default}\n * @api\n */\n this.map = map;\n\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./PluggableMap.js\").FrameState}\n * @api\n */\n this.frameState = opt_frameState !== undefined ? opt_frameState : null;\n\n }\n\n}\n\nexport default MapEvent;\n","/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map browser event.\n */\nclass MapBrowserEvent extends MapEvent {\n\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {Event} browserEvent Browser event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n constructor(type, map, browserEvent, opt_dragging, opt_frameState) {\n\n super(type, map, opt_frameState);\n\n /**\n * The original browser event.\n * @const\n * @type {Event}\n * @api\n */\n this.originalEvent = browserEvent;\n\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {?import(\"./pixel.js\").Pixel}\n */\n this.pixel_ = null;\n\n /**\n * The coordinate in the user projection corresponding to the original browser event.\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n this.coordinate_ = null;\n\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n this.dragging = opt_dragging !== undefined ? opt_dragging : false;\n\n }\n\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get pixel() {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n }\n set pixel(pixel) {\n this.pixel_ = pixel;\n }\n\n /**\n * The coordinate corresponding to the original browser event. This will be in the user\n * projection if one is set. Otherwise it will be in the view projection.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n get coordinate() {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n }\n set coordinate(coordinate) {\n this.coordinate_ = coordinate;\n }\n\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @override\n * @api\n */\n preventDefault() {\n super.preventDefault();\n this.originalEvent.preventDefault();\n }\n\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @override\n * @api\n */\n stopPropagation() {\n super.stopPropagation();\n this.originalEvent.stopPropagation();\n }\n}\n\n\nexport default MapBrowserEvent;\n","/*!\n * PEP v0.5.3 | https://github.com/jquery/PEP\n * Copyright jQuery Foundation and other contributors | http://jquery.org/license\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.PointerEventsPolyfill = factory());\n}(this, function () { 'use strict';\n\n /**\n * This is the constructor for new PointerEvents.\n *\n * New Pointer Events must be given a type, and an optional dictionary of\n * initialization properties.\n *\n * Due to certain platform requirements, events returned from the constructor\n * identify as MouseEvents.\n *\n * @constructor\n * @param {String} inType The type of the event to create.\n * @param {Object} [inDict] An optional dictionary of initial event properties.\n * @return {Event} A new PointerEvent of type `inType`, initialized with properties from `inDict`.\n */\n var MOUSE_PROPS = [\n 'bubbles',\n 'cancelable',\n 'view',\n 'screenX',\n 'screenY',\n 'clientX',\n 'clientY',\n 'ctrlKey',\n 'altKey',\n 'shiftKey',\n 'metaKey',\n 'button',\n 'relatedTarget',\n 'pageX',\n 'pageY'\n ];\n\n var MOUSE_DEFAULTS = [\n false,\n false,\n null,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n false,\n 0,\n null,\n 0,\n 0\n ];\n\n function PointerEvent(inType, inDict) {\n inDict = inDict || Object.create(null);\n\n var e = document.createEvent('Event');\n e.initEvent(inType, inDict.bubbles || false, inDict.cancelable || false);\n\n // define inherited MouseEvent properties\n // skip bubbles and cancelable since they're set above in initEvent()\n for (var i = 2, p; i < MOUSE_PROPS.length; i++) {\n p = MOUSE_PROPS[i];\n e[p] = inDict[p] || MOUSE_DEFAULTS[i];\n }\n e.buttons = inDict.buttons || 0;\n\n // Spec requires that pointers without pressure specified use 0.5 for down\n // state and 0 for up state.\n var pressure = 0;\n\n if (inDict.pressure !== undefined && e.buttons) {\n pressure = inDict.pressure;\n } else {\n pressure = e.buttons ? 0.5 : 0;\n }\n\n // add x/y properties aliased to clientX/Y\n e.x = e.clientX;\n e.y = e.clientY;\n\n // define the properties of the PointerEvent interface\n e.pointerId = inDict.pointerId || 0;\n e.width = inDict.width || 1;\n e.height = inDict.height || 1;\n e.pressure = pressure;\n e.tiltX = inDict.tiltX || 0;\n e.tiltY = inDict.tiltY || 0;\n e.twist = inDict.twist || 0;\n e.tangentialPressure = inDict.tangentialPressure || 0;\n e.pointerType = inDict.pointerType || '';\n e.hwTimestamp = inDict.hwTimestamp || 0;\n e.isPrimary = inDict.isPrimary || false;\n e.detail = 0;\n return e;\n }\n\n /**\n * This module implements a map of pointer states\n */\n var USE_MAP = window.Map && window.Map.prototype.forEach;\n var PointerMap = USE_MAP ? Map : SparseArrayMap;\n\n function SparseArrayMap() {\n this.array = [];\n this.size = 0;\n }\n\n SparseArrayMap.prototype = {\n set: function(k, v) {\n if (v === undefined) {\n return this.delete(k);\n }\n if (!this.has(k)) {\n this.size++;\n }\n this.array[k] = v;\n },\n has: function(k) {\n return this.array[k] !== undefined;\n },\n delete: function(k) {\n if (this.has(k)) {\n delete this.array[k];\n this.size--;\n }\n },\n get: function(k) {\n return this.array[k];\n },\n clear: function() {\n this.array.length = 0;\n this.size = 0;\n },\n\n // return value, key, map\n forEach: function(callback, thisArg) {\n return this.array.forEach(function(v, k) {\n callback.call(thisArg, v, k, this);\n }, this);\n }\n };\n\n var CLONE_PROPS = [\n\n // MouseEvent\n 'bubbles',\n 'cancelable',\n 'view',\n 'detail',\n 'screenX',\n 'screenY',\n 'clientX',\n 'clientY',\n 'ctrlKey',\n 'altKey',\n 'shiftKey',\n 'metaKey',\n 'button',\n 'relatedTarget',\n\n // DOM Level 3\n 'buttons',\n\n // PointerEvent\n 'pointerId',\n 'width',\n 'height',\n 'pressure',\n 'tiltX',\n 'tiltY',\n 'pointerType',\n 'hwTimestamp',\n 'isPrimary',\n\n // event instance\n 'type',\n 'target',\n 'currentTarget',\n 'which',\n 'pageX',\n 'pageY',\n 'timeStamp'\n ];\n\n var CLONE_DEFAULTS = [\n\n // MouseEvent\n false,\n false,\n null,\n null,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n false,\n 0,\n null,\n\n // DOM Level 3\n 0,\n\n // PointerEvent\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n '',\n 0,\n false,\n\n // event instance\n '',\n null,\n null,\n 0,\n 0,\n 0,\n 0\n ];\n\n var BOUNDARY_EVENTS = {\n 'pointerover': 1,\n 'pointerout': 1,\n 'pointerenter': 1,\n 'pointerleave': 1\n };\n\n var HAS_SVG_INSTANCE = (typeof SVGElementInstance !== 'undefined');\n\n /**\n * This module is for normalizing events. Mouse and Touch events will be\n * collected here, and fire PointerEvents that have the same semantics, no\n * matter the source.\n * Events fired:\n * - pointerdown: a pointing is added\n * - pointerup: a pointer is removed\n * - pointermove: a pointer is moved\n * - pointerover: a pointer crosses into an element\n * - pointerout: a pointer leaves an element\n * - pointercancel: a pointer will no longer generate events\n */\n var dispatcher = {\n pointermap: new PointerMap(),\n eventMap: Object.create(null),\n captureInfo: Object.create(null),\n\n // Scope objects for native events.\n // This exists for ease of testing.\n eventSources: Object.create(null),\n eventSourceList: [],\n /**\n * Add a new event source that will generate pointer events.\n *\n * `inSource` must contain an array of event names named `events`, and\n * functions with the names specified in the `events` array.\n * @param {string} name A name for the event source\n * @param {Object} source A new source of platform events.\n */\n registerSource: function(name, source) {\n var s = source;\n var newEvents = s.events;\n if (newEvents) {\n newEvents.forEach(function(e) {\n if (s[e]) {\n this.eventMap[e] = s[e].bind(s);\n }\n }, this);\n this.eventSources[name] = s;\n this.eventSourceList.push(s);\n }\n },\n register: function(element) {\n var l = this.eventSourceList.length;\n for (var i = 0, es; (i < l) && (es = this.eventSourceList[i]); i++) {\n\n // call eventsource register\n es.register.call(es, element);\n }\n },\n unregister: function(element) {\n var l = this.eventSourceList.length;\n for (var i = 0, es; (i < l) && (es = this.eventSourceList[i]); i++) {\n\n // call eventsource register\n es.unregister.call(es, element);\n }\n },\n contains: /*scope.external.contains || */function(container, contained) {\n try {\n return container.contains(contained);\n } catch (ex) {\n\n // most likely: https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n return false;\n }\n },\n\n // EVENTS\n down: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerdown', inEvent);\n },\n move: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointermove', inEvent);\n },\n up: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerup', inEvent);\n },\n enter: function(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerenter', inEvent);\n },\n leave: function(inEvent) {\n inEvent.bubbles = false;\n this.fireEvent('pointerleave', inEvent);\n },\n over: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerover', inEvent);\n },\n out: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointerout', inEvent);\n },\n cancel: function(inEvent) {\n inEvent.bubbles = true;\n this.fireEvent('pointercancel', inEvent);\n },\n leaveOut: function(event) {\n this.out(event);\n this.propagate(event, this.leave, false);\n },\n enterOver: function(event) {\n this.over(event);\n this.propagate(event, this.enter, true);\n },\n\n // LISTENER LOGIC\n eventHandler: function(inEvent) {\n\n // This is used to prevent multiple dispatch of pointerevents from\n // platform events. This can happen when two elements in different scopes\n // are set up to create pointer events, which is relevant to Shadow DOM.\n if (inEvent._handledByPE) {\n return;\n }\n var type = inEvent.type;\n var fn = this.eventMap && this.eventMap[type];\n if (fn) {\n fn(inEvent);\n }\n inEvent._handledByPE = true;\n },\n\n // set up event listeners\n listen: function(target, events) {\n events.forEach(function(e) {\n this.addEvent(target, e);\n }, this);\n },\n\n // remove event listeners\n unlisten: function(target, events) {\n events.forEach(function(e) {\n this.removeEvent(target, e);\n }, this);\n },\n addEvent: /*scope.external.addEvent || */function(target, eventName) {\n target.addEventListener(eventName, this.boundHandler);\n },\n removeEvent: /*scope.external.removeEvent || */function(target, eventName) {\n target.removeEventListener(eventName, this.boundHandler);\n },\n\n // EVENT CREATION AND TRACKING\n /**\n * Creates a new Event of type `inType`, based on the information in\n * `inEvent`.\n *\n * @param {string} inType A string representing the type of event to create\n * @param {Event} inEvent A platform event with a target\n * @return {Event} A PointerEvent of type `inType`\n */\n makeEvent: function(inType, inEvent) {\n\n // relatedTarget must be null if pointer is captured\n if (this.captureInfo[inEvent.pointerId]) {\n inEvent.relatedTarget = null;\n }\n var e = new PointerEvent(inType, inEvent);\n if (inEvent.preventDefault) {\n e.preventDefault = inEvent.preventDefault;\n }\n e._target = e._target || inEvent.target;\n return e;\n },\n\n // make and dispatch an event in one call\n fireEvent: function(inType, inEvent) {\n var e = this.makeEvent(inType, inEvent);\n return this.dispatchEvent(e);\n },\n /**\n * Returns a snapshot of inEvent, with writable properties.\n *\n * @param {Event} inEvent An event that contains properties to copy.\n * @return {Object} An object containing shallow copies of `inEvent`'s\n * properties.\n */\n cloneEvent: function(inEvent) {\n var eventCopy = Object.create(null);\n var p;\n for (var i = 0; i < CLONE_PROPS.length; i++) {\n p = CLONE_PROPS[i];\n eventCopy[p] = inEvent[p] || CLONE_DEFAULTS[i];\n\n // Work around SVGInstanceElement shadow tree\n // Return the element that is represented by the instance for Safari, Chrome, IE.\n // This is the behavior implemented by Firefox.\n if (HAS_SVG_INSTANCE && (p === 'target' || p === 'relatedTarget')) {\n if (eventCopy[p] instanceof SVGElementInstance) {\n eventCopy[p] = eventCopy[p].correspondingUseElement;\n }\n }\n }\n\n // keep the semantics of preventDefault\n if (inEvent.preventDefault) {\n eventCopy.preventDefault = function() {\n inEvent.preventDefault();\n };\n }\n return eventCopy;\n },\n getTarget: function(inEvent) {\n var capture = this.captureInfo[inEvent.pointerId];\n if (!capture) {\n return inEvent._target;\n }\n if (inEvent._target === capture || !(inEvent.type in BOUNDARY_EVENTS)) {\n return capture;\n }\n },\n propagate: function(event, fn, propagateDown) {\n var target = event.target;\n var targets = [];\n\n // Order of conditions due to document.contains() missing in IE.\n while (target != null && target !== document && !target.contains(event.relatedTarget)) {\n targets.push(target);\n target = target.parentNode;\n\n // Touch: Do not propagate if node is detached.\n if (!target) {\n return;\n }\n }\n if (propagateDown) {\n targets.reverse();\n }\n targets.forEach(function(target) {\n event.target = target;\n fn.call(this, event);\n }, this);\n },\n setCapture: function(inPointerId, inTarget, skipDispatch) {\n if (this.captureInfo[inPointerId]) {\n this.releaseCapture(inPointerId, skipDispatch);\n }\n\n this.captureInfo[inPointerId] = inTarget;\n this.implicitRelease = this.releaseCapture.bind(this, inPointerId, skipDispatch);\n document.addEventListener('pointerup', this.implicitRelease);\n document.addEventListener('pointercancel', this.implicitRelease);\n\n var e = new PointerEvent('gotpointercapture', { bubbles: true });\n e.pointerId = inPointerId;\n e._target = inTarget;\n\n if (!skipDispatch) {\n this.asyncDispatchEvent(e);\n }\n },\n releaseCapture: function(inPointerId, skipDispatch) {\n var t = this.captureInfo[inPointerId];\n if (!t) {\n return;\n }\n\n this.captureInfo[inPointerId] = undefined;\n document.removeEventListener('pointerup', this.implicitRelease);\n document.removeEventListener('pointercancel', this.implicitRelease);\n\n var e = new PointerEvent('lostpointercapture', { bubbles: true });\n e.pointerId = inPointerId;\n e._target = t;\n\n if (!skipDispatch) {\n this.asyncDispatchEvent(e);\n }\n },\n /**\n * Dispatches the event to its target.\n *\n * @param {Event} inEvent The event to be dispatched.\n * @return {Boolean} True if an event handler returns true, false otherwise.\n */\n dispatchEvent: /*scope.external.dispatchEvent || */function(inEvent) {\n var t = this.getTarget(inEvent);\n if (t) {\n return t.dispatchEvent(inEvent);\n }\n },\n asyncDispatchEvent: function(inEvent) {\n requestAnimationFrame(this.dispatchEvent.bind(this, inEvent));\n }\n };\n dispatcher.boundHandler = dispatcher.eventHandler.bind(dispatcher);\n\n var targeting = {\n shadow: function(inEl) {\n if (inEl) {\n return inEl.shadowRoot || inEl.webkitShadowRoot;\n }\n },\n canTarget: function(shadow) {\n return shadow && Boolean(shadow.elementFromPoint);\n },\n targetingShadow: function(inEl) {\n var s = this.shadow(inEl);\n if (this.canTarget(s)) {\n return s;\n }\n },\n olderShadow: function(shadow) {\n var os = shadow.olderShadowRoot;\n if (!os) {\n var se = shadow.querySelector('shadow');\n if (se) {\n os = se.olderShadowRoot;\n }\n }\n return os;\n },\n allShadows: function(element) {\n var shadows = [];\n var s = this.shadow(element);\n while (s) {\n shadows.push(s);\n s = this.olderShadow(s);\n }\n return shadows;\n },\n searchRoot: function(inRoot, x, y) {\n if (inRoot) {\n var t = inRoot.elementFromPoint(x, y);\n var st, sr;\n\n // is element a shadow host?\n sr = this.targetingShadow(t);\n while (sr) {\n\n // find the the element inside the shadow root\n st = sr.elementFromPoint(x, y);\n if (!st) {\n\n // check for older shadows\n sr = this.olderShadow(sr);\n } else {\n\n // shadowed element may contain a shadow root\n var ssr = this.targetingShadow(st);\n return this.searchRoot(ssr, x, y) || st;\n }\n }\n\n // light dom element is the target\n return t;\n }\n },\n owner: function(element) {\n var s = element;\n\n // walk up until you hit the shadow root or document\n while (s.parentNode) {\n s = s.parentNode;\n }\n\n // the owner element is expected to be a Document or ShadowRoot\n if (s.nodeType !== Node.DOCUMENT_NODE && s.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) {\n s = document;\n }\n return s;\n },\n findTarget: function(inEvent) {\n var x = inEvent.clientX;\n var y = inEvent.clientY;\n\n // if the listener is in the shadow root, it is much faster to start there\n var s = this.owner(inEvent.target);\n\n // if x, y is not in this root, fall back to document search\n if (!s.elementFromPoint(x, y)) {\n s = document;\n }\n return this.searchRoot(s, x, y);\n }\n };\n\n var forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach);\n var map = Array.prototype.map.call.bind(Array.prototype.map);\n var toArray = Array.prototype.slice.call.bind(Array.prototype.slice);\n var filter = Array.prototype.filter.call.bind(Array.prototype.filter);\n var MO = window.MutationObserver || window.WebKitMutationObserver;\n var SELECTOR = '[touch-action]';\n var OBSERVER_INIT = {\n subtree: true,\n childList: true,\n attributes: true,\n attributeOldValue: true,\n attributeFilter: ['touch-action']\n };\n\n function Installer(add, remove, changed, binder) {\n this.addCallback = add.bind(binder);\n this.removeCallback = remove.bind(binder);\n this.changedCallback = changed.bind(binder);\n if (MO) {\n this.observer = new MO(this.mutationWatcher.bind(this));\n }\n }\n\n Installer.prototype = {\n watchSubtree: function(target) {\n\n // Only watch scopes that can target find, as these are top-level.\n // Otherwise we can see duplicate additions and removals that add noise.\n //\n // TODO(dfreedman): For some instances with ShadowDOMPolyfill, we can see\n // a removal without an insertion when a node is redistributed among\n // shadows. Since it all ends up correct in the document, watching only\n // the document will yield the correct mutations to watch.\n if (this.observer && targeting.canTarget(target)) {\n this.observer.observe(target, OBSERVER_INIT);\n }\n },\n enableOnSubtree: function(target) {\n this.watchSubtree(target);\n if (target === document && document.readyState !== 'complete') {\n this.installOnLoad();\n } else {\n this.installNewSubtree(target);\n }\n },\n installNewSubtree: function(target) {\n forEach(this.findElements(target), this.addElement, this);\n },\n findElements: function(target) {\n if (target.querySelectorAll) {\n return target.querySelectorAll(SELECTOR);\n }\n return [];\n },\n removeElement: function(el) {\n this.removeCallback(el);\n },\n addElement: function(el) {\n this.addCallback(el);\n },\n elementChanged: function(el, oldValue) {\n this.changedCallback(el, oldValue);\n },\n concatLists: function(accum, list) {\n return accum.concat(toArray(list));\n },\n\n // register all touch-action = none nodes on document load\n installOnLoad: function() {\n document.addEventListener('readystatechange', function() {\n if (document.readyState === 'complete') {\n this.installNewSubtree(document);\n }\n }.bind(this));\n },\n isElement: function(n) {\n return n.nodeType === Node.ELEMENT_NODE;\n },\n flattenMutationTree: function(inNodes) {\n\n // find children with touch-action\n var tree = map(inNodes, this.findElements, this);\n\n // make sure the added nodes are accounted for\n tree.push(filter(inNodes, this.isElement));\n\n // flatten the list\n return tree.reduce(this.concatLists, []);\n },\n mutationWatcher: function(mutations) {\n mutations.forEach(this.mutationHandler, this);\n },\n mutationHandler: function(m) {\n if (m.type === 'childList') {\n var added = this.flattenMutationTree(m.addedNodes);\n added.forEach(this.addElement, this);\n var removed = this.flattenMutationTree(m.removedNodes);\n removed.forEach(this.removeElement, this);\n } else if (m.type === 'attributes') {\n this.elementChanged(m.target, m.oldValue);\n }\n }\n };\n\n function shadowSelector(s) {\n return 'body /shadow-deep/ ' + s;\n }\n function rule(v) {\n return '{ -ms-touch-action: ' + v + '; touch-action: ' + v + '; }';\n }\n var attrib2css = [\n { selector: '[touch-action=\"none\"]', value: 'none' },\n { selector: '[touch-action=\"auto\"]', value: 'auto' },\n { selector: '[touch-action~=\"pan-x\"]', value: 'pan-x' },\n { selector: '[touch-action~=\"pan-y\"]', value: 'pan-y' },\n { selector: '[touch-action~=\"pan-up\"]', value: 'pan-up' },\n { selector: '[touch-action~=\"pan-down\"]', value: 'pan-down' },\n { selector: '[touch-action~=\"pan-left\"]', value: 'pan-left' },\n { selector: '[touch-action~=\"pan-right\"]', value: 'pan-right' }\n ];\n var styles = '';\n\n // only install stylesheet if the browser has touch action support\n var hasNativePE = window.PointerEvent || window.MSPointerEvent;\n\n // only add shadow selectors if shadowdom is supported\n var hasShadowRoot = !window.ShadowDOMPolyfill && document.head.createShadowRoot;\n\n function applyAttributeStyles() {\n if (hasNativePE) {\n attrib2css.forEach(function(r) {\n styles += r.selector + rule(r.value) + '\\n';\n if (hasShadowRoot) {\n styles += shadowSelector(r.selector) + rule(r.value) + '\\n';\n }\n });\n\n var el = document.createElement('style');\n el.textContent = styles;\n document.head.appendChild(el);\n }\n }\n\n var pointermap = dispatcher.pointermap;\n\n // radius around touchend that swallows mouse events\n var DEDUP_DIST = 25;\n\n // left, middle, right, back, forward\n var BUTTON_TO_BUTTONS = [1, 4, 2, 8, 16];\n\n var HAS_BUTTONS = false;\n try {\n HAS_BUTTONS = new MouseEvent('test', { buttons: 1 }).buttons === 1;\n } catch (e) {}\n\n // handler block for native mouse events\n var mouseEvents = {\n POINTER_ID: 1,\n POINTER_TYPE: 'mouse',\n events: [\n 'mousedown',\n 'webkitmouseforcechanged',\n 'mousemove',\n 'mouseup',\n 'mouseover',\n 'mouseout'\n ],\n register: function(target) {\n dispatcher.listen(target, this.events);\n },\n unregister: function(target) {\n dispatcher.unlisten(target, this.events);\n },\n lastTouches: [],\n\n // collide with the global mouse listener\n isEventSimulatedFromTouch: function(inEvent) {\n var lts = this.lastTouches;\n var x = inEvent.clientX;\n var y = inEvent.clientY;\n for (var i = 0, l = lts.length, t; i < l && (t = lts[i]); i++) {\n\n // simulated mouse events will be swallowed near a primary touchend\n var dx = Math.abs(x - t.x);\n var dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DIST && dy <= DEDUP_DIST) {\n return true;\n }\n }\n },\n prepareEvent: function(inEvent) {\n var e = dispatcher.cloneEvent(inEvent);\n\n // forward mouse preventDefault\n var pd = e.preventDefault;\n e.preventDefault = function() {\n inEvent.preventDefault();\n pd();\n };\n e.pointerId = this.POINTER_ID;\n e.isPrimary = true;\n e.pointerType = this.POINTER_TYPE;\n if ('webkitForce' in inEvent) {\n e.pressure = inEvent.webkitForce - MouseEvent.WEBKIT_FORCE_AT_MOUSE_DOWN;\n }\n return e;\n },\n prepareButtonsForMove: function(e, inEvent) {\n var p = pointermap.get(this.POINTER_ID);\n\n // Update buttons state after possible out-of-document mouseup.\n if (inEvent.which === 0 || !p) {\n e.buttons = 0;\n } else {\n e.buttons = p.buttons;\n }\n inEvent.buttons = e.buttons;\n },\n mousedown: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.get(this.POINTER_ID);\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n e.buttons = BUTTON_TO_BUTTONS[e.button];\n if (p) { e.buttons |= p.buttons; }\n inEvent.buttons = e.buttons;\n }\n pointermap.set(this.POINTER_ID, inEvent);\n if (!p || p.buttons === 0) {\n dispatcher.down(e);\n } else {\n dispatcher.move(e);\n }\n }\n },\n\n // This is called when the user force presses without moving x/y\n webkitmouseforcechanged: function(inEvent) {\n this.mousemove(inEvent);\n },\n mousemove: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) { this.prepareButtonsForMove(e, inEvent); }\n e.button = -1;\n pointermap.set(this.POINTER_ID, inEvent);\n dispatcher.move(e);\n }\n },\n mouseup: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var p = pointermap.get(this.POINTER_ID);\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) {\n var up = BUTTON_TO_BUTTONS[e.button];\n\n // Produces wrong state of buttons in Browsers without `buttons` support\n // when a mouse button that was pressed outside the document is released\n // inside and other buttons are still pressed down.\n e.buttons = p ? p.buttons & ~up : 0;\n inEvent.buttons = e.buttons;\n }\n pointermap.set(this.POINTER_ID, inEvent);\n\n // Support: Firefox <=44 only\n // FF Ubuntu includes the lifted button in the `buttons` property on\n // mouseup.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1223366\n e.buttons &= ~BUTTON_TO_BUTTONS[e.button];\n if (e.buttons === 0) {\n dispatcher.up(e);\n } else {\n dispatcher.move(e);\n }\n }\n },\n mouseover: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) { this.prepareButtonsForMove(e, inEvent); }\n e.button = -1;\n pointermap.set(this.POINTER_ID, inEvent);\n dispatcher.enterOver(e);\n }\n },\n mouseout: function(inEvent) {\n if (!this.isEventSimulatedFromTouch(inEvent)) {\n var e = this.prepareEvent(inEvent);\n if (!HAS_BUTTONS) { this.prepareButtonsForMove(e, inEvent); }\n e.button = -1;\n dispatcher.leaveOut(e);\n }\n },\n cancel: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e);\n this.deactivateMouse();\n },\n deactivateMouse: function() {\n pointermap.delete(this.POINTER_ID);\n }\n };\n\n var captureInfo = dispatcher.captureInfo;\n var findTarget = targeting.findTarget.bind(targeting);\n var allShadows = targeting.allShadows.bind(targeting);\n var pointermap$1 = dispatcher.pointermap;\n\n // this should be long enough to ignore compat mouse events made by touch\n var DEDUP_TIMEOUT = 2500;\n var ATTRIB = 'touch-action';\n var INSTALLER;\n\n // bitmask for _scrollType\n var UP = 1;\n var DOWN = 2;\n var LEFT = 4;\n var RIGHT = 8;\n var AUTO = UP | DOWN | LEFT | RIGHT;\n\n // handler block for native touch events\n var touchEvents = {\n events: [\n 'touchstart',\n 'touchmove',\n 'touchforcechange',\n 'touchend',\n 'touchcancel'\n ],\n register: function(target) {\n INSTALLER.enableOnSubtree(target);\n },\n unregister: function() {\n\n // TODO(dfreedman): is it worth it to disconnect the MO?\n },\n elementAdded: function(el) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n if (typeof st === \"number\") {\n el._scrollType = st;\n dispatcher.listen(el, this.events);\n\n // set touch-action on shadows as well\n allShadows(el).forEach(function(s) {\n s._scrollType = st;\n dispatcher.listen(s, this.events);\n }, this);\n }\n },\n elementRemoved: function(el) {\n\n // In some cases, an element is removed before a touchend.\n // When this is the case, we should wait for the touchend before unlistening,\n // because we still want pointer events to bubble up after removing from DOM.\n if (pointermap$1.size > 0) {\n var evts = this.events;\n el.addEventListener('touchend', function() {\n el._scrollType = undefined;\n dispatcher.unlisten(el, evts);\n });\n } else {\n el._scrollType = undefined;\n dispatcher.unlisten(el, this.events);\n }\n\n // remove touch-action from shadow\n allShadows(el).forEach(function(s) {\n s._scrollType = undefined;\n dispatcher.unlisten(s, this.events);\n }, this);\n },\n elementChanged: function(el, oldValue) {\n var a = el.getAttribute(ATTRIB);\n var st = this.touchActionToScrollType(a);\n var oldSt = this.touchActionToScrollType(oldValue);\n\n // simply update scrollType if listeners are already established\n if (typeof st === \"number\" && typeof oldSt === \"number\") {\n el._scrollType = st;\n allShadows(el).forEach(function(s) {\n s._scrollType = st;\n }, this);\n } else if (typeof oldSt === \"number\") {\n this.elementRemoved(el);\n } else if (typeof st === \"number\") {\n this.elementAdded(el);\n }\n },\n scrollTypes: {\n UP: function(s) {\n return s.includes('pan-y') || s.includes('pan-up') ? UP : 0;\n },\n DOWN: function(s) {\n return s.includes('pan-y') || s.includes('pan-down') ? DOWN : 0;\n },\n LEFT: function(s) {\n return s.includes('pan-x') || s.includes('pan-left') ? LEFT : 0;\n },\n RIGHT: function(s) {\n return s.includes('pan-x') || s.includes('pan-right') ? RIGHT : 0;\n }\n },\n touchActionToScrollType: function(touchAction) {\n if (!touchAction) {\n return;\n }\n\n if (touchAction === \"auto\") {\n return AUTO;\n }\n\n if (touchAction === \"none\") {\n return 0;\n }\n\n var s = touchAction.split(' ');\n var st = this.scrollTypes;\n\n // construct a bitmask of allowed scroll directions\n return st.UP(s) | st.DOWN(s) | st.LEFT(s) | st.RIGHT(s);\n },\n POINTER_TYPE: 'touch',\n firstTouch: null,\n isPrimaryTouch: function(inTouch) {\n return this.firstTouch === inTouch.identifier;\n },\n setPrimaryTouch: function(inTouch) {\n\n // set primary touch if there no pointers, or the only pointer is the mouse\n if (pointermap$1.size === 0 || (pointermap$1.size === 1 && pointermap$1.has(1))) {\n this.firstTouch = inTouch.identifier;\n this.firstXY = { X: inTouch.clientX, Y: inTouch.clientY };\n this.scrolling = false;\n }\n },\n removePrimaryPointer: function(inPointer) {\n if (inPointer.isPrimary) {\n this.firstTouch = null;\n this.firstXY = null;\n }\n },\n typeToButtons: function(type) {\n var ret = 0;\n if (type === 'touchstart' || type === 'touchmove' || type === 'touchforcechange') {\n ret = 1;\n }\n return ret;\n },\n touchToPointer: function(inTouch) {\n var cte = this.currentTouchEvent;\n var e = dispatcher.cloneEvent(inTouch);\n\n // We reserve pointerId 1 for Mouse.\n // Touch identifiers can start at 0.\n // Add 2 to the touch identifier for compatibility.\n var id = e.pointerId = inTouch.identifier + 2;\n e.target = captureInfo[id] || findTarget(e);\n e.bubbles = true;\n e.cancelable = true;\n e.button = 0;\n e.buttons = this.typeToButtons(cte.type);\n e.width = (inTouch.radiusX || inTouch.webkitRadiusX || 0) * 2;\n e.height = (inTouch.radiusY || inTouch.webkitRadiusY || 0) * 2;\n e.pressure = inTouch.force !== undefined ?\n inTouch.force :\n inTouch.webkitForce !== undefined ?\n inTouch.webkitForce : undefined;\n e.isPrimary = this.isPrimaryTouch(inTouch);\n if (inTouch.altitudeAngle) {\n var tan = Math.tan(inTouch.altitudeAngle);\n var radToDeg = 180 / Math.PI;\n e.tiltX = Math.atan(Math.cos(inTouch.azimuthAngle) / tan) * radToDeg;\n e.tiltY = Math.atan(Math.sin(inTouch.azimuthAngle) / tan) * radToDeg;\n } else {\n e.tiltX = 0;\n e.tiltY = 0;\n }\n if (inTouch.touchType === 'stylus') {\n e.pointerType = 'pen';\n } else {\n e.pointerType = this.POINTER_TYPE;\n }\n\n // forward modifier keys\n e.altKey = cte.altKey;\n e.ctrlKey = cte.ctrlKey;\n e.metaKey = cte.metaKey;\n e.shiftKey = cte.shiftKey;\n\n // forward touch preventDefaults\n var self = this;\n e.preventDefault = function() {\n self.scrolling = false;\n self.firstXY = null;\n cte.preventDefault();\n };\n return e;\n },\n processTouches: function(inEvent, inFunction) {\n var tl = inEvent.changedTouches;\n this.currentTouchEvent = inEvent;\n for (var i = 0, t; i < tl.length; i++) {\n t = tl[i];\n inFunction.call(this, this.touchToPointer(t));\n }\n },\n\n // For single axis scrollers, determines whether the element should emit\n // pointer events or behave as a scroller\n shouldScroll: function(inEvent) {\n if (this.firstXY) {\n var ret;\n var st = inEvent.currentTarget._scrollType;\n if (st === 0) {\n\n // this element is a `touch-action: none`, should never scroll\n ret = false;\n } else if (st === AUTO) {\n\n // this element is a `touch-action: auto`, should always scroll\n ret = true;\n } else {\n var t = inEvent.changedTouches[0];\n\n var dy = t.clientY - this.firstXY.Y;\n var dya = Math.abs(dy);\n var dx = t.clientX - this.firstXY.X;\n var dxa = Math.abs(dx);\n\n var up = st & UP;\n var down = st & DOWN;\n var left = st & LEFT;\n var right = st & RIGHT;\n\n if (left && right) {\n\n // should scroll on the x axis\n ret = dxa > dya;\n } else if (left) {\n\n // should scroll left\n ret = dxa > dya && dx > 0;\n } else if (right) {\n\n // should scroll right\n ret = dxa > dya && dx < 0;\n }\n\n if (!ret) {\n if (up && down) {\n\n // should scroll on the y axis\n ret = dxa < dya;\n } else if (up) {\n\n // should scroll up\n ret = dxa < dya && dy > 0;\n } else if (down) {\n\n // should scroll down\n ret = dxa < dya && dy < 0;\n }\n }\n\n }\n this.firstXY = null;\n return ret;\n }\n },\n findTouch: function(inTL, inId) {\n for (var i = 0, l = inTL.length, t; i < l && (t = inTL[i]); i++) {\n if (t.identifier === inId) {\n return true;\n }\n }\n },\n\n // In some instances, a touchstart can happen without a touchend. This\n // leaves the pointermap in a broken state.\n // Therefore, on every touchstart, we remove the touches that did not fire a\n // touchend event.\n // To keep state globally consistent, we fire a\n // pointercancel for this \"abandoned\" touch\n vacuumTouches: function(inEvent) {\n var tl = inEvent.touches;\n\n // pointermap.size should be < tl.length here, as the touchstart has not\n // been processed yet.\n if (pointermap$1.size >= tl.length) {\n var d = [];\n pointermap$1.forEach(function(value, key) {\n\n // Never remove pointerId == 1, which is mouse.\n // Touch identifiers are 2 smaller than their pointerId, which is the\n // index in pointermap.\n if (key !== 1 && !this.findTouch(tl, key - 2)) {\n var p = value.out;\n d.push(p);\n }\n }, this);\n d.forEach(this.cancelOut, this);\n }\n },\n touchstart: function(inEvent) {\n this.vacuumTouches(inEvent);\n this.setPrimaryTouch(inEvent.changedTouches[0]);\n this.dedupSynthMouse(inEvent);\n if (!this.scrolling) {\n this.processTouches(inEvent, this.overDown);\n }\n },\n overDown: function(inPointer) {\n pointermap$1.set(inPointer.pointerId, {\n target: inPointer.target,\n out: inPointer,\n outTarget: inPointer.target\n });\n dispatcher.enterOver(inPointer);\n dispatcher.down(inPointer);\n },\n\n // Called when pressure or tilt changes without the x/y changing\n touchforcechange: function(inEvent) {\n this.touchmove(inEvent);\n },\n touchmove: function(inEvent) {\n if (!this.scrolling) {\n if (this.shouldScroll(inEvent)) {\n this.scrolling = true;\n this.touchcancel(inEvent);\n } else {\n if (inEvent.type !== 'touchforcechange') {\n inEvent.preventDefault();\n }\n this.processTouches(inEvent, this.moveOverOut);\n }\n }\n },\n moveOverOut: function(inPointer) {\n var event = inPointer;\n var pointer = pointermap$1.get(event.pointerId);\n\n // a finger drifted off the screen, ignore it\n if (!pointer) {\n return;\n }\n var outEvent = pointer.out;\n var outTarget = pointer.outTarget;\n dispatcher.move(event);\n if (outEvent && outTarget !== event.target) {\n outEvent.relatedTarget = event.target;\n event.relatedTarget = outTarget;\n\n // recover from retargeting by shadow\n outEvent.target = outTarget;\n if (event.target) {\n dispatcher.leaveOut(outEvent);\n dispatcher.enterOver(event);\n } else {\n\n // clean up case when finger leaves the screen\n event.target = outTarget;\n event.relatedTarget = null;\n this.cancelOut(event);\n }\n }\n pointer.out = event;\n pointer.outTarget = event.target;\n },\n touchend: function(inEvent) {\n this.dedupSynthMouse(inEvent);\n this.processTouches(inEvent, this.upOut);\n },\n upOut: function(inPointer) {\n if (!this.scrolling) {\n dispatcher.up(inPointer);\n dispatcher.leaveOut(inPointer);\n }\n this.cleanUpPointer(inPointer);\n },\n touchcancel: function(inEvent) {\n this.processTouches(inEvent, this.cancelOut);\n },\n cancelOut: function(inPointer) {\n dispatcher.cancel(inPointer);\n dispatcher.leaveOut(inPointer);\n this.cleanUpPointer(inPointer);\n },\n cleanUpPointer: function(inPointer) {\n pointermap$1.delete(inPointer.pointerId);\n this.removePrimaryPointer(inPointer);\n },\n\n // prevent synth mouse events from creating pointer events\n dedupSynthMouse: function(inEvent) {\n var lts = mouseEvents.lastTouches;\n var t = inEvent.changedTouches[0];\n\n // only the primary finger will synth mouse events\n if (this.isPrimaryTouch(t)) {\n\n // remember x/y of last touch\n var lt = { x: t.clientX, y: t.clientY };\n lts.push(lt);\n var fn = (function(lts, lt) {\n var i = lts.indexOf(lt);\n if (i > -1) {\n lts.splice(i, 1);\n }\n }).bind(null, lts, lt);\n setTimeout(fn, DEDUP_TIMEOUT);\n }\n }\n };\n\n INSTALLER = new Installer(touchEvents.elementAdded, touchEvents.elementRemoved,\n touchEvents.elementChanged, touchEvents);\n\n var pointermap$2 = dispatcher.pointermap;\n var HAS_BITMAP_TYPE = window.MSPointerEvent &&\n typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE === 'number';\n var msEvents = {\n events: [\n 'MSPointerDown',\n 'MSPointerMove',\n 'MSPointerUp',\n 'MSPointerOut',\n 'MSPointerOver',\n 'MSPointerCancel',\n 'MSGotPointerCapture',\n 'MSLostPointerCapture'\n ],\n register: function(target) {\n dispatcher.listen(target, this.events);\n },\n unregister: function(target) {\n dispatcher.unlisten(target, this.events);\n },\n POINTER_TYPES: [\n '',\n 'unavailable',\n 'touch',\n 'pen',\n 'mouse'\n ],\n prepareEvent: function(inEvent) {\n var e = inEvent;\n if (HAS_BITMAP_TYPE) {\n e = dispatcher.cloneEvent(inEvent);\n e.pointerType = this.POINTER_TYPES[inEvent.pointerType];\n }\n return e;\n },\n cleanup: function(id) {\n pointermap$2.delete(id);\n },\n MSPointerDown: function(inEvent) {\n pointermap$2.set(inEvent.pointerId, inEvent);\n var e = this.prepareEvent(inEvent);\n dispatcher.down(e);\n },\n MSPointerMove: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.move(e);\n },\n MSPointerUp: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.up(e);\n this.cleanup(inEvent.pointerId);\n },\n MSPointerOut: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.leaveOut(e);\n },\n MSPointerOver: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.enterOver(e);\n },\n MSPointerCancel: function(inEvent) {\n var e = this.prepareEvent(inEvent);\n dispatcher.cancel(e);\n this.cleanup(inEvent.pointerId);\n },\n MSLostPointerCapture: function(inEvent) {\n var e = dispatcher.makeEvent('lostpointercapture', inEvent);\n dispatcher.dispatchEvent(e);\n },\n MSGotPointerCapture: function(inEvent) {\n var e = dispatcher.makeEvent('gotpointercapture', inEvent);\n dispatcher.dispatchEvent(e);\n }\n };\n\n function applyPolyfill() {\n\n // only activate if this platform does not have pointer events\n if (!window.PointerEvent) {\n window.PointerEvent = PointerEvent;\n\n if (window.navigator.msPointerEnabled) {\n var tp = window.navigator.msMaxTouchPoints;\n Object.defineProperty(window.navigator, 'maxTouchPoints', {\n value: tp,\n enumerable: true\n });\n dispatcher.registerSource('ms', msEvents);\n } else {\n Object.defineProperty(window.navigator, 'maxTouchPoints', {\n value: 0,\n enumerable: true\n });\n dispatcher.registerSource('mouse', mouseEvents);\n if (window.ontouchstart !== undefined) {\n dispatcher.registerSource('touch', touchEvents);\n }\n }\n\n dispatcher.register(document);\n }\n }\n\n var n = window.navigator;\n var s;\n var r;\n var h;\n function assertActive(id) {\n if (!dispatcher.pointermap.has(id)) {\n var error = new Error('NotFoundError');\n error.name = 'NotFoundError';\n throw error;\n }\n }\n function assertConnected(elem) {\n var parent = elem.parentNode;\n while (parent && parent !== elem.ownerDocument) {\n parent = parent.parentNode;\n }\n if (!parent) {\n var error = new Error('InvalidStateError');\n error.name = 'InvalidStateError';\n throw error;\n }\n }\n function inActiveButtonState(id) {\n var p = dispatcher.pointermap.get(id);\n return p.buttons !== 0;\n }\n if (n.msPointerEnabled) {\n s = function(pointerId) {\n assertActive(pointerId);\n assertConnected(this);\n if (inActiveButtonState(pointerId)) {\n dispatcher.setCapture(pointerId, this, true);\n this.msSetPointerCapture(pointerId);\n }\n };\n r = function(pointerId) {\n assertActive(pointerId);\n dispatcher.releaseCapture(pointerId, true);\n this.msReleasePointerCapture(pointerId);\n };\n } else {\n s = function setPointerCapture(pointerId) {\n assertActive(pointerId);\n assertConnected(this);\n if (inActiveButtonState(pointerId)) {\n dispatcher.setCapture(pointerId, this);\n }\n };\n r = function releasePointerCapture(pointerId) {\n assertActive(pointerId);\n dispatcher.releaseCapture(pointerId);\n };\n }\n h = function hasPointerCapture(pointerId) {\n return !!dispatcher.captureInfo[pointerId];\n };\n\n function applyPolyfill$1() {\n if (window.Element && !Element.prototype.setPointerCapture) {\n Object.defineProperties(Element.prototype, {\n 'setPointerCapture': {\n value: s\n },\n 'releasePointerCapture': {\n value: r\n },\n 'hasPointerCapture': {\n value: h\n }\n });\n }\n }\n\n applyAttributeStyles();\n applyPolyfill();\n applyPolyfill$1();\n\n var pointerevents = {\n dispatcher: dispatcher,\n Installer: Installer,\n PointerEvent: PointerEvent,\n PointerMap: PointerMap,\n targetFinding: targeting\n };\n\n return pointerevents;\n\n}));","/**\n * @module ol/has\n */\n\nconst ua = typeof navigator !== 'undefined' ?\n navigator.userAgent.toLowerCase() : '';\n\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport const FIREFOX = ua.indexOf('firefox') !== -1;\n\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport const SAFARI = ua.indexOf('safari') !== -1 && ua.indexOf('chrom') == -1;\n\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport const WEBKIT = ua.indexOf('webkit') !== -1 && ua.indexOf('edge') == -1;\n\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport const MAC = ua.indexOf('macintosh') !== -1;\n\n\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport const DEVICE_PIXEL_RATIO = window.devicePixelRatio || 1;\n\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport const IMAGE_DECODE = typeof Image !== 'undefined' && Image.prototype.decode;\n","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel'\n};\n","/**\n * @module ol/MapBrowserPointerEvent\n */\nimport MapBrowserEvent from './MapBrowserEvent.js';\n\nclass MapBrowserPointerEvent extends MapBrowserEvent {\n\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {PointerEvent} pointerEvent Pointer event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n constructor(type, map, pointerEvent, opt_dragging, opt_frameState) {\n\n super(type, map, pointerEvent, opt_dragging, opt_frameState);\n\n /**\n * @const\n * @type {PointerEvent}\n */\n this.pointerEvent = pointerEvent;\n\n }\n\n}\n\nexport default MapBrowserPointerEvent;\n","/**\n * @module ol/pointer/EventType\n */\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel'\n};\n","/**\n * @module ol/MapBrowserEventHandler\n */\n\nimport '@openlayers/pepjs';\nimport {DEVICE_PIXEL_RATIO} from './has.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapBrowserPointerEvent from './MapBrowserPointerEvent.js';\nimport {listen, unlistenByKey} from './events.js';\nimport EventTarget from './events/Target.js';\nimport PointerEventType from './pointer/EventType.js';\n\nclass MapBrowserEventHandler extends EventTarget {\n\n /**\n * @param {import(\"./PluggableMap.js\").default} map The map with the viewport to listen to events on.\n * @param {number=} moveTolerance The minimal distance the pointer must travel to trigger a move.\n */\n constructor(map, moveTolerance) {\n\n super(map);\n\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./PluggableMap.js\").default}\n * @private\n */\n this.map_ = map;\n\n /**\n * @type {any}\n * @private\n */\n this.clickTimeoutId_;\n\n /**\n * @type {boolean}\n * @private\n */\n this.dragging_ = false;\n\n /**\n * @type {!Array}\n * @private\n */\n this.dragListenerKeys_ = [];\n\n /**\n * @type {number}\n * @private\n */\n this.moveTolerance_ = moveTolerance ?\n moveTolerance * DEVICE_PIXEL_RATIO : DEVICE_PIXEL_RATIO;\n\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent}\n * @private\n */\n this.down_ = null;\n\n const element = this.map_.getViewport();\n\n /**\n * @type {number}\n * @private\n */\n this.activePointers_ = 0;\n\n /**\n * @type {!Object}\n * @private\n */\n this.trackedTouches_ = {};\n\n this.element_ = element;\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.pointerdownListenerKey_ = listen(element,\n PointerEventType.POINTERDOWN,\n this.handlePointerDown_, this);\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.relayedListenerKey_ = listen(element,\n PointerEventType.POINTERMOVE,\n this.relayEvent_, this);\n\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n emulateClick_(pointerEvent) {\n let newEvent = new MapBrowserPointerEvent(\n MapBrowserEventType.CLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserPointerEvent(\n MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n } else {\n // click\n this.clickTimeoutId_ = setTimeout(function() {\n this.clickTimeoutId_ = undefined;\n const newEvent = new MapBrowserPointerEvent(\n MapBrowserEventType.SINGLECLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }.bind(this), 250);\n }\n }\n\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n updateActivePointers_(pointerEvent) {\n const event = pointerEvent;\n\n if (event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL) {\n delete this.trackedTouches_[event.pointerId];\n } else if (event.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedTouches_[event.pointerId] = true;\n }\n this.activePointers_ = Object.keys(this.trackedTouches_).length;\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerUp_(pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserPointerEvent(\n MapBrowserEventType.POINTERUP, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.stopPropagation() or event.preventDefault().\n if (!newEvent.propagationStopped && !this.dragging_ && this.isMouseActionButton_(pointerEvent)) {\n this.emulateClick_(this.down_);\n }\n\n if (this.activePointers_ === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n isMouseActionButton_(pointerEvent) {\n return pointerEvent.button === 0;\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerDown_(pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserPointerEvent(\n MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n\n this.down_ = pointerEvent;\n\n if (this.dragListenerKeys_.length === 0) {\n this.dragListenerKeys_.push(\n listen(document,\n MapBrowserEventType.POINTERMOVE,\n this.handlePointerMove_, this),\n listen(document,\n MapBrowserEventType.POINTERUP,\n this.handlePointerUp_, this),\n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(this.element_,\n MapBrowserEventType.POINTERCANCEL,\n this.handlePointerUp_, this)\n );\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerMove_(pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.dragging_ = true;\n const newEvent = new MapBrowserPointerEvent(\n MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent,\n this.dragging_);\n this.dispatchEvent(newEvent);\n }\n }\n\n /**\n * Wrap and relay a pointer event. Note that this requires that the type\n * string for the MapBrowserPointerEvent matches the PointerEvent type.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n relayEvent_(pointerEvent) {\n const dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserPointerEvent(\n pointerEvent.type, this.map_, pointerEvent, dragging));\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n isMoving_(pointerEvent) {\n return this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) > this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_;\n }\n\n /**\n * @inheritDoc\n */\n disposeInternal() {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n\n this.element_ = null;\n super.disposeInternal();\n }\n}\n\n\nexport default MapBrowserEventHandler;\n","/**\n * @module ol/MapEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend'\n\n};\n","/**\n * @module ol/MapProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view'\n};\n","/**\n * @module ol/render/EventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n\n /**\n * Triggered before a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#prerender\n * @api\n */\n PRERENDER: 'prerender',\n\n /**\n * Triggered after a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n\n /**\n * Triggered before layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#precompose\n * @api\n */\n PRECOMPOSE: 'precompose',\n\n /**\n * Triggered after all layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#postcompose\n * @api\n */\n POSTCOMPOSE: 'postcompose',\n\n /**\n * Triggered when rendering is complete, i.e. all sources and tiles have\n * finished loading for the current viewport, and all tiles are faded in.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#rendercomplete\n * @api\n */\n RENDERCOMPLETE: 'rendercomplete'\n\n};\n","/**\n * @module ol/TileState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4,\n ABORT: 5\n};\n","/**\n * @module ol/structs/PriorityQueue\n */\nimport {assert} from '../asserts.js';\nimport {clear} from '../obj.js';\n\n\n/**\n * @type {number}\n */\nexport const DROP = Infinity;\n\n\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See http://closure-library.googlecode.com/svn/docs/closure_goog_structs_heap.js.source.html\n * and http://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nclass PriorityQueue {\n\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n constructor(priorityFunction, keyFunction) {\n\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n clear() {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n }\n\n\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n dequeue() {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n } else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n const elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n }\n\n\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n enqueue(element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_),\n 31); // Tried to enqueue an `element` that was already added to the queue\n const priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n }\n\n\n /**\n * @return {number} Count.\n */\n getCount() {\n return this.elements_.length;\n }\n\n\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n getLeftChildIndex_(index) {\n return index * 2 + 1;\n }\n\n\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n getRightChildIndex_(index) {\n return index * 2 + 2;\n }\n\n\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n getParentIndex_(index) {\n return (index - 1) >> 1;\n }\n\n\n /**\n * Make this a heap. O(N).\n * @private\n */\n heapify_() {\n let i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n }\n\n\n /**\n * @return {boolean} Is empty.\n */\n isEmpty() {\n return this.elements_.length === 0;\n }\n\n\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n isKeyQueued(key) {\n return key in this.queuedElements_;\n }\n\n\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n isQueued(element) {\n return this.isKeyQueued(this.keyFunction_(element));\n }\n\n\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n siftUp_(index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const count = elements.length;\n const element = elements[index];\n const priority = priorities[index];\n const startIndex = index;\n\n while (index < (count >> 1)) {\n const lIndex = this.getLeftChildIndex_(index);\n const rIndex = this.getRightChildIndex_(index);\n\n const smallerChildIndex = rIndex < count &&\n priorities[rIndex] < priorities[lIndex] ?\n rIndex : lIndex;\n\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n }\n\n\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n siftDown_(startIndex, index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[index];\n const priority = priorities[index];\n\n while (index > startIndex) {\n const parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n } else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n }\n\n\n /**\n * FIXME empty description for jsdoc\n */\n reprioritize() {\n const priorityFunction = this.priorityFunction_;\n const elements = this.elements_;\n const priorities = this.priorities_;\n let index = 0;\n const n = elements.length;\n let element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n } else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n }\n\n}\n\n\nexport default PriorityQueue;\n","/**\n * @module ol/TileQueue\n */\nimport TileState from './TileState.js';\nimport EventType from './events/EventType.js';\nimport PriorityQueue from './structs/PriorityQueue.js';\n\n\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\n\n\nclass TileQueue extends PriorityQueue {\n\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n constructor(tilePriorityFunction, tileChangeCallback) {\n\n super(\n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function(element) {\n return tilePriorityFunction.apply(null, element);\n },\n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function(element) {\n return (/** @type {import(\"./Tile.js\").default} */ (element[0]).getKey());\n });\n\n /** @private */\n this.boundHandleTileChange_ = this.handleTileChange.bind(this);\n\n /**\n * @private\n * @type {function(): ?}\n */\n this.tileChangeCallback_ = tileChangeCallback;\n\n /**\n * @private\n * @type {number}\n */\n this.tilesLoading_ = 0;\n\n /**\n * @private\n * @type {!Object}\n */\n this.tilesLoadingKeys_ = {};\n\n }\n\n /**\n * @inheritDoc\n */\n enqueue(element) {\n const added = super.enqueue(element);\n if (added) {\n const tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n }\n\n /**\n * @return {number} Number of tiles loading.\n */\n getTilesLoading() {\n return this.tilesLoading_;\n }\n\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n handleTileChange(event) {\n const tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n const state = tile.getState();\n if (tile.hifi && state === TileState.LOADED || state === TileState.ERROR ||\n state === TileState.EMPTY || state === TileState.ABORT) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n const tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n }\n\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n loadMoreTiles(maxTotalLoading, maxNewLoads) {\n let newLoads = 0;\n let abortedTiles = false;\n let state, tile, tileKey;\n while (this.tilesLoading_ < maxTotalLoading && newLoads < maxNewLoads &&\n this.getCount() > 0) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.ABORT) {\n abortedTiles = true;\n } else if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n if (newLoads === 0 && abortedTiles) {\n // Do not stop the render loop when all wanted tiles were aborted due to\n // a small, saturated tile cache.\n this.tileChangeCallback_();\n }\n }\n}\n\n\nexport default TileQueue;\n","/**\n * @module ol/tilegrid/common\n */\n\n/**\n * Default maximum zoom for default tile grids.\n * @type {number}\n */\nexport const DEFAULT_MAX_ZOOM = 42;\n\n/**\n * Default tile size.\n * @type {number}\n */\nexport const DEFAULT_TILE_SIZE = 256;\n","/**\n * @module ol/math\n */\n\n/**\n * Takes a number and clamps it to within the provided bounds.\n * @param {number} value The input number.\n * @param {number} min The minimum value to return.\n * @param {number} max The maximum value to return.\n * @return {number} The input number if it is within bounds, or the nearest\n * number within the bounds.\n */\nexport function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\n\n/**\n * Return the hyperbolic cosine of a given number. The method will use the\n * native `Math.cosh` function if it is available, otherwise the hyperbolic\n * cosine will be calculated via the reference implementation of the Mozilla\n * developer network.\n *\n * @param {number} x X.\n * @return {number} Hyperbolic cosine of x.\n */\nexport const cosh = (function() {\n // Wrapped in a iife, to save the overhead of checking for the native\n // implementation on every invocation.\n let cosh;\n if ('cosh' in Math) {\n // The environment supports the native Math.cosh function, use it…\n cosh = Math.cosh;\n } else {\n // … else, use the reference implementation of MDN:\n cosh = function(x) {\n const y = /** @type {Math} */ (Math).exp(x);\n return (y + 1 / y) / 2;\n };\n }\n return cosh;\n}());\n\n\n/**\n * Returns the square of the closest distance between the point (x, y) and the\n * line segment (x1, y1) to (x2, y2).\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredSegmentDistance(x, y, x1, y1, x2, y2) {\n const dx = x2 - x1;\n const dy = y2 - y1;\n if (dx !== 0 || dy !== 0) {\n const t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n x1 = x2;\n y1 = y2;\n } else if (t > 0) {\n x1 += dx * t;\n y1 += dy * t;\n }\n }\n return squaredDistance(x, y, x1, y1);\n}\n\n\n/**\n * Returns the square of the distance between the points (x1, y1) and (x2, y2).\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredDistance(x1, y1, x2, y2) {\n const dx = x2 - x1;\n const dy = y2 - y1;\n return dx * dx + dy * dy;\n}\n\n\n/**\n * Solves system of linear equations using Gaussian elimination method.\n *\n * @param {Array>} mat Augmented matrix (n x n + 1 column)\n * in row-major order.\n * @return {Array} The resulting vector.\n */\nexport function solveLinearSystem(mat) {\n const n = mat.length;\n\n for (let i = 0; i < n; i++) {\n // Find max in the i-th column (ignoring i - 1 first rows)\n let maxRow = i;\n let maxEl = Math.abs(mat[i][i]);\n for (let r = i + 1; r < n; r++) {\n const absValue = Math.abs(mat[r][i]);\n if (absValue > maxEl) {\n maxEl = absValue;\n maxRow = r;\n }\n }\n\n if (maxEl === 0) {\n return null; // matrix is singular\n }\n\n // Swap max row with i-th (current) row\n const tmp = mat[maxRow];\n mat[maxRow] = mat[i];\n mat[i] = tmp;\n\n // Subtract the i-th row to make all the remaining rows 0 in the i-th column\n for (let j = i + 1; j < n; j++) {\n const coef = -mat[j][i] / mat[i][i];\n for (let k = i; k < n + 1; k++) {\n if (i == k) {\n mat[j][k] = 0;\n } else {\n mat[j][k] += coef * mat[i][k];\n }\n }\n }\n }\n\n // Solve Ax=b for upper triangular matrix A (mat)\n const x = new Array(n);\n for (let l = n - 1; l >= 0; l--) {\n x[l] = mat[l][n] / mat[l][l];\n for (let m = l - 1; m >= 0; m--) {\n mat[m][n] -= mat[m][l] * x[l];\n }\n }\n return x;\n}\n\n\n/**\n * Converts radians to to degrees.\n *\n * @param {number} angleInRadians Angle in radians.\n * @return {number} Angle in degrees.\n */\nexport function toDegrees(angleInRadians) {\n return angleInRadians * 180 / Math.PI;\n}\n\n\n/**\n * Converts degrees to radians.\n *\n * @param {number} angleInDegrees Angle in degrees.\n * @return {number} Angle in radians.\n */\nexport function toRadians(angleInDegrees) {\n return angleInDegrees * Math.PI / 180;\n}\n\n/**\n * Returns the modulo of a / b, depending on the sign of b.\n *\n * @param {number} a Dividend.\n * @param {number} b Divisor.\n * @return {number} Modulo.\n */\nexport function modulo(a, b) {\n const r = a % b;\n return r * b < 0 ? r + b : r;\n}\n\n/**\n * Calculates the linearly interpolated value of x between a and b.\n *\n * @param {number} a Number\n * @param {number} b Number\n * @param {number} x Value to be interpolated.\n * @return {number} Interpolated value.\n */\nexport function lerp(a, b, x) {\n return a + x * (b - a);\n}\n","/**\n * @module ol/centerconstraint\n */\nimport {clamp} from './math.js';\n\n\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n\n\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function(center, resolution, size, opt_isMoving) {\n if (center) {\n const viewWidth = onlyCenter ? 0 : size[0] * resolution;\n const viewHeight = onlyCenter ? 0 : size[1] * resolution;\n let minX = extent[0] + viewWidth / 2;\n let maxX = extent[2] - viewWidth / 2;\n let minY = extent[1] + viewHeight / 2;\n let maxY = extent[3] - viewHeight / 2;\n\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n\n let x = clamp(center[0], minX, maxX);\n let y = clamp(center[1], minY, maxY);\n const ratio = 30 * resolution;\n\n // during an interaction, allow some overscroll\n if (opt_isMoving && smooth) {\n x += -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y += -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n\n return [x, y];\n } else {\n return undefined;\n }\n }\n );\n}\n\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate=} center Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n","/**\n * @module ol/extent/Corner\n */\n\n/**\n * Extent corner.\n * @enum {string}\n */\nexport default {\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right'\n};\n","/**\n * @module ol/extent/Relationship\n */\n\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16\n};\n","/**\n * @module ol/extent\n */\nimport {assert} from './asserts.js';\nimport Corner from './extent/Corner.js';\nimport Relationship from './extent/Relationship.js';\n\n\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n const extent = createEmpty();\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent=} opt_extent Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, opt_extent) {\n const minX = Math.min.apply(null, xs);\n const minY = Math.min.apply(null, ys);\n const maxX = Math.max.apply(null, xs);\n const maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n}\n\n\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0] - value;\n opt_extent[1] = extent[1] - value;\n opt_extent[2] = extent[2] + value;\n opt_extent[3] = extent[3] + value;\n return opt_extent;\n } else {\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value\n ];\n }\n}\n\n\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n } else {\n return extent.slice();\n }\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n let dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n } else if (extent[2] < x) {\n dx = x - extent[2];\n } else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n } else if (extent[3] < y) {\n dy = y - extent[3];\n } else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n\n\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return extent1[0] <= extent2[0] && extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] && extent2[3] <= extent1[3];\n}\n\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n\n\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {Relationship} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const x = coordinate[0];\n const y = coordinate[1];\n let relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n } else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n } else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n\n\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n\n\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = minX;\n opt_extent[1] = minY;\n opt_extent[2] = maxX;\n opt_extent[3] = maxY;\n return opt_extent;\n } else {\n return [minX, minY, maxX, maxY];\n }\n}\n\n\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(opt_extent) {\n return createOrUpdate(\n Infinity, Infinity, -Infinity, -Infinity, opt_extent);\n}\n\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, opt_extent) {\n const x = coordinate[0];\n const y = coordinate[1];\n return createOrUpdate(x, y, x, y, opt_extent);\n}\n\n\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, opt_extent) {\n const extent = createOrUpdateEmpty(opt_extent);\n return extendCoordinates(extent, coordinates);\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(flatCoordinates, offset, end, stride, opt_extent) {\n const extent = createOrUpdateEmpty(opt_extent);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n\n/**\n * @param {Array>} rings Rings.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, opt_extent) {\n const extent = createOrUpdateEmpty(opt_extent);\n return extendRings(extent, rings);\n}\n\n\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return extent1[0] == extent2[0] && extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] && extent1[3] == extent2[3];\n}\n\n\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(extent, flatCoordinates, offset, end, stride) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (let i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n\n\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n let val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n\n\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n let area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n\n\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n\n\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n\n\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n\n\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {Corner} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n let coordinate;\n if (corner === Corner.BOTTOM_LEFT) {\n coordinate = getBottomLeft(extent);\n } else if (corner === Corner.BOTTOM_RIGHT) {\n coordinate = getBottomRight(extent);\n } else if (corner === Corner.TOP_LEFT) {\n coordinate = getTopLeft(extent);\n } else if (corner === Corner.TOP_RIGHT) {\n coordinate = getTopRight(extent);\n } else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n const minX = Math.min(extent1[0], extent2[0]);\n const minY = Math.min(extent1[1], extent2[1]);\n const maxX = Math.max(extent1[2], extent2[2]);\n const maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, opt_extent) {\n const dx = resolution * size[0] / 2;\n const dy = resolution * size[1] / 2;\n const cosRotation = Math.cos(rotation);\n const sinRotation = Math.sin(rotation);\n const xCos = dx * cosRotation;\n const xSin = dx * sinRotation;\n const yCos = dy * cosRotation;\n const ySin = dy * sinRotation;\n const x = center[0];\n const y = center[1];\n const x0 = x - xCos + ySin;\n const x1 = x - xCos - ySin;\n const x2 = x + xCos - ySin;\n const x3 = x + xCos + ySin;\n const y0 = y - xSin - yCos;\n const y1 = y - xSin + yCos;\n const y2 = y + xSin + yCos;\n const y3 = y + xSin - yCos;\n return createOrUpdate(\n Math.min(x0, x1, x2, x3), Math.min(y0, y1, y2, y3),\n Math.max(x0, x1, x2, x3), Math.max(y0, y1, y2, y3),\n opt_extent);\n}\n\n\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n const intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n\n\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent=} opt_extent Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, opt_extent) {\n const intersection = opt_extent ? opt_extent : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n } else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n } else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n } else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n } else {\n intersection[3] = extent2[3];\n }\n } else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n\n\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n\n\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n\n\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n\n\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n\n\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1];\n}\n\n\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n } else {\n return extent;\n }\n}\n\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n const deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n const deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n\n\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n let intersects = false;\n const startRel = coordinateRelationship(extent, start);\n const endRel = coordinateRelationship(extent, end);\n if (startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING) {\n intersects = true;\n } else {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const startX = start[0];\n const startY = start[1];\n const endX = end[0];\n const endY = end[1];\n const slope = (endY - startY) / (endX - startX);\n let x, y;\n if (!!(endRel & Relationship.ABOVE) &&\n !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - ((endY - maxY) / slope);\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects && !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)) {\n // potentially intersects right\n y = endY - ((endX - maxX) * slope);\n intersects = y >= minY && y <= maxY;\n }\n if (!intersects && !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)) {\n // potentially intersects bottom\n x = endX - ((endY - minY) / slope);\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects && !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)) {\n // potentially intersects left\n y = endY - ((endX - minX) * slope);\n intersects = y >= minY && y <= maxY;\n }\n\n }\n return intersects;\n}\n\n\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, opt_extent) {\n const coordinates = [\n extent[0], extent[1],\n extent[0], extent[3],\n extent[2], extent[1],\n extent[2], extent[3]\n ];\n transformFn(coordinates, coordinates, 2);\n const xs = [coordinates[0], coordinates[2], coordinates[4], coordinates[6]];\n const ys = [coordinates[1], coordinates[3], coordinates[5], coordinates[7]];\n return _boundingExtentXYs(xs, ys, opt_extent);\n}\n","/**\n * @module ol/resolutionconstraint\n */\nimport {linearFindNearest} from './array.js';\nimport {getHeight, getWidth} from './extent.js';\nimport {clamp} from './math.js';\n\n\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n\n/**\n * Returns a modified resolution taking into acocunt the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent=} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(resolution, maxExtent, viewportSize) {\n const xResolution = getWidth(maxExtent) / viewportSize[0];\n const yResolution = getHeight(maxExtent) / viewportSize[1];\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n let result = Math.min(resolution, maxResolution);\n const ratio = 50;\n\n result *= Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio + 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /= Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) / ratio + 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(resolutions, opt_smooth, opt_maxExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function(resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n const maxResolution = resolutions[0];\n const minResolution = resolutions[resolutions.length - 1];\n const cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size) :\n maxResolution;\n\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n const smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n\n const capped = Math.min(cappedMaxRes, resolution);\n const z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n } else {\n return undefined;\n }\n }\n );\n}\n\n\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number=} opt_minResolution Minimum resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(power, maxResolution, opt_minResolution, opt_smooth, opt_maxExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function(resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n const cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size) :\n maxResolution;\n const minResolution = opt_minResolution !== undefined ? opt_minResolution : 0;\n\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n const smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n\n const tolerance = 1e-9;\n const minZoomLevel = Math.ceil(\n Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance);\n const offset = -direction * (0.5 - tolerance) + 0.5;\n const capped = Math.min(cappedMaxRes, resolution);\n const cappedZoomLevel = Math.floor(\n Math.log(maxResolution / capped) / Math.log(power) + offset);\n const zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n const newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n } else {\n return undefined;\n }\n });\n}\n\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(maxResolution, minResolution, opt_smooth, opt_maxExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function(resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n const cappedMaxRes = opt_maxExtent ?\n getViewportClampedResolution(maxResolution, opt_maxExtent, size) :\n maxResolution;\n const smooth = opt_smooth !== undefined ? opt_smooth : true;\n\n if (!smooth || !opt_isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n } else {\n return undefined;\n }\n }\n );\n}\n","/**\n * @module ol/rotationconstraint\n */\nimport {toRadians} from './math.js';\n\n\n/**\n * @typedef {function((number|undefined), boolean=): (number|undefined)} Type\n */\n\n\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function disable(rotation) {\n if (rotation !== undefined) {\n return 0;\n } else {\n return undefined;\n }\n}\n\n\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function none(rotation) {\n if (rotation !== undefined) {\n return rotation;\n } else {\n return undefined;\n }\n}\n\n\n/**\n * @param {number} n N.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToN(n) {\n const theta = 2 * Math.PI / n;\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function(rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n\n if (rotation !== undefined) {\n rotation = Math.floor(rotation / theta + 0.5) * theta;\n return rotation;\n } else {\n return undefined;\n }\n });\n}\n\n\n/**\n * @param {number=} opt_tolerance Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(opt_tolerance) {\n const tolerance = opt_tolerance || toRadians(5);\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function(rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n\n if (rotation !== undefined) {\n if (Math.abs(rotation) <= tolerance) {\n return 0;\n } else {\n return rotation;\n }\n } else {\n return undefined;\n }\n });\n}\n","/**\n * @module ol/ViewHint\n */\n\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1\n};\n","/**\n * @module ol/ViewProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation'\n};\n","/**\n * @module ol/string\n */\n\n/**\n * @param {number} number Number to be formatted\n * @param {number} width The desired width\n * @param {number=} opt_precision Precision of the output string (i.e. number of decimal places)\n * @returns {string} Formatted string\n */\nexport function padNumber(number, width, opt_precision) {\n const numberString = opt_precision !== undefined ? number.toFixed(opt_precision) : '' + number;\n let decimal = numberString.indexOf('.');\n decimal = decimal === -1 ? numberString.length : decimal;\n return decimal > width ? numberString : new Array(1 + width - decimal).join('0') + numberString;\n}\n\n\n/**\n * Adapted from https://github.com/omichelsen/compare-versions/blob/master/index.js\n * @param {string|number} v1 First version\n * @param {string|number} v2 Second version\n * @returns {number} Value\n */\nexport function compareVersions(v1, v2) {\n const s1 = ('' + v1).split('.');\n const s2 = ('' + v2).split('.');\n\n for (let i = 0; i < Math.max(s1.length, s2.length); i++) {\n const n1 = parseInt(s1[i] || '0', 10);\n const n2 = parseInt(s2[i] || '0', 10);\n\n if (n1 > n2) {\n return 1;\n }\n if (n2 > n1) {\n return -1;\n }\n }\n\n return 0;\n}\n","/**\n * @module ol/coordinate\n */\nimport {modulo} from './math.js';\nimport {padNumber} from './string.js';\n\n\n/**\n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n\n\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n\n\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n\n\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n const r = circle.getRadius();\n const center = circle.getCenter();\n const x0 = center[0];\n const y0 = center[1];\n const x1 = coordinate[0];\n const y1 = coordinate[1];\n\n let dx = x1 - x0;\n const dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n const d = Math.sqrt(dx * dx + dy * dy);\n\n const x = x0 + r * dx / d;\n const y = y0 + r * dy / d;\n\n return [x, y];\n}\n\n\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n const x0 = coordinate[0];\n const y0 = coordinate[1];\n const start = segment[0];\n const end = segment[1];\n const x1 = start[0];\n const y1 = start[1];\n const x2 = end[0];\n const y2 = end[1];\n const dx = x2 - x1;\n const dy = y2 - y1;\n const along = (dx === 0 && dy === 0) ? 0 :\n ((dx * (x0 - x1)) + (dy * (y0 - y1))) / ((dx * dx + dy * dy) || 0);\n let x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n } else if (along >= 1) {\n x = x2;\n y = y2;\n } else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n\n\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY();\n * var out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY(2);\n * var out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(opt_fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function(coordinate) {\n return toStringXY(coordinate, opt_fractionDigits);\n }\n );\n}\n\n\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, opt_fractionDigits) {\n const normalizedDegrees = modulo(degrees + 180, 360) - 180;\n const x = Math.abs(3600 * normalizedDegrees);\n const dflPrecision = opt_fractionDigits || 0;\n const precision = Math.pow(10, dflPrecision);\n\n let deg = Math.floor(x / 3600);\n let min = Math.floor((x - deg * 3600) / 60);\n let sec = x - (deg * 3600) - (min * 60);\n sec = Math.ceil(sec * precision) / precision;\n\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n\n return deg + '\\u00b0 ' + padNumber(min, 2) + '\\u2032 ' +\n padNumber(sec, 2, dflPrecision) + '\\u2033' +\n (normalizedDegrees == 0 ? '' : ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0));\n}\n\n\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, opt_fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(opt_fractionDigits))\n .replace('{y}', coordinate[1].toFixed(opt_fractionDigits));\n } else {\n return '';\n }\n}\n\n\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n let equals = true;\n for (let i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n\n\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n const cosAngle = Math.cos(angle);\n const sinAngle = Math.sin(angle);\n const x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n const y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n\n\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n const dx = coord1[0] - coord2[0];\n const dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n\n\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate,\n closestOnSegment(coordinate, segment));\n}\n\n\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, opt_fractionDigits) {\n if (coordinate) {\n return degreesToStringHDMS('NS', coordinate[1], opt_fractionDigits) + ' ' +\n degreesToStringHDMS('EW', coordinate[0], opt_fractionDigits);\n } else {\n return '';\n }\n}\n\n\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, opt_fractionDigits) {\n return format(coordinate, '{x}, {y}', opt_fractionDigits);\n}\n","/**\n * @module ol/easing\n */\n\n\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n\n\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n\n\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n\n\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n\n\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing~inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n } else {\n return 1 - inAndOut(2 * (t - 0.5));\n }\n}\n","/**\n * @module ol/geom/GeometryType\n */\n\n/**\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, `'Circle'`.\n * @enum {string}\n */\nexport default {\n POINT: 'Point',\n LINE_STRING: 'LineString',\n LINEAR_RING: 'LinearRing',\n POLYGON: 'Polygon',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon',\n GEOMETRY_COLLECTION: 'GeometryCollection',\n CIRCLE: 'Circle'\n};\n","/**\n * @module ol/geom/GeometryLayout\n */\n\n/**\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available. Supported values are `'XY'`,\n * `'XYZ'`, `'XYM'`, `'XYZM'`.\n * @enum {string}\n */\nexport default {\n XY: 'XY',\n XYZ: 'XYZ',\n XYM: 'XYM',\n XYZM: 'XYZM'\n};\n","/**\n * @module ol/geom/flat/transform\n */\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function transform2D(flatCoordinates, offset, end, stride, transform, opt_dest) {\n const dest = opt_dest ? opt_dest : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const x = flatCoordinates[j];\n const y = flatCoordinates[j + 1];\n dest[i++] = transform[0] * x + transform[2] * y + transform[4];\n dest[i++] = transform[1] * x + transform[3] * y + transform[5];\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} angle Angle.\n * @param {Array} anchor Rotation anchor point.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function rotate(flatCoordinates, offset, end, stride, angle, anchor, opt_dest) {\n const dest = opt_dest ? opt_dest : [];\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const anchorX = anchor[0];\n const anchorY = anchor[1];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const deltaX = flatCoordinates[j] - anchorX;\n const deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n\n/**\n * Scale the coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} sx Scale factor in the x-direction.\n * @param {number} sy Scale factor in the y-direction.\n * @param {Array} anchor Scale anchor point.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function scale(flatCoordinates, offset, end, stride, sx, sy, anchor, opt_dest) {\n const dest = opt_dest ? opt_dest : [];\n const anchorX = anchor[0];\n const anchorY = anchor[1];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const deltaX = flatCoordinates[j] - anchorX;\n const deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + sx * deltaX;\n dest[i++] = anchorY + sy * deltaY;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function translate(flatCoordinates, offset, end, stride, deltaX, deltaY, opt_dest) {\n const dest = opt_dest ? opt_dest : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n dest[i++] = flatCoordinates[j] + deltaX;\n dest[i++] = flatCoordinates[j + 1] + deltaY;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n","/**\n * @license\n * Latitude/longitude spherical geodesy formulae taken from\n * http://www.movable-type.co.uk/scripts/latlong.html\n * Licensed under CC-BY-3.0.\n */\n\n/**\n * @module ol/sphere\n */\nimport {toRadians, toDegrees} from './math.js';\nimport GeometryType from './geom/GeometryType.js';\n\n\n/**\n * Object literal with options for the {@link getLength} or {@link getArea}\n * functions.\n * @typedef {Object} SphereMetricOptions\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857']\n * Projection of the geometry. By default, the geometry is assumed to be in\n * Web Mercator.\n * @property {number} [radius=6371008.8] Sphere radius. By default, the\n * [mean Earth radius](https://en.wikipedia.org/wiki/Earth_radius#Mean_radius)\n * for the WGS84 ellipsoid is used.\n */\n\n\n/**\n * The mean Earth radius (1/3 * (2a + b)) for the WGS84 ellipsoid.\n * https://en.wikipedia.org/wiki/Earth_radius#Mean_radius\n * @type {number}\n */\nexport const DEFAULT_RADIUS = 6371008.8;\n\n\n/**\n * Get the great circle distance (in meters) between two geographic coordinates.\n * @param {Array} c1 Starting coordinate.\n * @param {Array} c2 Ending coordinate.\n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {number} The great circle distance between the points (in meters).\n * @api\n */\nexport function getDistance(c1, c2, opt_radius) {\n const radius = opt_radius || DEFAULT_RADIUS;\n const lat1 = toRadians(c1[1]);\n const lat2 = toRadians(c2[1]);\n const deltaLatBy2 = (lat2 - lat1) / 2;\n const deltaLonBy2 = toRadians(c2[0] - c1[0]) / 2;\n const a = Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) +\n Math.sin(deltaLonBy2) * Math.sin(deltaLonBy2) *\n Math.cos(lat1) * Math.cos(lat2);\n return 2 * radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n}\n\n\n/**\n * Get the cumulative great circle length of linestring coordinates (geographic).\n * @param {Array} coordinates Linestring coordinates.\n * @param {number} radius The sphere radius to use.\n * @return {number} The length (in meters).\n */\nfunction getLengthInternal(coordinates, radius) {\n let length = 0;\n for (let i = 0, ii = coordinates.length; i < ii - 1; ++i) {\n length += getDistance(coordinates[i], coordinates[i + 1], radius);\n }\n return length;\n}\n\n\n/**\n * Get the spherical length of a geometry. This length is the sum of the\n * great circle distances between coordinates. For polygons, the length is\n * the sum of all rings. For points, the length is zero. For multi-part\n * geometries, the length is the sum of the length of each part.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions=} opt_options Options for the\n * length calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical length (in meters).\n * @api\n */\nexport function getLength(geometry, opt_options) {\n const options = opt_options || {};\n const radius = options.radius || DEFAULT_RADIUS;\n const projection = options.projection || 'EPSG:3857';\n const type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n let length = 0;\n let coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT: {\n break;\n }\n case GeometryType.LINE_STRING:\n case GeometryType.LINEAR_RING: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n length = getLengthInternal(coordinates, radius);\n break;\n }\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n length += getLengthInternal(coordinates[i], radius);\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n for (j = 0, jj = coords.length; j < jj; ++j) {\n length += getLengthInternal(coords[j], radius);\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n const geometries = /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n length += getLength(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return length;\n}\n\n\n/**\n * Returns the spherical area for a list of coordinates.\n *\n * [Reference](https://trs-new.jpl.nasa.gov/handle/2014/40409)\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007\n *\n * @param {Array} coordinates List of coordinates of a linear\n * ring. If the ring is oriented clockwise, the area will be positive,\n * otherwise it will be negative.\n * @param {number} radius The sphere radius.\n * @return {number} Area (in square meters).\n */\nfunction getAreaInternal(coordinates, radius) {\n let area = 0;\n const len = coordinates.length;\n let x1 = coordinates[len - 1][0];\n let y1 = coordinates[len - 1][1];\n for (let i = 0; i < len; i++) {\n const x2 = coordinates[i][0];\n const y2 = coordinates[i][1];\n area += toRadians(x2 - x1) *\n (2 + Math.sin(toRadians(y1)) +\n Math.sin(toRadians(y2)));\n x1 = x2;\n y1 = y2;\n }\n return area * radius * radius / 2.0;\n}\n\n\n/**\n * Get the spherical area of a geometry. This is the area (in meters) assuming\n * that polygon edges are segments of great circles on a sphere.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions=} opt_options Options for the area\n * calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical area (in square meters).\n * @api\n */\nexport function getArea(geometry, opt_options) {\n const options = opt_options || {};\n const radius = options.radius || DEFAULT_RADIUS;\n const projection = options.projection || 'EPSG:3857';\n const type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n let area = 0;\n let coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT:\n case GeometryType.LINE_STRING:\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.LINEAR_RING: {\n break;\n }\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/Polygon.js\").default} */ (geometry).getCoordinates();\n area = Math.abs(getAreaInternal(coordinates[0], radius));\n for (i = 1, ii = coordinates.length; i < ii; ++i) {\n area -= Math.abs(getAreaInternal(coordinates[i], radius));\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n area += Math.abs(getAreaInternal(coords[0], radius));\n for (j = 1, jj = coords.length; j < jj; ++j) {\n area -= Math.abs(getAreaInternal(coords[j], radius));\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n const geometries = /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n area += getArea(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return area;\n}\n\n\n/**\n * Returns the coordinate at the given distance and bearing from `c1`.\n *\n * @param {import(\"./coordinate.js\").Coordinate} c1 The origin point (`[lon, lat]` in degrees).\n * @param {number} distance The great-circle distance between the origin\n * point and the target point.\n * @param {number} bearing The bearing (in radians).\n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {import(\"./coordinate.js\").Coordinate} The target point.\n */\nexport function offset(c1, distance, bearing, opt_radius) {\n const radius = opt_radius || DEFAULT_RADIUS;\n const lat1 = toRadians(c1[1]);\n const lon1 = toRadians(c1[0]);\n const dByR = distance / radius;\n const lat = Math.asin(\n Math.sin(lat1) * Math.cos(dByR) +\n Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing));\n const lon = lon1 + Math.atan2(\n Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1),\n Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat));\n return [toDegrees(lon), toDegrees(lat)];\n}\n","/**\n * @module ol/proj/Units\n */\n\n/**\n * Projection units: `'degrees'`, `'ft'`, `'m'`, `'pixels'`, `'tile-pixels'` or\n * `'us-ft'`.\n * @enum {string}\n */\nconst Units = {\n DEGREES: 'degrees',\n FEET: 'ft',\n METERS: 'm',\n PIXELS: 'pixels',\n TILE_PIXELS: 'tile-pixels',\n USFEET: 'us-ft'\n};\n\n\n/**\n * Meters per unit lookup table.\n * @const\n * @type {Object}\n * @api\n */\nexport const METERS_PER_UNIT = {};\n// use the radius of the Normal sphere\nMETERS_PER_UNIT[Units.DEGREES] = 2 * Math.PI * 6370997 / 360;\nMETERS_PER_UNIT[Units.FEET] = 0.3048;\nMETERS_PER_UNIT[Units.METERS] = 1;\nMETERS_PER_UNIT[Units.USFEET] = 1200 / 3937;\n\nexport default Units;\n","/**\n * @module ol/proj/Projection\n */\nimport {METERS_PER_UNIT} from './Units.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.\n * @property {import(\"./Units.js\").default|string} [units] Units. Required unless a\n * proj4 projection is defined for `code`.\n * @property {import(\"../extent.js\").Extent} [extent] The validity extent for the SRS.\n * @property {string} [axisOrientation='enu'] The axis orientation as specified in Proj4.\n * @property {boolean} [global=false] Whether the projection is valid for the whole globe.\n * @property {number} [metersPerUnit] The meters per unit for the SRS.\n * If not provided, the `units` are used to get the meters per unit from the {@link module:ol/proj/Units~METERS_PER_UNIT}\n * lookup table.\n * @property {import(\"../extent.js\").Extent} [worldExtent] The world extent for the SRS.\n * @property {function(number, import(\"../coordinate.js\").Coordinate):number} [getPointResolution]\n * Function to determine resolution at a point. The function is called with a\n * `{number}` view resolution and an `{import(\"../coordinate.js\").Coordinate}` as arguments, and returns\n * the `{number}` resolution in projection units at the passed coordinate. If this is `undefined`,\n * the default {@link module:ol/proj#getPointResolution} function will be used.\n */\n\n\n/**\n * @classdesc\n * Projection definition class. One of these is created for each projection\n * supported in the application and stored in the {@link module:ol/proj} namespace.\n * You can use these in applications, but this is not required, as API params\n * and options use {@link module:ol/proj~ProjectionLike} which means the simple string\n * code will suffice.\n *\n * You can use {@link module:ol/proj~get} to retrieve the object for a particular\n * projection.\n *\n * The library includes definitions for `EPSG:4326` and `EPSG:3857`, together\n * with the following aliases:\n * * `EPSG:4326`: CRS:84, urn:ogc:def:crs:EPSG:6.6:4326,\n * urn:ogc:def:crs:OGC:1.3:CRS84, urn:ogc:def:crs:OGC:2:84,\n * http://www.opengis.net/gml/srs/epsg.xml#4326,\n * urn:x-ogc:def:crs:EPSG:4326\n * * `EPSG:3857`: EPSG:102100, EPSG:102113, EPSG:900913,\n * urn:ogc:def:crs:EPSG:6.18:3:3857,\n * http://www.opengis.net/gml/srs/epsg.xml#3857\n *\n * If you use [proj4js](https://github.com/proj4js/proj4js), aliases can\n * be added using `proj4.defs()`. After all required projection definitions are\n * added, call the {@link module:ol/proj/proj4~register} function.\n *\n * @api\n */\nclass Projection {\n\n /**\n * @param {Options} options Projection options.\n */\n constructor(options) {\n /**\n * @private\n * @type {string}\n */\n this.code_ = options.code;\n\n /**\n * Units of projected coordinates. When set to `TILE_PIXELS`, a\n * `this.extent_` and `this.worldExtent_` must be configured properly for each\n * tile.\n * @private\n * @type {import(\"./Units.js\").default}\n */\n this.units_ = /** @type {import(\"./Units.js\").default} */ (options.units);\n\n /**\n * Validity extent of the projection in projected coordinates. For projections\n * with `TILE_PIXELS` units, this is the extent of the tile in\n * tile pixel space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = options.extent !== undefined ? options.extent : null;\n\n /**\n * Extent of the world in EPSG:4326. For projections with\n * `TILE_PIXELS` units, this is the extent of the tile in\n * projected coordinate space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.worldExtent_ = options.worldExtent !== undefined ?\n options.worldExtent : null;\n\n /**\n * @private\n * @type {string}\n */\n this.axisOrientation_ = options.axisOrientation !== undefined ?\n options.axisOrientation : 'enu';\n\n /**\n * @private\n * @type {boolean}\n */\n this.global_ = options.global !== undefined ? options.global : false;\n\n /**\n * @private\n * @type {boolean}\n */\n this.canWrapX_ = !!(this.global_ && this.extent_);\n\n /**\n * @private\n * @type {function(number, import(\"../coordinate.js\").Coordinate):number|undefined}\n */\n this.getPointResolutionFunc_ = options.getPointResolution;\n\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n this.defaultTileGrid_ = null;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.metersPerUnit_ = options.metersPerUnit;\n }\n\n /**\n * @return {boolean} The projection is suitable for wrapping the x-axis\n */\n canWrapX() {\n return this.canWrapX_;\n }\n\n /**\n * Get the code for this projection, e.g. 'EPSG:4326'.\n * @return {string} Code.\n * @api\n */\n getCode() {\n return this.code_;\n }\n\n /**\n * Get the validity extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n getExtent() {\n return this.extent_;\n }\n\n /**\n * Get the units of this projection.\n * @return {import(\"./Units.js\").default} Units.\n * @api\n */\n getUnits() {\n return this.units_;\n }\n\n /**\n * Get the amount of meters per unit of this projection. If the projection is\n * not configured with `metersPerUnit` or a units identifier, the return is\n * `undefined`.\n * @return {number|undefined} Meters.\n * @api\n */\n getMetersPerUnit() {\n return this.metersPerUnit_ || METERS_PER_UNIT[this.units_];\n }\n\n /**\n * Get the world extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n getWorldExtent() {\n return this.worldExtent_;\n }\n\n /**\n * Get the axis orientation of this projection.\n * Example values are:\n * enu - the default easting, northing, elevation.\n * neu - northing, easting, up - useful for \"lat/long\" geographic coordinates,\n * or south orientated transverse mercator.\n * wnu - westing, northing, up - some planetary coordinate systems have\n * \"west positive\" coordinate systems\n * @return {string} Axis orientation.\n * @api\n */\n getAxisOrientation() {\n return this.axisOrientation_;\n }\n\n /**\n * Is this projection a global projection which spans the whole world?\n * @return {boolean} Whether the projection is global.\n * @api\n */\n isGlobal() {\n return this.global_;\n }\n\n /**\n * Set if the projection is a global projection which spans the whole world\n * @param {boolean} global Whether the projection is global.\n * @api\n */\n setGlobal(global) {\n this.global_ = global;\n this.canWrapX_ = !!(global && this.extent_);\n }\n\n /**\n * @return {import(\"../tilegrid/TileGrid.js\").default} The default tile grid.\n */\n getDefaultTileGrid() {\n return this.defaultTileGrid_;\n }\n\n /**\n * @param {import(\"../tilegrid/TileGrid.js\").default} tileGrid The default tile grid.\n */\n setDefaultTileGrid(tileGrid) {\n this.defaultTileGrid_ = tileGrid;\n }\n\n /**\n * Set the validity extent for this projection.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n setExtent(extent) {\n this.extent_ = extent;\n this.canWrapX_ = !!(this.global_ && extent);\n }\n\n /**\n * Set the world extent for this projection.\n * @param {import(\"../extent.js\").Extent} worldExtent World extent\n * [minlon, minlat, maxlon, maxlat].\n * @api\n */\n setWorldExtent(worldExtent) {\n this.worldExtent_ = worldExtent;\n }\n\n /**\n * Set the getPointResolution function (see {@link module:ol/proj~getPointResolution}\n * for this projection.\n * @param {function(number, import(\"../coordinate.js\").Coordinate):number} func Function\n * @api\n */\n setGetPointResolution(func) {\n this.getPointResolutionFunc_ = func;\n }\n\n /**\n * Get the custom point resolution function for this projection (if set).\n * @return {function(number, import(\"../coordinate.js\").Coordinate):number|undefined} The custom point\n * resolution function (if set).\n */\n getPointResolutionFunc() {\n return this.getPointResolutionFunc_;\n }\n}\n\nexport default Projection;\n","/**\n * @module ol/proj/epsg3857\n */\nimport {cosh} from '../math.js';\nimport Projection from './Projection.js';\nimport Units from './Units.js';\n\n\n/**\n * Radius of WGS84 sphere\n *\n * @const\n * @type {number}\n */\nexport const RADIUS = 6378137;\n\n\n/**\n * @const\n * @type {number}\n */\nexport const HALF_SIZE = Math.PI * RADIUS;\n\n\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const EXTENT = [\n -HALF_SIZE, -HALF_SIZE,\n HALF_SIZE, HALF_SIZE\n];\n\n\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const WORLD_EXTENT = [-180, -85, 180, 85];\n\n\n/**\n * @classdesc\n * Projection object for web/spherical Mercator (EPSG:3857).\n */\nclass EPSG3857Projection extends Projection {\n\n /**\n * @param {string} code Code.\n */\n constructor(code) {\n super({\n code: code,\n units: Units.METERS,\n extent: EXTENT,\n global: true,\n worldExtent: WORLD_EXTENT,\n getPointResolution: function(resolution, point) {\n return resolution / cosh(point[1] / RADIUS);\n }\n });\n\n }\n\n}\n\n\n/**\n * Projections equal to EPSG:3857.\n *\n * @const\n * @type {Array}\n */\nexport const PROJECTIONS = [\n new EPSG3857Projection('EPSG:3857'),\n new EPSG3857Projection('EPSG:102100'),\n new EPSG3857Projection('EPSG:102113'),\n new EPSG3857Projection('EPSG:900913'),\n new EPSG3857Projection('urn:ogc:def:crs:EPSG:6.18:3:3857'),\n new EPSG3857Projection('urn:ogc:def:crs:EPSG::3857'),\n new EPSG3857Projection('http://www.opengis.net/gml/srs/epsg.xml#3857')\n];\n\n\n/**\n * Transformation from EPSG:4326 to EPSG:3857.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function fromEPSG4326(input, opt_output, opt_dimension) {\n const length = input.length;\n const dimension = opt_dimension > 1 ? opt_dimension : 2;\n let output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n } else {\n output = new Array(length);\n }\n }\n const halfSize = HALF_SIZE;\n for (let i = 0; i < length; i += dimension) {\n output[i] = halfSize * input[i] / 180;\n let y = RADIUS *\n Math.log(Math.tan(Math.PI * (+input[i + 1] + 90) / 360));\n if (y > halfSize) {\n y = halfSize;\n } else if (y < -halfSize) {\n y = -halfSize;\n }\n output[i + 1] = y;\n }\n return output;\n}\n\n\n/**\n * Transformation from EPSG:3857 to EPSG:4326.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function toEPSG4326(input, opt_output, opt_dimension) {\n const length = input.length;\n const dimension = opt_dimension > 1 ? opt_dimension : 2;\n let output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n } else {\n output = new Array(length);\n }\n }\n for (let i = 0; i < length; i += dimension) {\n output[i] = 180 * input[i] / HALF_SIZE;\n output[i + 1] = 360 * Math.atan(\n Math.exp(input[i + 1] / RADIUS)) / Math.PI - 90;\n }\n return output;\n}\n","/**\n * @module ol/proj/epsg4326\n */\nimport Projection from './Projection.js';\nimport Units from './Units.js';\n\n\n/**\n * Semi-major radius of the WGS84 ellipsoid.\n *\n * @const\n * @type {number}\n */\nexport const RADIUS = 6378137;\n\n\n/**\n * Extent of the EPSG:4326 projection which is the whole world.\n *\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport const EXTENT = [-180, -90, 180, 90];\n\n\n/**\n * @const\n * @type {number}\n */\nexport const METERS_PER_UNIT = Math.PI * RADIUS / 180;\n\n\n/**\n * @classdesc\n * Projection object for WGS84 geographic coordinates (EPSG:4326).\n *\n * Note that OpenLayers does not strictly comply with the EPSG definition.\n * The EPSG registry defines 4326 as a CRS for Latitude,Longitude (y,x).\n * OpenLayers treats EPSG:4326 as a pseudo-projection, with x,y coordinates.\n */\nclass EPSG4326Projection extends Projection {\n\n /**\n * @param {string} code Code.\n * @param {string=} opt_axisOrientation Axis orientation.\n */\n constructor(code, opt_axisOrientation) {\n super({\n code: code,\n units: Units.DEGREES,\n extent: EXTENT,\n axisOrientation: opt_axisOrientation,\n global: true,\n metersPerUnit: METERS_PER_UNIT,\n worldExtent: EXTENT\n });\n\n }\n\n}\n\n\n/**\n * Projections equal to EPSG:4326.\n *\n * @const\n * @type {Array}\n */\nexport const PROJECTIONS = [\n new EPSG4326Projection('CRS:84'),\n new EPSG4326Projection('EPSG:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:EPSG::4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:EPSG:6.6:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:1.3:CRS84'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:2:84'),\n new EPSG4326Projection('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),\n new EPSG4326Projection('urn:x-ogc:def:crs:EPSG:4326', 'neu')\n];\n","/**\n * @module ol/proj/transforms\n */\nimport {isEmpty} from '../obj.js';\n\n\n/**\n * @private\n * @type {!Object>}\n */\nlet transforms = {};\n\n\n/**\n * Clear the transform cache.\n */\nexport function clear() {\n transforms = {};\n}\n\n\n/**\n * Registers a conversion function to convert coordinates from the source\n * projection to the destination projection.\n *\n * @param {import(\"./Projection.js\").default} source Source.\n * @param {import(\"./Projection.js\").default} destination Destination.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform.\n */\nexport function add(source, destination, transformFn) {\n const sourceCode = source.getCode();\n const destinationCode = destination.getCode();\n if (!(sourceCode in transforms)) {\n transforms[sourceCode] = {};\n }\n transforms[sourceCode][destinationCode] = transformFn;\n}\n\n\n/**\n * Unregisters the conversion function to convert coordinates from the source\n * projection to the destination projection. This method is used to clean up\n * cached transforms during testing.\n *\n * @param {import(\"./Projection.js\").default} source Source projection.\n * @param {import(\"./Projection.js\").default} destination Destination projection.\n * @return {import(\"../proj.js\").TransformFunction} transformFn The unregistered transform.\n */\nexport function remove(source, destination) {\n const sourceCode = source.getCode();\n const destinationCode = destination.getCode();\n const transform = transforms[sourceCode][destinationCode];\n delete transforms[sourceCode][destinationCode];\n if (isEmpty(transforms[sourceCode])) {\n delete transforms[sourceCode];\n }\n return transform;\n}\n\n\n/**\n * Get a transform given a source code and a destination code.\n * @param {string} sourceCode The code for the source projection.\n * @param {string} destinationCode The code for the destination projection.\n * @return {import(\"../proj.js\").TransformFunction|undefined} The transform function (if found).\n */\nexport function get(sourceCode, destinationCode) {\n let transform;\n if (sourceCode in transforms && destinationCode in transforms[sourceCode]) {\n transform = transforms[sourceCode][destinationCode];\n }\n return transform;\n}\n","/**\n * @module ol/proj/projections\n */\n\n\n/**\n * @type {Object}\n */\nlet cache = {};\n\n\n/**\n * Clear the projections cache.\n */\nexport function clear() {\n cache = {};\n}\n\n\n/**\n * Get a cached projection by code.\n * @param {string} code The code for the projection.\n * @return {import(\"./Projection.js\").default} The projection (if cached).\n */\nexport function get(code) {\n return cache[code] || null;\n}\n\n\n/**\n * Add a projection to the cache.\n * @param {string} code The projection code.\n * @param {import(\"./Projection.js\").default} projection The projection to cache.\n */\nexport function add(code, projection) {\n cache[code] = projection;\n}\n","/**\n * @module ol/proj\n */\n\n/**\n * The ol/proj module stores:\n * * a list of {@link module:ol/proj/Projection}\n * objects, one for each projection supported by the application\n * * a list of transform functions needed to convert coordinates in one projection\n * into another.\n *\n * The static functions are the methods used to maintain these.\n * Each transform function can handle not only simple coordinate pairs, but also\n * large arrays of coordinates such as vector geometries.\n *\n * When loaded, the library adds projection objects for EPSG:4326 (WGS84\n * geographic coordinates) and EPSG:3857 (Web or Spherical Mercator, as used\n * for example by Bing Maps or OpenStreetMap), together with the relevant\n * transform functions.\n *\n * Additional transforms may be added by using the http://proj4js.org/\n * library (version 2.2 or later). You can use the full build supplied by\n * Proj4js, or create a custom build to support those projections you need; see\n * the Proj4js website for how to do this. You also need the Proj4js definitions\n * for the required projections. These definitions can be obtained from\n * https://epsg.io/, and are a JS function, so can be loaded in a script\n * tag (as in the examples) or pasted into your application.\n *\n * After all required projection definitions are added to proj4's registry (by\n * using `proj4.defs()`), simply call `register(proj4)` from the `ol/proj/proj4`\n * package. Existing transforms are not changed by this function. See\n * examples/wms-image-custom-proj for an example of this.\n *\n * Additional projection definitions can be registered with `proj4.defs()` any\n * time. Just make sure to call `register(proj4)` again; for example, with user-supplied data where you don't\n * know in advance what projections are needed, you can initially load minimal\n * support and then load whichever are requested.\n *\n * Note that Proj4js does not support projection extents. If you want to add\n * one for creating default tile grids, you can add it after the Projection\n * object has been created with `setExtent`, for example,\n * `get('EPSG:1234').setExtent(extent)`.\n *\n * In addition to Proj4js support, any transform functions can be added with\n * {@link module:ol/proj~addCoordinateTransforms}. To use this, you must first create\n * a {@link module:ol/proj/Projection} object for the new projection and add it with\n * {@link module:ol/proj~addProjection}. You can then add the forward and inverse\n * functions with {@link module:ol/proj~addCoordinateTransforms}. See\n * examples/wms-custom-proj for an example of this.\n *\n * Note that if no transforms are needed and you only need to define the\n * projection, just add a {@link module:ol/proj/Projection} with\n * {@link module:ol/proj~addProjection}. See examples/wms-no-proj for an example of\n * this.\n */\nimport {getDistance} from './sphere.js';\nimport {applyTransform} from './extent.js';\nimport {modulo} from './math.js';\nimport {toEPSG4326, fromEPSG4326, PROJECTIONS as EPSG3857_PROJECTIONS} from './proj/epsg3857.js';\nimport {PROJECTIONS as EPSG4326_PROJECTIONS} from './proj/epsg4326.js';\nimport Projection from './proj/Projection.js';\nimport Units, {METERS_PER_UNIT} from './proj/Units.js';\nimport {add as addTransformFunc, clear as clearTransformFuncs, get as getTransformFunc} from './proj/transforms.js';\nimport {add as addProj, clear as clearProj, get as getProj} from './proj/projections.js';\n\n\n/**\n * A projection as {@link module:ol/proj/Projection}, SRS identifier\n * string or undefined.\n * @typedef {Projection|string|undefined} ProjectionLike\n * @api\n */\n\n\n/**\n * A transform function accepts an array of input coordinate values, an optional\n * output array, and an optional dimension (default should be 2). The function\n * transforms the input coordinate values, populates the output array, and\n * returns the output array.\n *\n * @typedef {function(Array, Array=, number=): Array} TransformFunction\n * @api\n */\n\n\nexport {METERS_PER_UNIT};\n\nexport {Projection};\n\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Output coordinate array (new array, same coordinate\n * values).\n */\nexport function cloneTransform(input, opt_output, opt_dimension) {\n let output;\n if (opt_output !== undefined) {\n for (let i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n output = opt_output;\n } else {\n output = input.slice();\n }\n return output;\n}\n\n\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Input coordinate array (same array as input).\n */\nexport function identityTransform(input, opt_output, opt_dimension) {\n if (opt_output !== undefined && input !== opt_output) {\n for (let i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n input = opt_output;\n }\n return input;\n}\n\n\n/**\n * Add a Projection object to the list of supported projections that can be\n * looked up by their code.\n *\n * @param {Projection} projection Projection instance.\n * @api\n */\nexport function addProjection(projection) {\n addProj(projection.getCode(), projection);\n addTransformFunc(projection, projection, cloneTransform);\n}\n\n\n/**\n * @param {Array} projections Projections.\n */\nexport function addProjections(projections) {\n projections.forEach(addProjection);\n}\n\n\n/**\n * Fetches a Projection object for the code specified.\n *\n * @param {ProjectionLike} projectionLike Either a code string which is\n * a combination of authority and identifier such as \"EPSG:4326\", or an\n * existing projection object, or undefined.\n * @return {Projection} Projection object, or null if not in list.\n * @api\n */\nexport function get(projectionLike) {\n return typeof projectionLike === 'string' ?\n getProj(/** @type {string} */ (projectionLike)) :\n (/** @type {Projection} */ (projectionLike) || null);\n}\n\n\n/**\n * Get the resolution of the point in degrees or distance units.\n * For projections with degrees as the unit this will simply return the\n * provided resolution. For other projections the point resolution is\n * by default estimated by transforming the 'point' pixel to EPSG:4326,\n * measuring its width and height on the normal sphere,\n * and taking the average of the width and height.\n * A custom function can be provided for a specific projection, either\n * by setting the `getPointResolution` option in the\n * {@link module:ol/proj/Projection~Projection} constructor or by using\n * {@link module:ol/proj/Projection~Projection#setGetPointResolution} to change an existing\n * projection object.\n * @param {ProjectionLike} projection The projection.\n * @param {number} resolution Nominal resolution in projection units.\n * @param {import(\"./coordinate.js\").Coordinate} point Point to find adjusted resolution at.\n * @param {Units=} opt_units Units to get the point resolution in.\n * Default is the projection's units.\n * @return {number} Point resolution.\n * @api\n */\nexport function getPointResolution(projection, resolution, point, opt_units) {\n projection = get(projection);\n let pointResolution;\n const getter = projection.getPointResolutionFunc();\n if (getter) {\n pointResolution = getter(resolution, point);\n if (opt_units && opt_units !== projection.getUnits()) {\n const metersPerUnit = projection.getMetersPerUnit();\n if (metersPerUnit) {\n pointResolution = pointResolution * metersPerUnit / METERS_PER_UNIT[opt_units];\n }\n }\n } else {\n const units = projection.getUnits();\n if (units == Units.DEGREES && !opt_units || opt_units == Units.DEGREES) {\n pointResolution = resolution;\n } else {\n // Estimate point resolution by transforming the center pixel to EPSG:4326,\n // measuring its width and height on the normal sphere, and taking the\n // average of the width and height.\n const toEPSG4326 = getTransformFromProjections(projection, get('EPSG:4326'));\n let vertices = [\n point[0] - resolution / 2, point[1],\n point[0] + resolution / 2, point[1],\n point[0], point[1] - resolution / 2,\n point[0], point[1] + resolution / 2\n ];\n vertices = toEPSG4326(vertices, vertices, 2);\n const width = getDistance(vertices.slice(0, 2), vertices.slice(2, 4));\n const height = getDistance(vertices.slice(4, 6), vertices.slice(6, 8));\n pointResolution = (width + height) / 2;\n const metersPerUnit = opt_units ?\n METERS_PER_UNIT[opt_units] :\n projection.getMetersPerUnit();\n if (metersPerUnit !== undefined) {\n pointResolution /= metersPerUnit;\n }\n }\n }\n return pointResolution;\n}\n\n\n/**\n * Registers transformation functions that don't alter coordinates. Those allow\n * to transform between projections with equal meaning.\n *\n * @param {Array} projections Projections.\n * @api\n */\nexport function addEquivalentProjections(projections) {\n addProjections(projections);\n projections.forEach(function(source) {\n projections.forEach(function(destination) {\n if (source !== destination) {\n addTransformFunc(source, destination, cloneTransform);\n }\n });\n });\n}\n\n\n/**\n * Registers transformation functions to convert coordinates in any projection\n * in projection1 to any projection in projection2.\n *\n * @param {Array} projections1 Projections with equal\n * meaning.\n * @param {Array} projections2 Projections with equal\n * meaning.\n * @param {TransformFunction} forwardTransform Transformation from any\n * projection in projection1 to any projection in projection2.\n * @param {TransformFunction} inverseTransform Transform from any projection\n * in projection2 to any projection in projection1..\n */\nexport function addEquivalentTransforms(projections1, projections2, forwardTransform, inverseTransform) {\n projections1.forEach(function(projection1) {\n projections2.forEach(function(projection2) {\n addTransformFunc(projection1, projection2, forwardTransform);\n addTransformFunc(projection2, projection1, inverseTransform);\n });\n });\n}\n\n\n/**\n * Clear all cached projections and transforms.\n */\nexport function clearAllProjections() {\n clearProj();\n clearTransformFuncs();\n}\n\n\n/**\n * @param {Projection|string|undefined} projection Projection.\n * @param {string} defaultCode Default code.\n * @return {Projection} Projection.\n */\nexport function createProjection(projection, defaultCode) {\n if (!projection) {\n return get(defaultCode);\n } else if (typeof projection === 'string') {\n return get(projection);\n } else {\n return (\n /** @type {Projection} */ (projection)\n );\n }\n}\n\n\n/**\n * Creates a {@link module:ol/proj~TransformFunction} from a simple 2D coordinate transform\n * function.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} coordTransform Coordinate\n * transform.\n * @return {TransformFunction} Transform function.\n */\nexport function createTransformFromCoordinateTransform(coordTransform) {\n return (\n /**\n * @param {Array} input Input.\n * @param {Array=} opt_output Output.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Output.\n */\n function(input, opt_output, opt_dimension) {\n const length = input.length;\n const dimension = opt_dimension !== undefined ? opt_dimension : 2;\n const output = opt_output !== undefined ? opt_output : new Array(length);\n for (let i = 0; i < length; i += dimension) {\n const point = coordTransform([input[i], input[i + 1]]);\n output[i] = point[0];\n output[i + 1] = point[1];\n for (let j = dimension - 1; j >= 2; --j) {\n output[i + j] = input[i + j];\n }\n }\n return output;\n });\n}\n\n\n/**\n * Registers coordinate transform functions to convert coordinates between the\n * source projection and the destination projection.\n * The forward and inverse functions convert coordinate pairs; this function\n * converts these into the functions used internally which also handle\n * extents and coordinate arrays.\n *\n * @param {ProjectionLike} source Source projection.\n * @param {ProjectionLike} destination Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} forward The forward transform\n * function (that is, from the source projection to the destination\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} inverse The inverse transform\n * function (that is, from the destination projection to the source\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @api\n */\nexport function addCoordinateTransforms(source, destination, forward, inverse) {\n const sourceProj = get(source);\n const destProj = get(destination);\n addTransformFunc(sourceProj, destProj, createTransformFromCoordinateTransform(forward));\n addTransformFunc(destProj, sourceProj, createTransformFromCoordinateTransform(inverse));\n}\n\n\n/**\n * Transforms a coordinate from longitude/latitude to a different projection.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate as longitude and latitude, i.e.\n * an array with longitude as 1st and latitude as 2nd element.\n * @param {ProjectionLike=} opt_projection Target projection. The\n * default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate projected to the target projection.\n * @api\n */\nexport function fromLonLat(coordinate, opt_projection) {\n return transform(coordinate, 'EPSG:4326',\n opt_projection !== undefined ? opt_projection : 'EPSG:3857');\n}\n\n\n/**\n * Transforms a coordinate to longitude/latitude.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Projected coordinate.\n * @param {ProjectionLike=} opt_projection Projection of the coordinate.\n * The default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate as longitude and latitude, i.e. an array\n * with longitude as 1st and latitude as 2nd element.\n * @api\n */\nexport function toLonLat(coordinate, opt_projection) {\n const lonLat = transform(coordinate,\n opt_projection !== undefined ? opt_projection : 'EPSG:3857', 'EPSG:4326');\n const lon = lonLat[0];\n if (lon < -180 || lon > 180) {\n lonLat[0] = modulo(lon + 180, 360) - 180;\n }\n return lonLat;\n}\n\n\n/**\n * Checks if two projections are the same, that is every coordinate in one\n * projection does represent the same geographic point as the same coordinate in\n * the other projection.\n *\n * @param {Projection} projection1 Projection 1.\n * @param {Projection} projection2 Projection 2.\n * @return {boolean} Equivalent.\n * @api\n */\nexport function equivalent(projection1, projection2) {\n if (projection1 === projection2) {\n return true;\n }\n const equalUnits = projection1.getUnits() === projection2.getUnits();\n if (projection1.getCode() === projection2.getCode()) {\n return equalUnits;\n } else {\n const transformFunc = getTransformFromProjections(projection1, projection2);\n return transformFunc === cloneTransform && equalUnits;\n }\n}\n\n\n/**\n * Searches in the list of transform functions for the function for converting\n * coordinates from the source projection to the destination projection.\n *\n * @param {Projection} sourceProjection Source Projection object.\n * @param {Projection} destinationProjection Destination Projection\n * object.\n * @return {TransformFunction} Transform function.\n */\nexport function getTransformFromProjections(sourceProjection, destinationProjection) {\n const sourceCode = sourceProjection.getCode();\n const destinationCode = destinationProjection.getCode();\n let transformFunc = getTransformFunc(sourceCode, destinationCode);\n if (!transformFunc) {\n transformFunc = identityTransform;\n }\n return transformFunc;\n}\n\n\n/**\n * Given the projection-like objects, searches for a transformation\n * function to convert a coordinates array from the source projection to the\n * destination projection.\n *\n * @param {ProjectionLike} source Source.\n * @param {ProjectionLike} destination Destination.\n * @return {TransformFunction} Transform function.\n * @api\n */\nexport function getTransform(source, destination) {\n const sourceProjection = get(source);\n const destinationProjection = get(destination);\n return getTransformFromProjections(sourceProjection, destinationProjection);\n}\n\n\n/**\n * Transforms a coordinate from source projection to destination projection.\n * This returns a new coordinate (and does not modify the original).\n *\n * See {@link module:ol/proj~transformExtent} for extent transformation.\n * See the transform method of {@link module:ol/geom/Geometry~Geometry} and its\n * subclasses for geometry transforms.\n *\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\nexport function transform(coordinate, source, destination) {\n const transformFunc = getTransform(source, destination);\n return transformFunc(coordinate, undefined, coordinate.length);\n}\n\n\n/**\n * Transforms an extent from source projection to destination projection. This\n * returns a new extent (and does not modify the original).\n *\n * @param {import(\"./extent.js\").Extent} extent The extent to transform.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination) {\n const transformFunc = getTransform(source, destination);\n return applyTransform(extent, transformFunc);\n}\n\n\n/**\n * Transforms the given point to the destination projection.\n *\n * @param {import(\"./coordinate.js\").Coordinate} point Point.\n * @param {Projection} sourceProjection Source projection.\n * @param {Projection} destinationProjection Destination projection.\n * @return {import(\"./coordinate.js\").Coordinate} Point.\n */\nexport function transformWithProjections(point, sourceProjection, destinationProjection) {\n const transformFunc = getTransformFromProjections(sourceProjection, destinationProjection);\n return transformFunc(point);\n}\n\n/**\n * @type {?Projection}\n */\nlet userProjection = null;\n\n/**\n * Set the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @param {ProjectionLike} projection The user projection.\n */\nexport function setUserProjection(projection) {\n userProjection = get(projection);\n}\n\n/**\n * Clear the user projection if set. Note that this method is not yet a part of\n * the stable API. Support for user projections is not yet complete and should\n * be considered experimental.\n */\nexport function clearUserProjection() {\n userProjection = null;\n}\n\n/**\n * Get the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @returns {?Projection} The user projection (or null if not set).\n */\nexport function getUserProjection() {\n return userProjection;\n}\n\n/**\n * Use geographic coordinates (WGS-84 datum) in API methods. Note that this\n * method is not yet a part of the stable API. Support for user projections is\n * not yet complete and should be considered experimental.\n */\nexport function useGeographic() {\n setUserProjection('EPSG:4326');\n}\n\n/**\n * Return a coordinate transformed into the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} sourceProjection The input coordinate projection.\n * @returns {Array} The input coordinate in the user projection.\n */\nexport function toUserCoordinate(coordinate, sourceProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, sourceProjection, userProjection);\n}\n\n/**\n * Return a coordinate transformed from the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} destProjection The destination projection.\n * @returns {Array} The input coordinate transformed.\n */\nexport function fromUserCoordinate(coordinate, destProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, userProjection, destProjection);\n}\n\n/**\n * Return an extent transformed into the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} sourceProjection The input extent projection.\n * @returns {import(\"./extent.js\").Extent} The input extent in the user projection.\n */\nexport function toUserExtent(extent, sourceProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, sourceProjection, userProjection);\n}\n\n/**\n * Return an extent transformed from the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} destProjection The destination projection.\n * @returns {import(\"./extent.js\").Extent} The input extent transformed.\n */\nexport function fromUserExtent(extent, destProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, userProjection, destProjection);\n}\n\n/**\n * Add transforms to and from EPSG:4326 and EPSG:3857. This function is called\n * by when this module is executed and should only need to be called again after\n * `clearAllProjections()` is called (e.g. in tests).\n */\nexport function addCommon() {\n // Add transformations that don't alter coordinates to convert within set of\n // projections with equal meaning.\n addEquivalentProjections(EPSG3857_PROJECTIONS);\n addEquivalentProjections(EPSG4326_PROJECTIONS);\n // Add transformations to convert EPSG:4326 like coordinates to EPSG:3857 like\n // coordinates and back.\n addEquivalentTransforms(EPSG4326_PROJECTIONS, EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326);\n}\n\naddCommon();\n","/**\n * @module ol/transform\n */\nimport {assert} from './asserts.js';\n\n\n/**\n * An array representing an affine 2d transformation for use with\n * {@link module:ol/transform} functions. The array has 6 elements.\n * @typedef {!Array} Transform\n */\n\n\n/**\n * Collection of affine 2d transformation functions. The functions work on an\n * array of 6 elements. The element order is compatible with the [SVGMatrix\n * interface](https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix) and is\n * a subset (elements a to f) of a 3×3 matrix:\n * ```\n * [ a c e ]\n * [ b d f ]\n * [ 0 0 1 ]\n * ```\n */\n\n\n/**\n * @private\n * @type {Transform}\n */\nconst tmp_ = new Array(6);\n\n\n/**\n * Create an identity transform.\n * @return {!Transform} Identity transform.\n */\nexport function create() {\n return [1, 0, 0, 1, 0, 0];\n}\n\n\n/**\n * Resets the given transform to an identity transform.\n * @param {!Transform} transform Transform.\n * @return {!Transform} Transform.\n */\nexport function reset(transform) {\n return set(transform, 1, 0, 0, 1, 0, 0);\n}\n\n\n/**\n * Multiply the underlying matrices of two transforms and return the result in\n * the first transform.\n * @param {!Transform} transform1 Transform parameters of matrix 1.\n * @param {!Transform} transform2 Transform parameters of matrix 2.\n * @return {!Transform} transform1 multiplied with transform2.\n */\nexport function multiply(transform1, transform2) {\n const a1 = transform1[0];\n const b1 = transform1[1];\n const c1 = transform1[2];\n const d1 = transform1[3];\n const e1 = transform1[4];\n const f1 = transform1[5];\n const a2 = transform2[0];\n const b2 = transform2[1];\n const c2 = transform2[2];\n const d2 = transform2[3];\n const e2 = transform2[4];\n const f2 = transform2[5];\n\n transform1[0] = a1 * a2 + c1 * b2;\n transform1[1] = b1 * a2 + d1 * b2;\n transform1[2] = a1 * c2 + c1 * d2;\n transform1[3] = b1 * c2 + d1 * d2;\n transform1[4] = a1 * e2 + c1 * f2 + e1;\n transform1[5] = b1 * e2 + d1 * f2 + f1;\n\n return transform1;\n}\n\n/**\n * Set the transform components a-f on a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} a The a component of the transform.\n * @param {number} b The b component of the transform.\n * @param {number} c The c component of the transform.\n * @param {number} d The d component of the transform.\n * @param {number} e The e component of the transform.\n * @param {number} f The f component of the transform.\n * @return {!Transform} Matrix with transform applied.\n */\nexport function set(transform, a, b, c, d, e, f) {\n transform[0] = a;\n transform[1] = b;\n transform[2] = c;\n transform[3] = d;\n transform[4] = e;\n transform[5] = f;\n return transform;\n}\n\n\n/**\n * Set transform on one matrix from another matrix.\n * @param {!Transform} transform1 Matrix to set transform to.\n * @param {!Transform} transform2 Matrix to set transform from.\n * @return {!Transform} transform1 with transform from transform2 applied.\n */\nexport function setFromArray(transform1, transform2) {\n transform1[0] = transform2[0];\n transform1[1] = transform2[1];\n transform1[2] = transform2[2];\n transform1[3] = transform2[3];\n transform1[4] = transform2[4];\n transform1[5] = transform2[5];\n return transform1;\n}\n\n\n/**\n * Transforms the given coordinate with the given transform returning the\n * resulting, transformed coordinate. The coordinate will be modified in-place.\n *\n * @param {Transform} transform The transformation.\n * @param {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} coordinate The coordinate to transform.\n * @return {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} return coordinate so that operations can be\n * chained together.\n */\nexport function apply(transform, coordinate) {\n const x = coordinate[0];\n const y = coordinate[1];\n coordinate[0] = transform[0] * x + transform[2] * y + transform[4];\n coordinate[1] = transform[1] * x + transform[3] * y + transform[5];\n return coordinate;\n}\n\n\n/**\n * Applies rotation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} angle Angle in radians.\n * @return {!Transform} The rotated transform.\n */\nexport function rotate(transform, angle) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n return multiply(transform, set(tmp_, cos, sin, -sin, cos, 0, 0));\n}\n\n\n/**\n * Applies scale to a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scaled transform.\n */\nexport function scale(transform, x, y) {\n return multiply(transform, set(tmp_, x, 0, 0, y, 0, 0));\n}\n\n/**\n * Creates a scale transform.\n * @param {!Transform} target Transform to overwrite.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scale transform.\n */\nexport function makeScale(target, x, y) {\n return set(target, x, 0, 0, y, 0, 0);\n}\n\n/**\n * Applies translation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} dx Translation x.\n * @param {number} dy Translation y.\n * @return {!Transform} The translated transform.\n */\nexport function translate(transform, dx, dy) {\n return multiply(transform, set(tmp_, 1, 0, 0, 1, dx, dy));\n}\n\n\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative).\n * @param {!Transform} transform The transform (will be modified in place).\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {!Transform} The composite transform.\n */\nexport function compose(transform, dx1, dy1, sx, sy, angle, dx2, dy2) {\n const sin = Math.sin(angle);\n const cos = Math.cos(angle);\n transform[0] = sx * cos;\n transform[1] = sy * sin;\n transform[2] = -sx * sin;\n transform[3] = sy * cos;\n transform[4] = dx2 * sx * cos - dy2 * sx * sin + dx1;\n transform[5] = dx2 * sy * sin + dy2 * sy * cos + dy1;\n return transform;\n}\n\n\n/**\n * Invert the given transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (source) transform.\n */\nexport function invert(source) {\n return makeInverse(source, source);\n}\n\n/**\n * Invert the given transform.\n * @param {!Transform} target Transform to be set as the inverse of\n * the source transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (target) transform.\n */\nexport function makeInverse(target, source) {\n const det = determinant(source);\n assert(det !== 0, 32); // Transformation matrix cannot be inverted\n\n const a = source[0];\n const b = source[1];\n const c = source[2];\n const d = source[3];\n const e = source[4];\n const f = source[5];\n\n target[0] = d / det;\n target[1] = -b / det;\n target[2] = -c / det;\n target[3] = a / det;\n target[4] = (c * f - d * e) / det;\n target[5] = -(a * f - b * e) / det;\n\n return target;\n}\n\n/**\n * Returns the determinant of the given matrix.\n * @param {!Transform} mat Matrix.\n * @return {number} Determinant.\n */\nexport function determinant(mat) {\n return mat[0] * mat[3] - mat[1] * mat[2];\n}\n\n/**\n * A string version of the transform. This can be used\n * for CSS transforms.\n * @param {!Transform} mat Matrix.\n * @return {string} The transform as a string.\n */\nexport function toString(mat) {\n return 'matrix(' + mat.join(', ') + ')';\n}\n","/**\n * @module ol/geom/Geometry\n */\nimport {abstract} from '../util.js';\nimport BaseObject from '../Object.js';\nimport {createEmpty, getHeight, returnOrUpdate} from '../extent.js';\nimport {transform2D} from './flat/transform.js';\nimport {get as getProjection, getTransform} from '../proj.js';\nimport Units from '../proj/Units.js';\nimport {create as createTransform, compose as composeTransform} from '../transform.js';\nimport {memoizeOne} from '../functions.js';\n\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nconst tmpTransform = createTransform();\n\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nclass Geometry extends BaseObject {\n constructor() {\n\n super();\n\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = createEmpty();\n\n /**\n * @private\n * @type {number}\n */\n this.extentRevision_ = -1;\n\n /**\n * @protected\n * @type {number}\n */\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n\n /**\n * @protected\n * @type {number}\n */\n this.simplifiedGeometryRevision = 0;\n\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} revision The geometry revision.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n this.simplifyTransformedInternal = memoizeOne(function(revision, squaredTolerance, opt_transform) {\n if (!opt_transform) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n const clone = this.clone();\n clone.applyTransform(opt_transform);\n return clone.getSimplifiedGeometry(squaredTolerance);\n });\n\n }\n\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n simplifyTransformed(squaredTolerance, opt_transform) {\n return this.simplifyTransformedInternal(this.getRevision(), squaredTolerance, opt_transform);\n }\n\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n clone() {\n return abstract();\n }\n\n /**\n * @abstract\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n return abstract();\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n containsXY(x, y) {\n const coord = this.getClosestPoint([x, y]);\n return coord[0] === x && coord[1] === y;\n }\n\n /**\n * Return the closest point of the geometry to the passed point as\n * {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} point Point.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_closestPoint Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n getClosestPoint(point, opt_closestPoint) {\n const closestPoint = opt_closestPoint ? opt_closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\n }\n\n /**\n * Returns true if this geometry includes the specified coordinate. If the\n * coordinate is on the boundary of the geometry, returns false.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains coordinate.\n * @api\n */\n intersectsCoordinate(coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n }\n\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n return abstract();\n }\n\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent=} opt_extent Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n getExtent(opt_extent) {\n if (this.extentRevision_ != this.getRevision()) {\n this.extent_ = this.computeExtent(this.extent_);\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, opt_extent);\n }\n\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n rotate(angle, anchor) {\n abstract();\n }\n\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to\n * sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n scale(sx, opt_sy, opt_anchor) {\n abstract();\n }\n\n /**\n * Create a simplified version of this geometry. For linestrings, this uses\n * the [Douglas Peucker](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)\n * algorithm. For polygons, a quantization-based\n * simplification is used to preserve topology.\n * @param {number} tolerance The tolerance distance for simplification.\n * @return {Geometry} A new, simplified version of the original geometry.\n * @api\n */\n simplify(tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\n }\n\n /**\n * Create a simplified version of this geometry using the Douglas Peucker\n * algorithm.\n * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Geometry} Simplified geometry.\n */\n getSimplifiedGeometry(squaredTolerance) {\n return abstract();\n }\n\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n */\n getType() {\n return abstract();\n }\n\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @abstract\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n */\n applyTransform(transformFn) {\n abstract();\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n */\n intersectsExtent(extent) {\n return abstract();\n }\n\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @abstract\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n translate(deltaX, deltaY) {\n abstract();\n }\n\n /**\n * Transform each coordinate of the geometry from one coordinate reference\n * system to another. The geometry is modified in place.\n * For example, a line will be transformed to a line and a circle to a circle.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Geometry} This geometry. Note that original geometry is\n * modified in place.\n * @api\n */\n transform(source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n const sourceProj = getProjection(source);\n const transformFn = sourceProj.getUnits() == Units.TILE_PIXELS ?\n function(inCoordinates, outCoordinates, stride) {\n const pixelExtent = sourceProj.getExtent();\n const projectedExtent = sourceProj.getWorldExtent();\n const scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(tmpTransform,\n projectedExtent[0], projectedExtent[3],\n scale, -scale, 0,\n 0, 0);\n transform2D(inCoordinates, 0, inCoordinates.length, stride,\n tmpTransform, outCoordinates);\n return getTransform(sourceProj, destination)(inCoordinates, outCoordinates, stride);\n } :\n getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n }\n\n}\n\n\nexport default Geometry;\n","/**\n * @module ol/geom/SimpleGeometry\n */\nimport {abstract} from '../util.js';\nimport {createOrUpdateFromFlatCoordinates, getCenter} from '../extent.js';\nimport Geometry from './Geometry.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport {rotate, scale, translate, transform2D} from './flat/transform.js';\n\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nclass SimpleGeometry extends Geometry {\n constructor() {\n\n super();\n\n /**\n * @protected\n * @type {GeometryLayout}\n */\n this.layout = GeometryLayout.XY;\n\n /**\n * @protected\n * @type {number}\n */\n this.stride = 2;\n\n /**\n * @protected\n * @type {Array}\n */\n this.flatCoordinates = null;\n\n }\n\n /**\n * @inheritDoc\n */\n computeExtent(extent) {\n return createOrUpdateFromFlatCoordinates(this.flatCoordinates,\n 0, this.flatCoordinates.length, this.stride, extent);\n }\n\n /**\n * @abstract\n * @return {Array<*>} Coordinates.\n */\n getCoordinates() {\n return abstract();\n }\n\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n getFirstCoordinate() {\n return this.flatCoordinates.slice(0, this.stride);\n }\n\n /**\n * @return {Array} Flat coordinates.\n */\n getFlatCoordinates() {\n return this.flatCoordinates;\n }\n\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n getLastCoordinate() {\n return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride);\n }\n\n /**\n * Return the {@link module:ol/geom/GeometryLayout layout} of the geometry.\n * @return {GeometryLayout} Layout.\n * @api\n */\n getLayout() {\n return this.layout;\n }\n\n /**\n * @inheritDoc\n */\n getSimplifiedGeometry(squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n // If squaredTolerance is negative or if we know that simplification will not\n // have any effect then just return this.\n if (squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)) {\n return this;\n }\n\n const simplifiedGeometry =\n this.getSimplifiedGeometryInternal(squaredTolerance);\n const simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n return simplifiedGeometry;\n } else {\n // Simplification did not actually remove any coordinates. We now know\n // that any calls to getSimplifiedGeometry with a squaredTolerance less\n // than or equal to the current squaredTolerance will also not have any\n // effect. This allows us to short circuit simplification (saving CPU\n // cycles) and prevents the cache of simplified geometries from filling\n // up with useless identical copies of this geometry (saving memory).\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n return this;\n }\n\n /**\n * @return {number} Stride.\n */\n getStride() {\n return this.stride;\n }\n\n /**\n * @param {GeometryLayout} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n setFlatCoordinates(layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n }\n\n /**\n * @abstract\n * @param {!Array<*>} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n */\n setCoordinates(coordinates, opt_layout) {\n abstract();\n }\n\n /**\n * @param {GeometryLayout|undefined} layout Layout.\n * @param {Array<*>} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n setLayout(layout, coordinates, nesting) {\n /** @type {number} */\n let stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n } else {\n for (let i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = GeometryLayout.XY;\n this.stride = 2;\n return;\n } else {\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\n }\n\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n applyTransform(transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\n }\n }\n\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n rotate(angle, anchor) {\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n rotate(\n flatCoordinates, 0, flatCoordinates.length,\n stride, angle, anchor, flatCoordinates);\n this.changed();\n }\n }\n\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to\n * sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n scale(sx, opt_sy, opt_anchor) {\n let sy = opt_sy;\n if (sy === undefined) {\n sy = sx;\n }\n let anchor = opt_anchor;\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n scale(\n flatCoordinates, 0, flatCoordinates.length,\n stride, sx, sy, anchor, flatCoordinates);\n this.changed();\n }\n }\n\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n translate(deltaX, deltaY) {\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n translate(\n flatCoordinates, 0, flatCoordinates.length, stride,\n deltaX, deltaY, flatCoordinates);\n this.changed();\n }\n }\n}\n\n\n/**\n * @param {number} stride Stride.\n * @return {GeometryLayout} layout Layout.\n */\nfunction getLayoutForStride(stride) {\n let layout;\n if (stride == 2) {\n layout = GeometryLayout.XY;\n } else if (stride == 3) {\n layout = GeometryLayout.XYZ;\n } else if (stride == 4) {\n layout = GeometryLayout.XYZM;\n }\n return (\n /** @type {GeometryLayout} */ (layout)\n );\n}\n\n\n/**\n * @param {GeometryLayout} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n let stride;\n if (layout == GeometryLayout.XY) {\n stride = 2;\n } else if (layout == GeometryLayout.XYZ || layout == GeometryLayout.XYM) {\n stride = 3;\n } else if (layout == GeometryLayout.XYZM) {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n\n\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, opt_dest) {\n const flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n } else {\n const stride = simpleGeometry.getStride();\n return transform2D(\n flatCoordinates, 0, flatCoordinates.length, stride,\n transform, opt_dest);\n }\n}\n\nexport default SimpleGeometry;\n","/**\n * @module ol/geom/flat/area\n */\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRing(flatCoordinates, offset, end, stride) {\n let twiceArea = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n twiceArea += y1 * x2 - x1 * y2;\n x1 = x2;\n y1 = y2;\n }\n return twiceArea / 2;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRings(flatCoordinates, offset, ends, stride) {\n let area = 0;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n area += linearRing(flatCoordinates, offset, end, stride);\n offset = end;\n }\n return area;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n let area = 0;\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n area += linearRings(flatCoordinates, offset, ends, stride);\n offset = ends[ends.length - 1];\n }\n return area;\n}\n","/**\n * @module ol/geom/flat/closest\n */\nimport {lerp, squaredDistance as squaredDx} from '../../math.js';\n\n\n/**\n * Returns the point on the 2D line segment flatCoordinates[offset1] to\n * flatCoordinates[offset2] that is closest to the point (x, y). Extra\n * dimensions are linearly interpolated.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset1 Offset 1.\n * @param {number} offset2 Offset 2.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n */\nfunction assignClosest(flatCoordinates, offset1, offset2, stride, x, y, closestPoint) {\n const x1 = flatCoordinates[offset1];\n const y1 = flatCoordinates[offset1 + 1];\n const dx = flatCoordinates[offset2] - x1;\n const dy = flatCoordinates[offset2 + 1] - y1;\n let offset;\n if (dx === 0 && dy === 0) {\n offset = offset1;\n } else {\n const t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n offset = offset2;\n } else if (t > 0) {\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = lerp(flatCoordinates[offset1 + i],\n flatCoordinates[offset2 + i], t);\n }\n closestPoint.length = stride;\n return;\n } else {\n offset = offset1;\n }\n }\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n}\n\n\n/**\n * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n for (offset += stride; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n const squaredDelta = squaredDx(x1, y1, x2, y2);\n if (squaredDelta > max) {\n max = squaredDelta;\n }\n x1 = x2;\n y1 = y2;\n }\n return max;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n max = maxSquaredDelta(\n flatCoordinates, offset, end, stride, max);\n offset = end;\n }\n return max;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(flatCoordinates, offset, endss, stride, max) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n max = arrayMaxSquaredDelta(\n flatCoordinates, offset, ends, stride, max);\n offset = ends[ends.length - 1];\n }\n return max;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(flatCoordinates, offset, end,\n stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance,\n opt_tmpPoint) {\n if (offset == end) {\n return minSquaredDistance;\n }\n let i, squaredDistance;\n if (maxDelta === 0) {\n // All points are identical, so just test the first point.\n squaredDistance = squaredDx(\n x, y, flatCoordinates[offset], flatCoordinates[offset + 1]);\n if (squaredDistance < minSquaredDistance) {\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n } else {\n return minSquaredDistance;\n }\n }\n const tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n let index = offset + stride;\n while (index < end) {\n assignClosest(\n flatCoordinates, index - stride, index, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n index += stride;\n } else {\n // Skip ahead multiple points, because we know that all the skipped\n // points cannot be any closer than the closest point we have found so\n // far. We know this because we know how close the current point is, how\n // close the closest point we have found so far is, and the maximum\n // distance between consecutive points. For example, if we're currently\n // at distance 10, the best we've found so far is 3, and that the maximum\n // distance between consecutive points is 2, then we'll need to skip at\n // least (10 - 3) / 2 == 3 (rounded down) points to have any chance of\n // finding a closer point. We use Math.max(..., 1) to ensure that we\n // always advance at least one point, to avoid an infinite loop.\n index += stride * Math.max(\n ((Math.sqrt(squaredDistance) -\n Math.sqrt(minSquaredDistance)) / maxDelta) | 0, 1);\n }\n }\n if (isRing) {\n // Check the closing segment.\n assignClosest(\n flatCoordinates, end - stride, offset, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(flatCoordinates, offset, ends,\n stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance,\n opt_tmpPoint) {\n const tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n minSquaredDistance = assignClosestPoint(\n flatCoordinates, offset, end, stride,\n maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = end;\n }\n return minSquaredDistance;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(flatCoordinates, offset,\n endss, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance,\n opt_tmpPoint) {\n const tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n minSquaredDistance = assignClosestArrayPoint(\n flatCoordinates, offset, ends, stride,\n maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = ends[ends.length - 1];\n }\n return minSquaredDistance;\n}\n","/**\n * @module ol/geom/flat/deflate\n */\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {\n for (let i = 0, ii = coordinate.length; i < ii; ++i) {\n flatCoordinates[offset++] = coordinate[i];\n }\n return offset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(flatCoordinates, offset, coordinates, stride) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n const coordinate = coordinates[i];\n for (let j = 0; j < stride; ++j) {\n flatCoordinates[offset++] = coordinate[j];\n }\n }\n return offset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array=} opt_ends Ends.\n * @return {Array} Ends.\n */\nexport function deflateCoordinatesArray(flatCoordinates, offset, coordinatess, stride, opt_ends) {\n const ends = opt_ends ? opt_ends : [];\n let i = 0;\n for (let j = 0, jj = coordinatess.length; j < jj; ++j) {\n const end = deflateCoordinates(\n flatCoordinates, offset, coordinatess[j], stride);\n ends[i++] = end;\n offset = end;\n }\n ends.length = i;\n return ends;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array>=} opt_endss Endss.\n * @return {Array>} Endss.\n */\nexport function deflateMultiCoordinatesArray(flatCoordinates, offset, coordinatesss, stride, opt_endss) {\n const endss = opt_endss ? opt_endss : [];\n let i = 0;\n for (let j = 0, jj = coordinatesss.length; j < jj; ++j) {\n const ends = deflateCoordinatesArray(\n flatCoordinates, offset, coordinatesss[j], stride, endss[i]);\n endss[i++] = ends;\n offset = ends[ends.length - 1];\n }\n endss.length = i;\n return endss;\n}\n","/**\n * @module ol/geom/flat/inflate\n */\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array=} opt_coordinates Coordinates.\n * @return {Array} Coordinates.\n */\nexport function inflateCoordinates(flatCoordinates, offset, end, stride, opt_coordinates) {\n const coordinates = opt_coordinates !== undefined ? opt_coordinates : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n coordinates[i++] = flatCoordinates.slice(j, j + stride);\n }\n coordinates.length = i;\n return coordinates;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array>=} opt_coordinatess Coordinatess.\n * @return {Array>} Coordinatess.\n */\nexport function inflateCoordinatesArray(flatCoordinates, offset, ends, stride, opt_coordinatess) {\n const coordinatess = opt_coordinatess !== undefined ? opt_coordinatess : [];\n let i = 0;\n for (let j = 0, jj = ends.length; j < jj; ++j) {\n const end = ends[j];\n coordinatess[i++] = inflateCoordinates(\n flatCoordinates, offset, end, stride, coordinatess[i]);\n offset = end;\n }\n coordinatess.length = i;\n return coordinatess;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array>>=} opt_coordinatesss\n * Coordinatesss.\n * @return {Array>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(flatCoordinates, offset, endss, stride, opt_coordinatesss) {\n const coordinatesss = opt_coordinatesss !== undefined ? opt_coordinatesss : [];\n let i = 0;\n for (let j = 0, jj = endss.length; j < jj; ++j) {\n const ends = endss[j];\n coordinatesss[i++] = inflateCoordinatesArray(\n flatCoordinates, offset, ends, stride, coordinatesss[i]);\n offset = ends[ends.length - 1];\n }\n coordinatesss.length = i;\n return coordinatesss;\n}\n","/**\n * @module ol/geom/flat/simplify\n */\n// Based on simplify-js https://github.com/mourner/simplify-js\n// Copyright (c) 2012, Vladimir Agafonkin\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice,\n// this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n// POSSIBILITY OF SUCH DAMAGE.\n\nimport {squaredSegmentDistance, squaredDistance} from '../../math.js';\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {boolean} highQuality Highest quality.\n * @param {Array=} opt_simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @return {Array} Simplified line string.\n */\nexport function simplifyLineString(flatCoordinates, offset, end,\n stride, squaredTolerance, highQuality, opt_simplifiedFlatCoordinates) {\n const simplifiedFlatCoordinates = opt_simplifiedFlatCoordinates !== undefined ?\n opt_simplifiedFlatCoordinates : [];\n if (!highQuality) {\n end = radialDistance(flatCoordinates, offset, end,\n stride, squaredTolerance,\n simplifiedFlatCoordinates, 0);\n flatCoordinates = simplifiedFlatCoordinates;\n offset = 0;\n stride = 2;\n }\n simplifiedFlatCoordinates.length = douglasPeucker(\n flatCoordinates, offset, end, stride, squaredTolerance,\n simplifiedFlatCoordinates, 0);\n return simplifiedFlatCoordinates;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(flatCoordinates, offset, end,\n stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n const n = (end - offset) / stride;\n if (n < 3) {\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n /** @type {Array} */\n const markers = new Array(n);\n markers[0] = 1;\n markers[n - 1] = 1;\n /** @type {Array} */\n const stack = [offset, end - stride];\n let index = 0;\n while (stack.length > 0) {\n const last = stack.pop();\n const first = stack.pop();\n let maxSquaredDistance = 0;\n const x1 = flatCoordinates[first];\n const y1 = flatCoordinates[first + 1];\n const x2 = flatCoordinates[last];\n const y2 = flatCoordinates[last + 1];\n for (let i = first + stride; i < last; i += stride) {\n const x = flatCoordinates[i];\n const y = flatCoordinates[i + 1];\n const squaredDistance = squaredSegmentDistance(\n x, y, x1, y1, x2, y2);\n if (squaredDistance > maxSquaredDistance) {\n index = i;\n maxSquaredDistance = squaredDistance;\n }\n }\n if (maxSquaredDistance > squaredTolerance) {\n markers[(index - offset) / stride] = 1;\n if (first + stride < index) {\n stack.push(first, index);\n }\n if (index + stride < last) {\n stack.push(index, last);\n }\n }\n }\n for (let i = 0; i < n; ++i) {\n if (markers[i]) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride + 1];\n }\n }\n return simplifiedOffset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(flatCoordinates, offset,\n ends, stride, squaredTolerance, simplifiedFlatCoordinates,\n simplifiedOffset, simplifiedEnds) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n simplifiedOffset = douglasPeucker(\n flatCoordinates, offset, end, stride, squaredTolerance,\n simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(\n flatCoordinates, offset, endss, stride, squaredTolerance,\n simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n const simplifiedEnds = [];\n simplifiedOffset = douglasPeuckerArray(\n flatCoordinates, offset, ends, stride, squaredTolerance,\n simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(flatCoordinates, offset, end,\n stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n if (end <= offset + stride) {\n // zero or one point, no simplification possible, so copy and return\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n // copy first point\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n let x2 = x1;\n let y2 = y1;\n for (offset += stride; offset < end; offset += stride) {\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {\n // copy point at offset\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n }\n }\n if (x2 != x1 || y2 != y1) {\n // copy last point\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n }\n return simplifiedOffset;\n}\n\n\n/**\n * @param {number} value Value.\n * @param {number} tolerance Tolerance.\n * @return {number} Rounded value.\n */\nexport function snap(value, tolerance) {\n return tolerance * Math.round(value / tolerance);\n}\n\n\n/**\n * Simplifies a line string using an algorithm designed by Tim Schaub.\n * Coordinates are snapped to the nearest value in a virtual grid and\n * consecutive duplicate coordinates are discarded. This effectively preserves\n * topology as the simplification of any subsection of a line string is\n * independent of the rest of the line string. This means that, for examples,\n * the common edge between two polygons will be simplified to the same line\n * string independently in both polygons. This implementation uses a single\n * pass over the coordinates and eliminates intermediate collinear points.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(flatCoordinates, offset, end, stride,\n tolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n // do nothing if the line is empty\n if (offset == end) {\n return simplifiedOffset;\n }\n // snap the first coordinate (P1)\n let x1 = snap(flatCoordinates[offset], tolerance);\n let y1 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // add the first coordinate to the output\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n // find the next coordinate that does not snap to the same value as the first\n // coordinate (P2)\n let x2, y2;\n do {\n x2 = snap(flatCoordinates[offset], tolerance);\n y2 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n if (offset == end) {\n // all coordinates snap to the same value, the line collapses to a point\n // push the last snapped value anyway to ensure that the output contains\n // at least two points\n // FIXME should we really return at least two points anyway?\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n }\n } while (x2 == x1 && y2 == y1);\n while (offset < end) {\n // snap the next coordinate (P3)\n const x3 = snap(flatCoordinates[offset], tolerance);\n const y3 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // skip P3 if it is equal to P2\n if (x3 == x2 && y3 == y2) {\n continue;\n }\n // calculate the delta between P1 and P2\n const dx1 = x2 - x1;\n const dy1 = y2 - y1;\n // calculate the delta between P3 and P1\n const dx2 = x3 - x1;\n const dy2 = y3 - y1;\n // if P1, P2, and P3 are colinear and P3 is further from P1 than P2 is from\n // P1 in the same direction then P2 is on the straight line between P1 and\n // P3\n if ((dx1 * dy2 == dy1 * dx2) &&\n ((dx1 < 0 && dx2 < dx1) || dx1 == dx2 || (dx1 > 0 && dx2 > dx1)) &&\n ((dy1 < 0 && dy2 < dy1) || dy1 == dy2 || (dy1 > 0 && dy2 > dy1))) {\n // discard P2 and set P2 = P3\n x2 = x3;\n y2 = y3;\n continue;\n }\n // either P1, P2, and P3 are not colinear, or they are colinear but P3 is\n // between P3 and P1 or on the opposite half of the line to P2. add P2,\n // and continue with P1 = P2 and P2 = P3\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n x2 = x3;\n y2 = y3;\n }\n // add the last point (P2)\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(\n flatCoordinates, offset, ends, stride,\n tolerance,\n simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n simplifiedOffset = quantize(\n flatCoordinates, offset, end, stride,\n tolerance,\n simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(\n flatCoordinates, offset, endss, stride,\n tolerance,\n simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n const simplifiedEnds = [];\n simplifiedOffset = quantizeArray(\n flatCoordinates, offset, ends, stride,\n tolerance,\n simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n","/**\n * @module ol/geom/LinearRing\n */\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {linearRing as linearRingArea} from './flat/area.js';\nimport {assignClosestPoint, maxSquaredDelta} from './flat/closest.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {inflateCoordinates} from './flat/inflate.js';\nimport {douglasPeucker} from './flat/simplify.js';\n\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nclass LinearRing extends SimpleGeometry {\n\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {GeometryLayout=} opt_layout Layout.\n */\n constructor(coordinates, opt_layout) {\n\n super();\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n this.setFlatCoordinates(opt_layout, /** @type {Array} */ (coordinates));\n } else {\n this.setCoordinates(/** @type {Array} */ (coordinates), opt_layout);\n }\n\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @override\n * @api\n */\n clone() {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n }\n\n /**\n * @inheritDoc\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(\n this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(\n this.flatCoordinates, 0, this.flatCoordinates.length, this.stride,\n this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n }\n\n /**\n * Return the area of the linear ring on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n getArea() {\n return linearRingArea(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n }\n\n /**\n * Return the coordinates of the linear ring.\n * @return {Array} Coordinates.\n * @override\n * @api\n */\n getCoordinates() {\n return inflateCoordinates(\n this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n }\n\n /**\n * @inheritDoc\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n const simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(\n this.flatCoordinates, 0, this.flatCoordinates.length, this.stride,\n squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LinearRing(simplifiedFlatCoordinates, GeometryLayout.XY);\n }\n\n /**\n * @inheritDoc\n * @api\n */\n getType() {\n return GeometryType.LINEAR_RING;\n }\n\n /**\n * @inheritDoc\n */\n intersectsExtent(extent) {\n return false;\n }\n\n /**\n * Set the coordinates of the linear ring.\n * @param {!Array} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n * @override\n * @api\n */\n setCoordinates(coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(\n this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n }\n}\n\n\nexport default LinearRing;\n","/**\n * @module ol/geom/Point\n */\nimport {createOrUpdateFromCoordinate, containsXY} from '../extent.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {deflateCoordinate} from './flat/deflate.js';\nimport {squaredDistance as squaredDx} from '../math.js';\n\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nclass Point extends SimpleGeometry {\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n constructor(coordinates, opt_layout) {\n super();\n this.setCoordinates(coordinates, opt_layout);\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!Point} Clone.\n * @override\n * @api\n */\n clone() {\n const point = new Point(this.flatCoordinates.slice(), this.layout);\n return point;\n }\n\n /**\n * @inheritDoc\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n const flatCoordinates = this.flatCoordinates;\n const squaredDistance = squaredDx(x, y, flatCoordinates[0], flatCoordinates[1]);\n if (squaredDistance < minSquaredDistance) {\n const stride = this.stride;\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n } else {\n return minSquaredDistance;\n }\n }\n\n /**\n * Return the coordinate of the point.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n * @override\n * @api\n */\n getCoordinates() {\n return !this.flatCoordinates ? [] : this.flatCoordinates.slice();\n }\n\n /**\n * @inheritDoc\n */\n computeExtent(extent) {\n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n }\n\n /**\n * @inheritDoc\n * @api\n */\n getType() {\n return GeometryType.POINT;\n }\n\n /**\n * @inheritDoc\n * @api\n */\n intersectsExtent(extent) {\n return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n }\n\n /**\n * @inheritDoc\n * @api\n */\n setCoordinates(coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinate(\n this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n }\n}\n\n\nexport default Point;\n","/**\n * @module ol/geom/flat/contains\n */\nimport {forEachCorner} from '../../extent.js';\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} Contains extent.\n */\nexport function linearRingContainsExtent(flatCoordinates, offset, end, stride, extent) {\n const outside = forEachCorner(extent,\n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains (x, y).\n */\n function(coordinate) {\n return !linearRingContainsXY(flatCoordinates, offset, end, stride, coordinate[0], coordinate[1]);\n });\n return !outside;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingContainsXY(flatCoordinates, offset, end, stride, x, y) {\n // http://geomalgorithms.com/a03-_inclusion.html\n // Copyright 2000 softSurfer, 2012 Dan Sunday\n // This code may be freely used and modified for any purpose\n // providing that this copyright notice is included with it.\n // SoftSurfer makes no warranty for this code, and cannot be held\n // liable for any real or imagined damage resulting from its use.\n // Users of this code must verify correctness for their application.\n let wn = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n if (y1 <= y) {\n if (y2 > y && ((x2 - x1) * (y - y1)) - ((x - x1) * (y2 - y1)) > 0) {\n wn++;\n }\n } else if (y2 <= y && ((x2 - x1) * (y - y1)) - ((x - x1) * (y2 - y1)) < 0) {\n wn--;\n }\n x1 = x2;\n y1 = y2;\n }\n return wn !== 0;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y) {\n if (ends.length === 0) {\n return false;\n }\n if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {\n return false;\n }\n for (let i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) {\n return false;\n }\n }\n return true;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingssContainsXY(flatCoordinates, offset, endss, stride, x, y) {\n if (endss.length === 0) {\n return false;\n }\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport {numberSafeCompareFunction} from '../../array.js';\nimport {linearRingsContainsXY} from './contains.js';\n\n\n/**\n * Calculates a point that is likely to lie in the interior of the linear rings.\n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @param {number} flatCentersOffset Flat center offset.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Destination point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointOfArray(flatCoordinates, offset,\n ends, stride, flatCenters, flatCentersOffset, opt_dest) {\n let i, ii, x, x1, x2, y1, y2;\n const y = flatCenters[flatCentersOffset + 1];\n /** @type {Array} */\n const intersections = [];\n // Calculate intersections with the horizontal line\n for (let r = 0, rr = ends.length; r < rr; ++r) {\n const end = ends[r];\n x1 = flatCoordinates[end - stride];\n y1 = flatCoordinates[end - stride + 1];\n for (i = offset; i < end; i += stride) {\n x2 = flatCoordinates[i];\n y2 = flatCoordinates[i + 1];\n if ((y <= y1 && y2 <= y) || (y1 <= y && y <= y2)) {\n x = (y - y1) / (y2 - y1) * (x2 - x1) + x1;\n intersections.push(x);\n }\n x1 = x2;\n y1 = y2;\n }\n }\n // Find the longest segment of the horizontal line that has its center point\n // inside the linear ring.\n let pointX = NaN;\n let maxSegmentLength = -Infinity;\n intersections.sort(numberSafeCompareFunction);\n x1 = intersections[0];\n for (i = 1, ii = intersections.length; i < ii; ++i) {\n x2 = intersections[i];\n const segmentLength = Math.abs(x2 - x1);\n if (segmentLength > maxSegmentLength) {\n x = (x1 + x2) / 2;\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n pointX = x;\n maxSegmentLength = segmentLength;\n }\n }\n x1 = x2;\n }\n if (isNaN(pointX)) {\n // There is no horizontal line that has its center point inside the linear\n // ring. Use the center of the the linear ring's extent.\n pointX = flatCenters[flatCentersOffset];\n }\n if (opt_dest) {\n opt_dest.push(pointX, y, maxSegmentLength);\n return opt_dest;\n } else {\n return [pointX, y, maxSegmentLength];\n }\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @return {Array} Interior points as XYM coordinates, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointsOfMultiArray(flatCoordinates, offset, endss, stride, flatCenters) {\n let interiorPoints = [];\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n interiorPoints = getInteriorPointOfArray(flatCoordinates,\n offset, ends, stride, flatCenters, 2 * i, interiorPoints);\n offset = ends[ends.length - 1];\n }\n return interiorPoints;\n}\n","/**\n * @module ol/geom/flat/segments\n */\n\n\n/**\n * This function calls `callback` for each segment of the flat coordinates\n * array. If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {function(import(\"../../coordinate.js\").Coordinate, import(\"../../coordinate.js\").Coordinate): T} callback Function\n * called for each segment.\n * @return {T|boolean} Value.\n * @template T\n */\nexport function forEach(flatCoordinates, offset, end, stride, callback) {\n const point1 = [flatCoordinates[offset], flatCoordinates[offset + 1]];\n const point2 = [];\n let ret;\n for (; (offset + stride) < end; offset += stride) {\n point2[0] = flatCoordinates[offset + stride];\n point2[1] = flatCoordinates[offset + stride + 1];\n ret = callback(point1, point2);\n if (ret) {\n return ret;\n }\n point1[0] = point2[0];\n point1[1] = point2[1];\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport {containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment} from '../../extent.js';\nimport {linearRingContainsXY, linearRingContainsExtent} from './contains.js';\nimport {forEach as forEachSegment} from './segments.js';\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineString(flatCoordinates, offset, end, stride, extent) {\n const coordinatesExtent = extendFlatCoordinates(\n createEmpty(), flatCoordinates, offset, end, stride);\n if (!intersects(extent, coordinatesExtent)) {\n return false;\n }\n if (containsExtent(extent, coordinatesExtent)) {\n return true;\n }\n if (coordinatesExtent[0] >= extent[0] &&\n coordinatesExtent[2] <= extent[2]) {\n return true;\n }\n if (coordinatesExtent[1] >= extent[1] &&\n coordinatesExtent[3] <= extent[3]) {\n return true;\n }\n return forEachSegment(flatCoordinates, offset, end, stride,\n /**\n * @param {import(\"../../coordinate.js\").Coordinate} point1 Start point.\n * @param {import(\"../../coordinate.js\").Coordinate} point2 End point.\n * @return {boolean} `true` if the segment and the extent intersect,\n * `false` otherwise.\n */\n function(point1, point2) {\n return intersectsSegment(extent, point1, point2);\n });\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineStringArray(flatCoordinates, offset, ends, stride, extent) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n if (intersectsLineString(\n flatCoordinates, offset, ends[i], stride, extent)) {\n return true;\n }\n offset = ends[i];\n }\n return false;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRing(flatCoordinates, offset, end, stride, extent) {\n if (intersectsLineString(\n flatCoordinates, offset, end, stride, extent)) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[3])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[3])) {\n return true;\n }\n return false;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent) {\n if (!intersectsLinearRing(\n flatCoordinates, offset, ends[0], stride, extent)) {\n return false;\n }\n if (ends.length === 1) {\n return true;\n }\n for (let i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsExtent(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n if (!intersectsLineString(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n return false;\n }\n }\n }\n return true;\n}\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingMultiArray(flatCoordinates, offset, endss, stride, extent) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n if (intersectsLinearRingArray(\n flatCoordinates, offset, ends, stride, extent)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/reverse\n */\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n */\nexport function coordinates(flatCoordinates, offset, end, stride) {\n while (offset < end - stride) {\n for (let i = 0; i < stride; ++i) {\n const tmp = flatCoordinates[offset + i];\n flatCoordinates[offset + i] = flatCoordinates[end - stride + i];\n flatCoordinates[end - stride + i] = tmp;\n }\n offset += stride;\n end -= stride;\n }\n}\n","/**\n * @module ol/geom/flat/orient\n */\nimport {coordinates as reverseCoordinates} from './reverse.js';\n\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {boolean} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n // http://tinyurl.com/clockwise-method\n // https://github.com/OSGeo/gdal/blob/trunk/gdal/ogr/ogrlinearring.cpp\n let edge = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n edge += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n return edge > 0;\n}\n\n\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right) {\n const right = opt_right !== undefined ? opt_right : false;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const isClockwise = linearRingIsClockwise(\n flatCoordinates, offset, end, stride);\n if (i === 0) {\n if ((right && isClockwise) || (!right && !isClockwise)) {\n return false;\n }\n } else {\n if ((right && !isClockwise) || (!right && isClockwise)) {\n return false;\n }\n }\n offset = end;\n }\n return true;\n}\n\n\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingssAreOriented(flatCoordinates, offset, endss, stride, opt_right) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n if (!linearRingsAreOriented(\n flatCoordinates, offset, ends, stride, opt_right)) {\n return false;\n }\n if (ends.length) {\n offset = ends[ends.length - 1];\n }\n }\n return true;\n}\n\n\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(flatCoordinates, offset, ends, stride, opt_right) {\n const right = opt_right !== undefined ? opt_right : false;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const isClockwise = linearRingIsClockwise(\n flatCoordinates, offset, end, stride);\n const reverse = i === 0 ?\n (right && isClockwise) || (!right && !isClockwise) :\n (right && !isClockwise) || (!right && isClockwise);\n if (reverse) {\n reverseCoordinates(flatCoordinates, offset, end, stride);\n }\n offset = end;\n }\n return offset;\n}\n\n\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(flatCoordinates, offset, endss, stride, opt_right) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n offset = orientLinearRings(\n flatCoordinates, offset, endss[i], stride, opt_right);\n }\n return offset;\n}\n","/**\n * @module ol/geom/Polygon\n */\nimport {extend} from '../array.js';\nimport {closestSquaredDistanceXY, getCenter} from '../extent.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {offset as sphereOffset} from '../sphere.js';\nimport {linearRings as linearRingsArea} from './flat/area.js';\nimport {assignClosestArrayPoint, arrayMaxSquaredDelta} from './flat/closest.js';\nimport {linearRingsContainsXY} from './flat/contains.js';\nimport {deflateCoordinatesArray} from './flat/deflate.js';\nimport {inflateCoordinatesArray} from './flat/inflate.js';\nimport {getInteriorPointOfArray} from './flat/interiorpoint.js';\nimport {intersectsLinearRingArray} from './flat/intersectsextent.js';\nimport {linearRingsAreOriented, orientLinearRings} from './flat/orient.js';\nimport {quantizeArray} from './flat/simplify.js';\nimport {modulo} from '../math.js';\n\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nclass Polygon extends SimpleGeometry {\n\n /**\n * @param {!Array>|!Array} coordinates\n * Array of linear rings that define the polygon. The first linear ring of the\n * array defines the outer-boundary or surface of the polygon. Each subsequent\n * linear ring defines a hole in the surface of the polygon. A linear ring is\n * an array of vertices' coordinates where the first coordinate and the last are\n * equivalent. (For internal use, flat coordinates in combination with\n * `opt_layout` and `opt_ends` are also accepted.)\n * @param {GeometryLayout=} opt_layout Layout.\n * @param {Array=} opt_ends Ends (for internal use with flat coordinates).\n */\n constructor(coordinates, opt_layout, opt_ends) {\n\n super();\n\n /**\n * @type {Array}\n * @private\n */\n this.ends_ = [];\n\n /**\n * @private\n * @type {number}\n */\n this.flatInteriorPointRevision_ = -1;\n\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n this.flatInteriorPoint_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.orientedRevision_ = -1;\n\n /**\n * @private\n * @type {Array}\n */\n this.orientedFlatCoordinates_ = null;\n\n if (opt_layout !== undefined && opt_ends) {\n this.setFlatCoordinates(opt_layout, /** @type {Array} */ (coordinates));\n this.ends_ = opt_ends;\n } else {\n this.setCoordinates(/** @type {Array>} */ (coordinates), opt_layout);\n }\n\n }\n\n /**\n * Append the passed linear ring to this polygon.\n * @param {LinearRing} linearRing Linear ring.\n * @api\n */\n appendLinearRing(linearRing) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = linearRing.getFlatCoordinates().slice();\n } else {\n extend(this.flatCoordinates, linearRing.getFlatCoordinates());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!Polygon} Clone.\n * @override\n * @api\n */\n clone() {\n return new Polygon(this.flatCoordinates.slice(), this.layout, this.ends_.slice());\n }\n\n /**\n * @inheritDoc\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(arrayMaxSquaredDelta(\n this.flatCoordinates, 0, this.ends_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(\n this.flatCoordinates, 0, this.ends_, this.stride,\n this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n }\n\n /**\n * @inheritDoc\n */\n containsXY(x, y) {\n return linearRingsContainsXY(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y);\n }\n\n /**\n * Return the area of the polygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n getArea() {\n return linearRingsArea(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride);\n }\n\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for polygons.\n *\n * @param {boolean=} opt_right Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>} Coordinates.\n * @override\n * @api\n */\n getCoordinates(opt_right) {\n let flatCoordinates;\n if (opt_right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRings(\n flatCoordinates, 0, this.ends_, this.stride, opt_right);\n } else {\n flatCoordinates = this.flatCoordinates;\n }\n\n return inflateCoordinatesArray(\n flatCoordinates, 0, this.ends_, this.stride);\n }\n\n /**\n * @return {Array} Ends.\n */\n getEnds() {\n return this.ends_;\n }\n\n /**\n * @return {Array} Interior point.\n */\n getFlatInteriorPoint() {\n if (this.flatInteriorPointRevision_ != this.getRevision()) {\n const flatCenter = getCenter(this.getExtent());\n this.flatInteriorPoint_ = getInteriorPointOfArray(\n this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride,\n flatCenter, 0);\n this.flatInteriorPointRevision_ = this.getRevision();\n }\n return this.flatInteriorPoint_;\n }\n\n /**\n * Return an interior point of the polygon.\n * @return {Point} Interior point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n * @api\n */\n getInteriorPoint() {\n return new Point(this.getFlatInteriorPoint(), GeometryLayout.XYM);\n }\n\n /**\n * Return the number of rings of the polygon, this includes the exterior\n * ring and any interior rings.\n *\n * @return {number} Number of rings.\n * @api\n */\n getLinearRingCount() {\n return this.ends_.length;\n }\n\n /**\n * Return the Nth linear ring of the polygon geometry. Return `null` if the\n * given index is out of range.\n * The exterior linear ring is available at index `0` and the interior rings\n * at index `1` and beyond.\n *\n * @param {number} index Index.\n * @return {LinearRing} Linear ring.\n * @api\n */\n getLinearRing(index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LinearRing(this.flatCoordinates.slice(\n index === 0 ? 0 : this.ends_[index - 1], this.ends_[index]), this.layout);\n }\n\n /**\n * Return the linear rings of the polygon.\n * @return {Array} Linear rings.\n * @api\n */\n getLinearRings() {\n const layout = this.layout;\n const flatCoordinates = this.flatCoordinates;\n const ends = this.ends_;\n const linearRings = [];\n let offset = 0;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const linearRing = new LinearRing(flatCoordinates.slice(offset, end), layout);\n linearRings.push(linearRing);\n offset = end;\n }\n return linearRings;\n }\n\n /**\n * @return {Array} Oriented flat coordinates.\n */\n getOrientedFlatCoordinates() {\n if (this.orientedRevision_ != this.getRevision()) {\n const flatCoordinates = this.flatCoordinates;\n if (linearRingsAreOriented(\n flatCoordinates, 0, this.ends_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n } else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length =\n orientLinearRings(\n this.orientedFlatCoordinates_, 0, this.ends_, this.stride);\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n }\n\n /**\n * @inheritDoc\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n const simplifiedFlatCoordinates = [];\n const simplifiedEnds = [];\n simplifiedFlatCoordinates.length = quantizeArray(\n this.flatCoordinates, 0, this.ends_, this.stride,\n Math.sqrt(squaredTolerance),\n simplifiedFlatCoordinates, 0, simplifiedEnds);\n return new Polygon(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEnds);\n }\n\n /**\n * @inheritDoc\n * @api\n */\n getType() {\n return GeometryType.POLYGON;\n }\n\n /**\n * @inheritDoc\n * @api\n */\n intersectsExtent(extent) {\n return intersectsLinearRingArray(\n this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, extent);\n }\n\n /**\n * Set the coordinates of the polygon.\n * @param {!Array>} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n * @override\n * @api\n */\n setCoordinates(coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n const ends = deflateCoordinatesArray(\n this.flatCoordinates, 0, coordinates, this.stride, this.ends_);\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n }\n}\n\n\nexport default Polygon;\n\n\n/**\n * Create an approximation of a circle on the surface of a sphere.\n * @param {import(\"../coordinate.js\").Coordinate} center Center (`[lon, lat]` in degrees).\n * @param {number} radius The great-circle distance from the center to\n * the polygon vertices.\n * @param {number=} opt_n Optional number of vertices for the resulting\n * polygon. Default is `32`.\n * @param {number=} opt_sphereRadius Optional radius for the sphere (defaults to\n * the Earth's mean radius using the WGS84 ellipsoid).\n * @return {Polygon} The \"circular\" polygon.\n * @api\n */\nexport function circular(center, radius, opt_n, opt_sphereRadius) {\n const n = opt_n ? opt_n : 32;\n /** @type {Array} */\n const flatCoordinates = [];\n for (let i = 0; i < n; ++i) {\n extend(flatCoordinates, sphereOffset(center, radius, 2 * Math.PI * i / n, opt_sphereRadius));\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n return new Polygon(flatCoordinates, GeometryLayout.XY, [flatCoordinates.length]);\n}\n\n\n/**\n * Create a polygon from an extent. The layout used is `XY`.\n * @param {import(\"../extent.js\").Extent} extent The extent.\n * @return {Polygon} The polygon.\n * @api\n */\nexport function fromExtent(extent) {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const flatCoordinates =\n [minX, minY, minX, maxY, maxX, maxY, maxX, minY, minX, minY];\n return new Polygon(flatCoordinates, GeometryLayout.XY, [flatCoordinates.length]);\n}\n\n\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number=} opt_sides Number of sides of the polygon. Default is 32.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * radians. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, opt_sides, opt_angle) {\n const sides = opt_sides ? opt_sides : 32;\n const stride = circle.getStride();\n const layout = circle.getLayout();\n const center = circle.getCenter();\n const arrayLength = stride * (sides + 1);\n const flatCoordinates = new Array(arrayLength);\n for (let i = 0; i < arrayLength; i += stride) {\n flatCoordinates[i] = 0;\n flatCoordinates[i + 1] = 0;\n for (let j = 2; j < stride; j++) {\n flatCoordinates[i + j] = center[j];\n }\n }\n const ends = [flatCoordinates.length];\n const polygon = new Polygon(flatCoordinates, layout, ends);\n makeRegular(polygon, center, circle.getRadius(), opt_angle);\n return polygon;\n}\n\n\n/**\n * Modify the coordinates of a polygon to make it a regular polygon.\n * @param {Polygon} polygon Polygon geometry.\n * @param {import(\"../coordinate.js\").Coordinate} center Center of the regular polygon.\n * @param {number} radius Radius of the regular polygon.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * radians. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, opt_angle) {\n const flatCoordinates = polygon.getFlatCoordinates();\n const stride = polygon.getStride();\n const sides = flatCoordinates.length / stride - 1;\n const startAngle = opt_angle ? opt_angle : 0;\n for (let i = 0; i <= sides; ++i) {\n const offset = i * stride;\n const angle = startAngle + (modulo(i, sides) * 2 * Math.PI / sides);\n flatCoordinates[offset] = center[0] + (radius * Math.cos(angle));\n flatCoordinates[offset + 1] = center[1] + (radius * Math.sin(angle));\n }\n polygon.changed();\n}\n","/**\n * @module ol/View\n */\nimport {DEFAULT_TILE_SIZE} from './tilegrid/common.js';\nimport {getUid} from './util.js';\nimport {VOID} from './functions.js';\nimport {createExtent, none as centerNone} from './centerconstraint.js';\nimport BaseObject from './Object.js';\nimport {createSnapToResolutions, createSnapToPower} from './resolutionconstraint.js';\nimport {createSnapToZero, createSnapToN, none as rotationNone, disable} from './rotationconstraint.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport {linearFindNearest} from './array.js';\nimport {assert} from './asserts.js';\nimport {add as addCoordinate, rotate as rotateCoordinate, equals as coordinatesEqual} from './coordinate.js';\nimport {inAndOut} from './easing.js';\nimport {getForViewAndSize, getCenter, getHeight, getWidth, isEmpty} from './extent.js';\nimport GeometryType from './geom/GeometryType.js';\nimport {fromExtent as polygonFromExtent} from './geom/Polygon.js';\nimport {clamp, modulo} from './math.js';\nimport {assign} from './obj.js';\nimport {createProjection, METERS_PER_UNIT, toUserCoordinate, toUserExtent, fromUserCoordinate, fromUserExtent, getUserProjection} from './proj.js';\nimport Units from './proj/Units.js';\nimport {equals} from './coordinate.js';\nimport {easeOut} from './easing.js';\nimport {createMinMaxResolution} from './resolutionconstraint.js';\n\n\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter]\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter]\n * @property {number} [sourceResolution]\n * @property {number} [targetResolution]\n * @property {number} [sourceRotation]\n * @property {number} [targetRotation]\n * @property {import(\"./coordinate.js\").Coordinate} [anchor]\n * @property {number} start\n * @property {number} duration\n * @property {boolean} complete\n * @property {function(number):number} easing\n * @property {function(boolean)} callback\n */\n\n\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center\n * @property {import(\"./resolutionconstraint.js\").Type} resolution\n * @property {import(\"./rotationconstraint.js\").Type} rotation\n */\n\n\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to fit\n * the extent into. Default is the current size of the first map in the DOM that\n * uses this view, or `[100, 100]` if no such map is found.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,\n * get the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean)} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n\n\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `extent`.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint. It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge. If `true` the map\n * may show multiple worlds at low zoom levels. Only used if the `projection` is\n * global. Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array} [resolutions] Resolutions to determine the\n * resolution constraint. If set the `maxResolution`, `minResolution`,\n * `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\n */\n\n\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remain fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n\n\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center\n * @property {import(\"./proj/Projection.js\").default} projection\n * @property {number} resolution\n * @property {number} rotation\n * @property {number} zoom\n */\n\n\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nconst DEFAULT_MIN_ZOOM = 0;\n\n\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * A View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Spherical Mercator (EPSG:3857).\n *\n * ### The view states\n *\n * A View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `opt_anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n */\nclass View extends BaseObject {\n\n /**\n * @param {ViewOptions=} opt_options View options.\n */\n constructor(opt_options) {\n super();\n\n const options = assign({}, opt_options);\n\n /**\n * @private\n * @type {Array}\n */\n this.hints_ = [0, 0];\n\n /**\n * @private\n * @type {Array>}\n */\n this.animations_ = [];\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.updateAnimationKey_;\n\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n this.projection_ = createProjection(options.projection, 'EPSG:3857');\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n this.targetCenter_ = null;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.targetResolution_;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.targetRotation_;\n\n if (options.center) {\n options.center = fromUserCoordinate(options.center, this.projection_);\n }\n if (options.extent) {\n options.extent = fromUserExtent(options.extent, this.projection_);\n }\n\n this.applyOptions_(options);\n }\n\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n applyOptions_(options) {\n\n /**\n * @type {Object}\n */\n const properties = {};\n\n const resolutionConstraintInfo = createResolutionConstraint(options);\n\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n\n const centerConstraint = createCenterConstraint(options);\n const resolutionConstraint = resolutionConstraintInfo.constraint;\n const rotationConstraint = createRotationConstraint(options);\n\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint\n };\n\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(options.center !== undefined ? options.center : null);\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n } else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n this.resolveConstraints(0);\n\n this.setProperties(properties);\n\n\n /**\n * @private\n * @type {ViewOptions}\n */\n this.options_ = options;\n\n }\n\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n getUpdatedOptions_(newOptions) {\n const options = assign({}, this.options_);\n\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n } else {\n options.zoom = this.getZoom();\n }\n\n // preserve center\n options.center = this.getCenterInternal();\n\n // preserve rotation\n options.rotation = this.getRotation();\n\n return assign({}, options, newOptions);\n }\n\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation\n * options. Multiple animations can be run in series by passing multiple\n * options objects. To run multiple animations in parallel, call the method\n * multiple times. An optional callback can be provided as a final\n * argument. The callback will be called with a boolean indicating whether\n * the animation completed without being cancelled.\n * @api\n */\n animate(var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n const args = new Array(arguments.length);\n for (let i = 0; i < args.length; ++i) {\n let options = arguments[i];\n if (options.center) {\n options = assign({}, options);\n options.center = fromUserCoordinate(options.center, this.getProjection());\n }\n if (options.anchor) {\n options = assign({}, options);\n options.anchor = fromUserCoordinate(options.anchor, this.getProjection());\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n }\n\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n animateInternal(var_args) {\n let animationCount = arguments.length;\n let callback;\n if (animationCount > 1 && typeof arguments[animationCount - 1] === 'function') {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n if (!this.isDef()) {\n // if view properties are not yet set, shortcut to the final state\n const state = arguments[animationCount - 1];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n let start = Date.now();\n let center = this.targetCenter_.slice();\n let resolution = this.targetResolution_;\n let rotation = this.targetRotation_;\n const series = [];\n for (let i = 0; i < animationCount; ++i) {\n const options = /** @type {AnimationOptions} */ (arguments[i]);\n\n const animation = {\n start: start,\n complete: false,\n anchor: options.anchor,\n duration: options.duration !== undefined ? options.duration : 1000,\n easing: options.easing || inAndOut,\n callback: callback\n };\n\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n } else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n const delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n } else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n }\n\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n getAnimating() {\n return this.hints_[ViewHint.ANIMATING] > 0;\n }\n\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n getInteracting() {\n return this.hints_[ViewHint.INTERACTING] > 0;\n }\n\n /**\n * Cancel any ongoing animations.\n * @api\n */\n cancelAnimations() {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n for (let i = 0, ii = this.animations_.length; i < ii; ++i) {\n const series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n }\n this.animations_.length = 0;\n }\n\n /**\n * Update all animations.\n */\n updateAnimations_() {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n const now = Date.now();\n let more = false;\n for (let i = this.animations_.length - 1; i >= 0; --i) {\n const series = this.animations_[i];\n let seriesComplete = true;\n for (let j = 0, jj = series.length; j < jj; ++j) {\n const animation = series[j];\n if (animation.complete) {\n continue;\n }\n const elapsed = now - animation.start;\n let fraction = animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n } else {\n seriesComplete = false;\n }\n const progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n const x0 = animation.sourceCenter[0];\n const y0 = animation.sourceCenter[1];\n const x1 = animation.targetCenter[0];\n const y1 = animation.targetCenter[1];\n const x = x0 + progress * (x1 - x0);\n const y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n const resolution = progress === 1 ?\n animation.targetResolution :\n animation.sourceResolution + progress * (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n const size = this.getSizeFromViewport_(this.getRotation());\n const constrainedResolution = this.constraints_.resolution(resolution, 0, size, true);\n this.targetCenter_ = this.calculateCenterZoom(constrainedResolution, animation.anchor);\n }\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (animation.sourceRotation !== undefined && animation.targetRotation !== undefined) {\n const rotation = progress === 1 ?\n modulo(animation.targetRotation + Math.PI, 2 * Math.PI) - Math.PI :\n animation.sourceRotation + progress * (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n const constrainedRotation = this.constraints_.rotation(rotation, true);\n this.targetCenter_ = this.calculateCenterRotate(constrainedRotation, animation.anchor);\n }\n this.targetRotation_ = rotation;\n }\n this.applyTargetState_(true);\n more = true;\n if (!animation.complete) {\n break;\n }\n }\n if (seriesComplete) {\n this.animations_[i] = null;\n this.setHint(ViewHint.ANIMATING, -1);\n const callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_.bind(this));\n }\n }\n\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n calculateCenterRotate(rotation, anchor) {\n let center;\n const currentCenter = this.getCenterInternal();\n if (currentCenter !== undefined) {\n center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n rotateCoordinate(center, rotation - this.getRotation());\n addCoordinate(center, anchor);\n }\n return center;\n }\n\n /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n calculateCenterZoom(resolution, anchor) {\n let center;\n const currentCenter = this.getCenterInternal();\n const currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n const x = anchor[0] - resolution * (anchor[0] - currentCenter[0]) / currentResolution;\n const y = anchor[1] - resolution * (anchor[1] - currentCenter[1]) / currentResolution;\n center = [x, y];\n }\n return center;\n }\n\n /**\n * @private\n * @param {number=} opt_rotation Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n getSizeFromViewport_(opt_rotation) {\n const size = [100, 100];\n const selector = '.ol-viewport[data-view=\"' + getUid(this) + '\"]';\n const element = document.querySelector(selector);\n if (element) {\n const metrics = getComputedStyle(element);\n size[0] = parseInt(metrics.width, 10);\n size[1] = parseInt(metrics.height, 10);\n }\n if (opt_rotation) {\n const w = size[0];\n const h = size[1];\n size[0] = Math.abs(w * Math.cos(opt_rotation)) + Math.abs(h * Math.sin(opt_rotation));\n size[1] = Math.abs(w * Math.sin(opt_rotation)) + Math.abs(h * Math.cos(opt_rotation));\n }\n return size;\n }\n\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n getCenter() {\n const center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n }\n\n /**\n * Get the view center without transforming to user projection.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n */\n getCenterInternal() {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(ViewProperty.CENTER));\n }\n\n /**\n * @return {Constraints} Constraints.\n */\n getConstraints() {\n return this.constraints_;\n }\n\n /**\n * @param {Array=} opt_hints Destination array.\n * @return {Array} Hint.\n */\n getHints(opt_hints) {\n if (opt_hints !== undefined) {\n opt_hints[0] = this.hints_[0];\n opt_hints[1] = this.hints_[1];\n return opt_hints;\n } else {\n return this.hints_.slice();\n }\n }\n\n /**\n * Calculate the extent for the current view state and the passed size.\n * The size is the pixel dimensions of the box into which the calculated extent\n * should fit. In most cases you want to get the extent of the entire map,\n * that is `map.getSize()`.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size of the\n * first map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n calculateExtent(opt_size) {\n const extent = this.calculateExtentInternal(opt_size);\n return toUserExtent(extent, this.getProjection());\n }\n\n /**\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size of the\n * first map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n calculateExtentInternal(opt_size) {\n const size = opt_size || this.getSizeFromViewport_();\n const center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n assert(center, 1); // The view center is not defined\n const resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n const rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n\n return getForViewAndSize(center, resolution, rotation, size);\n }\n\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n getMaxResolution() {\n return this.maxResolution_;\n }\n\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n getMinResolution() {\n return this.minResolution_;\n }\n\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n getMaxZoom() {\n return /** @type {number} */ (this.getZoomForResolution(this.minResolution_));\n }\n\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n setMaxZoom(zoom) {\n this.applyOptions_(this.getUpdatedOptions_({maxZoom: zoom}));\n }\n\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n getMinZoom() {\n return /** @type {number} */ (this.getZoomForResolution(this.maxResolution_));\n }\n\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n setMinZoom(zoom) {\n this.applyOptions_(this.getUpdatedOptions_({minZoom: zoom}));\n }\n\n /**\n * Set whether the view shoud allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n setConstrainResolution(enabled) {\n this.applyOptions_(this.getUpdatedOptions_({constrainResolution: enabled}));\n }\n\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n getProjection() {\n return this.projection_;\n }\n\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n getResolution() {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n }\n\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n getResolutions() {\n return this.resolutions_;\n }\n\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n getResolutionForExtent(extent, opt_size) {\n return this.getResolutionForExtentInternal(fromUserExtent(extent, this.getProjection()), opt_size);\n }\n\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n getResolutionForExtentInternal(extent, opt_size) {\n const size = opt_size || this.getSizeFromViewport_();\n const xResolution = getWidth(extent) / size[0];\n const yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n }\n\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Resolution for value function.\n */\n getResolutionForValueFunction(opt_power) {\n const power = opt_power || 2;\n const maxResolution = this.maxResolution_;\n const minResolution = this.minResolution_;\n const max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function(value) {\n const resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n });\n }\n\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n getRotation() {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n }\n\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Value for resolution function.\n */\n getValueForResolutionFunction(opt_power) {\n const power = opt_power || 2;\n const maxResolution = this.maxResolution_;\n const minResolution = this.minResolution_;\n const max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function(resolution) {\n const value = (Math.log(maxResolution / resolution) / Math.log(power)) / max;\n return value;\n });\n }\n\n /**\n * @return {State} View state.\n */\n getState() {\n const center = /** @type {import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n const projection = this.getProjection();\n const resolution = /** @type {number} */ (this.getResolution());\n const rotation = this.getRotation();\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n rotation: rotation,\n zoom: this.getZoom()\n };\n }\n\n /**\n * Get the current zoom level. This method may return non-integer zoom levels\n * if the view does not constrain the resolution, or if an interaction or\n * animation is underway.\n * @return {number|undefined} Zoom.\n * @api\n */\n getZoom() {\n let zoom;\n const resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n }\n\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n getZoomForResolution(resolution) {\n let offset = this.minZoom_ || 0;\n let max, zoomFactor;\n if (this.resolutions_) {\n const nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n } else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n } else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n }\n\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n getResolutionForZoom(zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n const baseLevel = clamp(Math.floor(zoom), 0, this.resolutions_.length - 2);\n const zoomFactor = this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return this.resolutions_[baseLevel] / Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1));\n } else {\n return this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_);\n }\n }\n\n /**\n * Fit the given geometry or extent based on the given map size and border.\n * The size is pixel dimensions of the box to fit the extent into.\n * In most cases you will want to use the map size, that is `map.getSize()`.\n * Takes care of the map angle.\n * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n * extent to fit the view to.\n * @param {FitOptions=} opt_options Options.\n * @api\n */\n fit(geometryOrExtent, opt_options) {\n const options = assign({size: this.getSizeFromViewport_()}, opt_options || {});\n\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n let geometry;\n assert(Array.isArray(geometryOrExtent) || typeof /** @type {?} */ (geometryOrExtent).getSimplifiedGeometry === 'function',\n 24); // Invalid extent or geometry provided as `geometry`\n if (Array.isArray(geometryOrExtent)) {\n assert(!isEmpty(geometryOrExtent),\n 25); // Cannot fit empty extent provided as `geometry`\n const extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n } else if (geometryOrExtent.getType() === GeometryType.CIRCLE) {\n const extent = fromUserExtent(geometryOrExtent.getExtent(), this.getProjection());\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n } else {\n const userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry.clone().transform(userProjection, this.getProjection()));\n } else {\n geometry = geometryOrExtent;\n }\n }\n\n this.fitInternal(geometry, options);\n }\n\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions=} opt_options Options.\n */\n fitInternal(geometry, opt_options) {\n const options = opt_options || {};\n let size = options.size;\n if (!size) {\n size = this.getSizeFromViewport_();\n }\n const padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n const nearest = options.nearest !== undefined ? options.nearest : false;\n let minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n } else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n } else {\n minResolution = 0;\n }\n const coords = geometry.getFlatCoordinates();\n\n // calculate rotated extent\n const rotation = this.getRotation();\n const cosAngle = Math.cos(-rotation);\n let sinAngle = Math.sin(-rotation);\n let minRotX = +Infinity;\n let minRotY = +Infinity;\n let maxRotX = -Infinity;\n let maxRotY = -Infinity;\n const stride = geometry.getStride();\n for (let i = 0, ii = coords.length; i < ii; i += stride) {\n const rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n const rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n\n // calculate resolution\n let resolution = this.getResolutionForExtentInternal(\n [minRotX, minRotY, maxRotX, maxRotY],\n [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);\n resolution = isNaN(resolution) ? minResolution :\n Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n\n // calculate center\n sinAngle = -sinAngle; // go back to original rotation\n let centerRotX = (minRotX + maxRotX) / 2;\n let centerRotY = (minRotY + maxRotY) / 2;\n centerRotX += (padding[1] - padding[3]) / 2 * resolution;\n centerRotY += (padding[0] - padding[2]) / 2 * resolution;\n const centerX = centerRotX * cosAngle - centerRotY * sinAngle;\n const centerY = centerRotY * cosAngle + centerRotX * sinAngle;\n const center = [centerX, centerY];\n const callback = options.callback ? options.callback : VOID;\n\n if (options.duration !== undefined) {\n this.animateInternal({\n resolution: resolution,\n center: this.getConstrainedCenter(center, resolution),\n duration: options.duration,\n easing: options.easing\n }, callback);\n } else {\n this.targetResolution_ = resolution;\n this.targetCenter_ = center;\n this.applyTargetState_(false, true);\n animationCallback(callback, true);\n }\n }\n\n /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n centerOn(coordinate, size, position) {\n this.centerOnInternal(fromUserCoordinate(coordinate, this.getProjection()), size, position);\n }\n\n /**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n */\n centerOnInternal(coordinate, size, position) {\n // calculate rotated position\n const rotation = this.getRotation();\n const cosAngle = Math.cos(-rotation);\n let sinAngle = Math.sin(-rotation);\n let rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n let rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n const resolution = this.getResolution();\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n const centerX = rotX * cosAngle - rotY * sinAngle;\n const centerY = rotY * cosAngle + rotX * sinAngle;\n\n this.setCenterInternal([centerX, centerY]);\n }\n\n /**\n * @return {boolean} Is defined.\n */\n isDef() {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n }\n\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n * @api\n */\n adjustCenter(deltaCoordinates) {\n const center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([center[0] + deltaCoordinates[0], center[1] + deltaCoordinates[1]]);\n }\n\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n */\n adjustCenterInternal(deltaCoordinates) {\n const center = this.targetCenter_;\n this.setCenterInternal([center[0] + deltaCoordinates[0], center[1] + deltaCoordinates[1]]);\n }\n\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n adjustResolution(ratio, opt_anchor) {\n const anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n }\n\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n adjustResolutionInternal(ratio, opt_anchor) {\n const isMoving = this.getAnimating() || this.getInteracting();\n const size = this.getSizeFromViewport_(this.getRotation());\n const newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);\n\n if (opt_anchor !== undefined) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, opt_anchor);\n }\n\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n }\n\n /**\n * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom level.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n adjustZoom(delta, opt_anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), opt_anchor);\n }\n\n /**\n * Adds a value to the view rotation, optionally using an anchor. Any rotation\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n * @api\n */\n adjustRotation(delta, opt_anchor) {\n if (opt_anchor) {\n opt_anchor = fromUserCoordinate(opt_anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, opt_anchor);\n }\n\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n */\n adjustRotationInternal(delta, opt_anchor) {\n const isMoving = this.getAnimating() || this.getInteracting();\n const newRotation = this.constraints_.rotation(this.targetRotation_ + delta, isMoving);\n if (opt_anchor !== undefined) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, opt_anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n }\n\n /**\n * Set the center of the current view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n setCenter(center) {\n this.setCenterInternal(fromUserCoordinate(center, this.getProjection()));\n }\n\n /**\n * Set the center using the view projection (not the user projection).\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n */\n setCenterInternal(center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n }\n\n /**\n * @param {ViewHint} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n setHint(hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n }\n\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n setResolution(resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n }\n\n /**\n * Set the rotation for this view. Any rotation constraint will apply.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n setRotation(rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n }\n\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n setZoom(zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n }\n\n /**\n * Recompute rotation/resolution/center based on target values.\n * Note: we have to compute rotation first, then resolution and center considering that\n * parameters can influence one another in case a view extent constraint is present.\n * @param {boolean=} opt_doNotCancelAnims Do not cancel animations.\n * @param {boolean=} opt_forceMoving Apply constraints as if the view is moving.\n * @private\n */\n applyTargetState_(opt_doNotCancelAnims, opt_forceMoving) {\n const isMoving = this.getAnimating() || this.getInteracting() || opt_forceMoving;\n\n // compute rotation\n const newRotation = this.constraints_.rotation(this.targetRotation_, isMoving);\n const size = this.getSizeFromViewport_(newRotation);\n const newResolution = this.constraints_.resolution(this.targetResolution_, 0, size, isMoving);\n const newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, isMoving);\n\n if (this.get(ViewProperty.ROTATION) !== newRotation) {\n this.set(ViewProperty.ROTATION, newRotation);\n }\n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n this.set(ViewProperty.RESOLUTION, newResolution);\n }\n if (!this.get(ViewProperty.CENTER) || !equals(this.get(ViewProperty.CENTER), newCenter)) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n\n if (this.getAnimating() && !opt_doNotCancelAnims) {\n this.cancelAnimations();\n }\n }\n\n /**\n * If any constraints need to be applied, an animation will be triggered.\n * This is typically done on interaction end.\n * Note: calling this with a duration of 0 will apply the constrained values straight away,\n * without animation.\n * @param {number=} opt_duration The animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n resolveConstraints(opt_duration, opt_resolutionDirection, opt_anchor) {\n const duration = opt_duration !== undefined ? opt_duration : 200;\n const direction = opt_resolutionDirection || 0;\n\n const newRotation = this.constraints_.rotation(this.targetRotation_);\n const size = this.getSizeFromViewport_(newRotation);\n const newResolution = this.constraints_.resolution(this.targetResolution_, direction, size);\n const newCenter = this.constraints_.center(this.targetCenter_, newResolution, size);\n\n if (duration === 0) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\n\n if (this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)) {\n\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n\n this.animateInternal({\n rotation: newRotation,\n center: newCenter,\n resolution: newResolution,\n duration: duration,\n easing: easeOut,\n anchor: opt_anchor\n });\n }\n }\n\n /**\n * Notify the View that an interaction has started.\n * The view state will be resolved to a stable one if needed\n * (depending on its constraints).\n * @api\n */\n beginInteraction() {\n this.resolveConstraints(0);\n\n this.setHint(ViewHint.INTERACTING, 1);\n }\n\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n endInteraction(opt_duration, opt_resolutionDirection, opt_anchor) {\n const anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.endInteractionInternal(opt_duration, opt_resolutionDirection, anchor);\n }\n\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n endInteractionInternal(opt_duration, opt_resolutionDirection, opt_anchor) {\n this.setHint(ViewHint.INTERACTING, -1);\n\n this.resolveConstraints(opt_duration, opt_resolutionDirection, opt_anchor);\n }\n\n /**\n * Get a valid position for the view center according to the current constraints.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n * @param {number=} opt_targetResolution Target resolution. If not supplied, the current one will be used.\n * This is useful to guess a valid center position at a different zoom level.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n */\n getConstrainedCenter(targetCenter, opt_targetResolution) {\n const size = this.getSizeFromViewport_(this.getRotation());\n return this.constraints_.center(targetCenter, opt_targetResolution || this.getResolution(), size);\n }\n\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid zoom level.\n */\n getConstrainedZoom(targetZoom, opt_direction) {\n const targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(this.getConstrainedResolution(targetRes, opt_direction));\n }\n\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid resolution.\n */\n getConstrainedResolution(targetResolution, opt_direction) {\n const direction = opt_direction || 0;\n const size = this.getSizeFromViewport_(this.getRotation());\n\n return this.constraints_.resolution(targetResolution, direction, size);\n }\n}\n\n\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function() {\n callback(returnValue);\n }, 0);\n}\n\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n const smooth = options.smoothExtentConstraint !== undefined ? options.smoothExtentConstraint : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n\n const projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n const extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n\n return centerNone;\n}\n\n\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n let resolutionConstraint;\n let maxResolution;\n let minResolution;\n\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n const defaultMaxZoom = 28;\n const defaultZoomFactor = 2;\n\n let minZoom = options.minZoom !== undefined ?\n options.minZoom : DEFAULT_MIN_ZOOM;\n\n let maxZoom = options.maxZoom !== undefined ?\n options.maxZoom : defaultMaxZoom;\n\n const zoomFactor = options.zoomFactor !== undefined ?\n options.zoomFactor : defaultZoomFactor;\n\n const multiWorld = options.multiWorld !== undefined ?\n options.multiWorld : false;\n\n const smooth =\n options.smoothResolutionConstraint !== undefined ? options.smoothResolutionConstraint : true;\n\n const projection = createProjection(options.projection, 'EPSG:3857');\n const projExtent = projection.getExtent();\n let constrainOnlyCenter = options.constrainOnlyCenter;\n let extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n\n if (options.resolutions !== undefined) {\n const resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution = resolutions[maxZoom] !== undefined ?\n resolutions[maxZoom] : resolutions[resolutions.length - 1];\n\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(resolutions, smooth,\n !constrainOnlyCenter && extent);\n } else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth,\n !constrainOnlyCenter && extent);\n }\n } else {\n // calculate the default min and max resolution\n const size = !projExtent ?\n // use an extent that can fit the whole world if need be\n 360 * METERS_PER_UNIT[Units.DEGREES] /\n projection.getMetersPerUnit() :\n Math.max(getWidth(projExtent), getHeight(projExtent));\n\n const defaultMaxResolution = size / DEFAULT_TILE_SIZE / Math.pow(\n defaultZoomFactor, DEFAULT_MIN_ZOOM);\n\n const defaultMinResolution = defaultMaxResolution / Math.pow(\n defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n } else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n } else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n } else {\n minResolution = defaultMinResolution;\n }\n }\n\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom = minZoom + Math.floor(\n Math.log(maxResolution / minResolution) / Math.log(zoomFactor));\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(\n zoomFactor, maxResolution, minResolution, smooth,\n !constrainOnlyCenter && extent);\n } else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth,\n !constrainOnlyCenter && extent);\n }\n }\n return {constraint: resolutionConstraint, maxResolution: maxResolution,\n minResolution: minResolution, minZoom: minZoom, zoomFactor: zoomFactor};\n}\n\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n const enableRotation = options.enableRotation !== undefined ?\n options.enableRotation : true;\n if (enableRotation) {\n const constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n } else if (constrainRotation === false) {\n return rotationNone;\n } else if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n } else {\n return rotationNone;\n }\n } else {\n return disable;\n }\n}\n\n\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n if (animation.sourceCenter && animation.targetCenter) {\n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n return false;\n }\n }\n if (animation.sourceResolution !== animation.targetResolution) {\n return false;\n }\n if (animation.sourceRotation !== animation.targetRotation) {\n return false;\n }\n return true;\n}\n\nexport default View;\n","/**\n * @module ol/dom\n */\n\n\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number=} opt_width Canvas width.\n * @param {number=} opt_height Canvas height.\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height) {\n const canvas = document.createElement('canvas');\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n return canvas.getContext('2d');\n}\n\n\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n let width = element.offsetWidth;\n const style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n\n return width;\n}\n\n\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n let height = element.offsetHeight;\n const style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n\n return height;\n}\n\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n const parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n\n/**\n * @param {Node} node The node to remove.\n * @returns {Node} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n const oldChildren = node.childNodes;\n\n for (let i = 0; true; ++i) {\n const oldChild = oldChildren[i];\n const newChild = children[i];\n\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n","/**\n * @module ol/layer/Property\n */\n\n/**\n * @enum {string}\n */\nexport default {\n OPACITY: 'opacity',\n VISIBLE: 'visible',\n EXTENT: 'extent',\n Z_INDEX: 'zIndex',\n MAX_RESOLUTION: 'maxResolution',\n MIN_RESOLUTION: 'minResolution',\n MAX_ZOOM: 'maxZoom',\n MIN_ZOOM: 'minZoom',\n SOURCE: 'source'\n};\n","/**\n * @module ol/layer/Base\n */\nimport {abstract} from '../util.js';\nimport BaseObject from '../Object.js';\nimport LayerProperty from './Property.js';\nimport {clamp} from '../math.js';\nimport {assign} from '../obj.js';\nimport {assert} from '../asserts.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n */\n\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Note that with {@link module:ol/layer/Base} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object} property on the layer object, so\n * is observable, and has get/set accessors.\n *\n * @api\n */\nclass BaseLayer extends BaseObject {\n /**\n * @param {Options} options Layer options.\n */\n constructor(options) {\n\n super();\n\n /**\n * @type {Object}\n */\n const properties = assign({}, options);\n\n properties[LayerProperty.OPACITY] =\n options.opacity !== undefined ? options.opacity : 1;\n assert(typeof properties[LayerProperty.OPACITY] === 'number', 64); // Layer opacity must be a number\n\n properties[LayerProperty.VISIBLE] =\n options.visible !== undefined ? options.visible : true;\n properties[LayerProperty.Z_INDEX] = options.zIndex;\n properties[LayerProperty.MAX_RESOLUTION] =\n options.maxResolution !== undefined ? options.maxResolution : Infinity;\n properties[LayerProperty.MIN_RESOLUTION] =\n options.minResolution !== undefined ? options.minResolution : 0;\n properties[LayerProperty.MIN_ZOOM] =\n options.minZoom !== undefined ? options.minZoom : -Infinity;\n properties[LayerProperty.MAX_ZOOM] =\n options.maxZoom !== undefined ? options.maxZoom : Infinity;\n\n /**\n * @type {string}\n * @private\n */\n this.className_ = properties.className !== undefined ? options.className : 'ol-layer';\n delete properties.className;\n\n this.setProperties(properties);\n\n /**\n * @type {import(\"./Layer.js\").State}\n * @private\n */\n this.state_ = null;\n\n }\n\n /**\n * @return {string} CSS class name.\n */\n getClassName() {\n return this.className_;\n }\n\n /**\n * This method is not meant to be called by layers or layer renderers because the state\n * is incorrect if the layer is included in a layer group.\n *\n * @param {boolean=} opt_managed Layer is managed.\n * @return {import(\"./Layer.js\").State} Layer state.\n */\n getLayerState(opt_managed) {\n /** @type {import(\"./Layer.js\").State} */\n const state = this.state_ || /** @type {?} */ ({\n layer: this,\n managed: opt_managed === undefined ? true : opt_managed\n });\n const zIndex = this.getZIndex();\n state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);\n state.sourceState = this.getSourceState();\n state.visible = this.getVisible();\n state.extent = this.getExtent();\n state.zIndex = zIndex !== undefined ? zIndex : (state.managed === false ? Infinity : 0);\n state.maxResolution = this.getMaxResolution();\n state.minResolution = Math.max(this.getMinResolution(), 0);\n state.minZoom = this.getMinZoom();\n state.maxZoom = this.getMaxZoom();\n this.state_ = state;\n\n return state;\n }\n\n /**\n * @abstract\n * @param {Array=} opt_array Array of layers (to be\n * modified in place).\n * @return {Array} Array of layers.\n */\n getLayersArray(opt_array) {\n return abstract();\n }\n\n /**\n * @abstract\n * @param {Array=} opt_states Optional list of layer\n * states (to be modified in place).\n * @return {Array} List of layer states.\n */\n getLayerStatesArray(opt_states) {\n return abstract();\n }\n\n /**\n * Return the {@link module:ol/extent~Extent extent} of the layer or `undefined` if it\n * will be visible regardless of extent.\n * @return {import(\"../extent.js\").Extent|undefined} The layer extent.\n * @observable\n * @api\n */\n getExtent() {\n return (\n /** @type {import(\"../extent.js\").Extent|undefined} */ (this.get(LayerProperty.EXTENT))\n );\n }\n\n /**\n * Return the maximum resolution of the layer.\n * @return {number} The maximum resolution of the layer.\n * @observable\n * @api\n */\n getMaxResolution() {\n return /** @type {number} */ (this.get(LayerProperty.MAX_RESOLUTION));\n }\n\n /**\n * Return the minimum resolution of the layer.\n * @return {number} The minimum resolution of the layer.\n * @observable\n * @api\n */\n getMinResolution() {\n return /** @type {number} */ (this.get(LayerProperty.MIN_RESOLUTION));\n }\n\n /**\n * Return the minimum zoom level of the layer.\n * @return {number} The minimum zoom level of the layer.\n * @observable\n * @api\n */\n getMinZoom() {\n return /** @type {number} */ (this.get(LayerProperty.MIN_ZOOM));\n }\n\n /**\n * Return the maximum zoom level of the layer.\n * @return {number} The maximum zoom level of the layer.\n * @observable\n * @api\n */\n getMaxZoom() {\n return /** @type {number} */ (this.get(LayerProperty.MAX_ZOOM));\n }\n\n /**\n * Return the opacity of the layer (between 0 and 1).\n * @return {number} The opacity of the layer.\n * @observable\n * @api\n */\n getOpacity() {\n return /** @type {number} */ (this.get(LayerProperty.OPACITY));\n }\n\n /**\n * @abstract\n * @return {import(\"../source/State.js\").default} Source state.\n */\n getSourceState() {\n return abstract();\n }\n\n /**\n * Return the visibility of the layer (`true` or `false`).\n * @return {boolean} The visibility of the layer.\n * @observable\n * @api\n */\n getVisible() {\n return /** @type {boolean} */ (this.get(LayerProperty.VISIBLE));\n }\n\n /**\n * Return the Z-index of the layer, which is used to order layers before\n * rendering. The default Z-index is 0.\n * @return {number} The Z-index of the layer.\n * @observable\n * @api\n */\n getZIndex() {\n return /** @type {number} */ (this.get(LayerProperty.Z_INDEX));\n }\n\n /**\n * Set the extent at which the layer is visible. If `undefined`, the layer\n * will be visible at all extents.\n * @param {import(\"../extent.js\").Extent|undefined} extent The extent of the layer.\n * @observable\n * @api\n */\n setExtent(extent) {\n this.set(LayerProperty.EXTENT, extent);\n }\n\n /**\n * Set the maximum resolution at which the layer is visible.\n * @param {number} maxResolution The maximum resolution of the layer.\n * @observable\n * @api\n */\n setMaxResolution(maxResolution) {\n this.set(LayerProperty.MAX_RESOLUTION, maxResolution);\n }\n\n /**\n * Set the minimum resolution at which the layer is visible.\n * @param {number} minResolution The minimum resolution of the layer.\n * @observable\n * @api\n */\n setMinResolution(minResolution) {\n this.set(LayerProperty.MIN_RESOLUTION, minResolution);\n }\n\n /**\n * Set the maximum zoom (exclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} maxZoom The maximum zoom of the layer.\n * @observable\n * @api\n */\n setMaxZoom(maxZoom) {\n this.set(LayerProperty.MAX_ZOOM, maxZoom);\n }\n\n /**\n * Set the minimum zoom (inclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} minZoom The minimum zoom of the layer.\n * @observable\n * @api\n */\n setMinZoom(minZoom) {\n this.set(LayerProperty.MIN_ZOOM, minZoom);\n }\n\n /**\n * Set the opacity of the layer, allowed values range from 0 to 1.\n * @param {number} opacity The opacity of the layer.\n * @observable\n * @api\n */\n setOpacity(opacity) {\n assert(typeof opacity === 'number', 64); // Layer opacity must be a number\n this.set(LayerProperty.OPACITY, opacity);\n }\n\n /**\n * Set the visibility of the layer (`true` or `false`).\n * @param {boolean} visible The visibility of the layer.\n * @observable\n * @api\n */\n setVisible(visible) {\n this.set(LayerProperty.VISIBLE, visible);\n }\n\n /**\n * Set Z-index of the layer, which is used to order layers before rendering.\n * The default Z-index is 0.\n * @param {number} zindex The z-index of the layer.\n * @observable\n * @api\n */\n setZIndex(zindex) {\n this.set(LayerProperty.Z_INDEX, zindex);\n }\n\n /**\n * @inheritDoc\n */\n disposeInternal() {\n if (this.state_) {\n this.state_.layer = null;\n this.state_ = null;\n }\n super.disposeInternal();\n }\n}\n\n\nexport default BaseLayer;\n","/**\n * @module ol/source/State\n */\n\n/**\n * @enum {string}\n * State of the source, one of 'undefined', 'loading', 'ready' or 'error'.\n */\nexport default {\n UNDEFINED: 'undefined',\n LOADING: 'loading',\n READY: 'ready',\n ERROR: 'error'\n};\n","/**\n * @module ol/layer/Group\n */\nimport {getUid} from '../util.js';\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport {getChangeEventType} from '../Object.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport {assert} from '../asserts.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport EventType from '../events/EventType.js';\nimport {getIntersection} from '../extent.js';\nimport BaseLayer from './Base.js';\nimport {assign, clear} from '../obj.js';\nimport SourceState from '../source/State.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {Array|import(\"../Collection.js\").default} [layers] Child layers.\n */\n\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n LAYERS: 'layers'\n};\n\n\n/**\n * @classdesc\n * A {@link module:ol/Collection~Collection} of layers that are handled together.\n *\n * A generic `change` event is triggered when the group/Collection changes.\n *\n * @api\n */\nclass LayerGroup extends BaseLayer {\n /**\n * @param {Options=} opt_options Layer options.\n */\n constructor(opt_options) {\n\n const options = opt_options || {};\n const baseOptions = /** @type {Options} */ (assign({}, options));\n delete baseOptions.layers;\n\n let layers = options.layers;\n\n super(baseOptions);\n\n /**\n * @private\n * @type {Array}\n */\n this.layersListenerKeys_ = [];\n\n /**\n * @private\n * @type {Object>}\n */\n this.listenerKeys_ = {};\n\n this.addEventListener(getChangeEventType(Property.LAYERS), this.handleLayersChanged_);\n\n if (layers) {\n if (Array.isArray(layers)) {\n layers = new Collection(layers.slice(), {unique: true});\n } else {\n assert(typeof /** @type {?} */ (layers).getArray === 'function',\n 43); // Expected `layers` to be an array or a `Collection`\n }\n } else {\n layers = new Collection(undefined, {unique: true});\n }\n\n this.setLayers(layers);\n\n }\n\n /**\n * @private\n */\n handleLayerChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleLayersChanged_() {\n this.layersListenerKeys_.forEach(unlistenByKey);\n this.layersListenerKeys_.length = 0;\n\n const layers = this.getLayers();\n this.layersListenerKeys_.push(\n listen(layers, CollectionEventType.ADD, this.handleLayersAdd_, this),\n listen(layers, CollectionEventType.REMOVE, this.handleLayersRemove_, this)\n );\n\n for (const id in this.listenerKeys_) {\n this.listenerKeys_[id].forEach(unlistenByKey);\n }\n clear(this.listenerKeys_);\n\n const layersArray = layers.getArray();\n for (let i = 0, ii = layersArray.length; i < ii; i++) {\n const layer = layersArray[i];\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)\n ];\n }\n\n this.changed();\n }\n\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n handleLayersAdd_(collectionEvent) {\n const layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this)\n ];\n this.changed();\n }\n\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n handleLayersRemove_(collectionEvent) {\n const layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n const key = getUid(layer);\n this.listenerKeys_[key].forEach(unlistenByKey);\n delete this.listenerKeys_[key];\n this.changed();\n }\n\n /**\n * Returns the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @return {!import(\"../Collection.js\").default} Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n getLayers() {\n return (\n /** @type {!import(\"../Collection.js\").default} */ (this.get(Property.LAYERS))\n );\n }\n\n /**\n * Set the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @param {!import(\"../Collection.js\").default} layers Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n setLayers(layers) {\n this.set(Property.LAYERS, layers);\n }\n\n /**\n * @inheritDoc\n */\n getLayersArray(opt_array) {\n const array = opt_array !== undefined ? opt_array : [];\n this.getLayers().forEach(function(layer) {\n layer.getLayersArray(array);\n });\n return array;\n }\n\n /**\n * @inheritDoc\n */\n getLayerStatesArray(opt_states) {\n const states = opt_states !== undefined ? opt_states : [];\n\n const pos = states.length;\n\n this.getLayers().forEach(function(layer) {\n layer.getLayerStatesArray(states);\n });\n\n const ownLayerState = this.getLayerState();\n for (let i = pos, ii = states.length; i < ii; i++) {\n const layerState = states[i];\n layerState.opacity *= ownLayerState.opacity;\n layerState.visible = layerState.visible && ownLayerState.visible;\n layerState.maxResolution = Math.min(\n layerState.maxResolution, ownLayerState.maxResolution);\n layerState.minResolution = Math.max(\n layerState.minResolution, ownLayerState.minResolution);\n layerState.minZoom = Math.max(\n layerState.minZoom, ownLayerState.minZoom);\n layerState.maxZoom = Math.min(\n layerState.maxZoom, ownLayerState.maxZoom);\n if (ownLayerState.extent !== undefined) {\n if (layerState.extent !== undefined) {\n layerState.extent = getIntersection(layerState.extent, ownLayerState.extent);\n } else {\n layerState.extent = ownLayerState.extent;\n }\n }\n }\n\n return states;\n }\n\n /**\n * @inheritDoc\n */\n getSourceState() {\n return SourceState.READY;\n }\n}\n\n\nexport default LayerGroup;\n","/**\n * @module ol/size\n */\n\n\n/**\n * An array of numbers representing a size: `[width, height]`.\n * @typedef {Array} Size\n * @api\n */\n\n\n/**\n * Returns a buffered size.\n * @param {Size} size Size.\n * @param {number} num The amount by which to buffer.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The buffered size.\n */\nexport function buffer(size, num, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = size[0] + 2 * num;\n opt_size[1] = size[1] + 2 * num;\n return opt_size;\n}\n\n\n/**\n * Determines if a size has a positive area.\n * @param {Size} size The size to test.\n * @return {boolean} The size has a positive area.\n */\nexport function hasArea(size) {\n return size[0] > 0 && size[1] > 0;\n}\n\n\n/**\n * Returns a size scaled by a ratio. The result will be an array of integers.\n * @param {Size} size Size.\n * @param {number} ratio Ratio.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The scaled size.\n */\nexport function scale(size, ratio, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = (size[0] * ratio + 0.5) | 0;\n opt_size[1] = (size[1] * ratio + 0.5) | 0;\n return opt_size;\n}\n\n\n/**\n * Returns an `Size` array for the passed in number (meaning: square) or\n * `Size` array.\n * (meaning: non-square),\n * @param {number|Size} size Width and height.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} Size.\n * @api\n */\nexport function toSize(size, opt_size) {\n if (Array.isArray(size)) {\n return size;\n } else {\n if (opt_size === undefined) {\n opt_size = [size, size];\n } else {\n opt_size[0] = size;\n opt_size[1] = size;\n }\n return opt_size;\n }\n}\n","/**\n * @module ol/PluggableMap\n */\nimport {getUid} from './util.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport RenderEventType from './render/EventType.js';\nimport BaseObject, {getChangeEventType} from './Object.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport TileQueue from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport {assert} from './asserts.js';\nimport {removeNode} from './dom.js';\nimport {listen, unlistenByKey} from './events.js';\nimport EventType from './events/EventType.js';\nimport {clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty} from './extent.js';\nimport {TRUE} from './functions.js';\nimport {DEVICE_PIXEL_RATIO, IMAGE_DECODE} from './has.js';\nimport LayerGroup from './layer/Group.js';\nimport {hasArea} from './size.js';\nimport {DROP} from './structs/PriorityQueue.js';\nimport {create as createTransform, apply as applyTransform} from './transform.js';\nimport {toUserCoordinate, fromUserCoordinate} from './proj.js';\n\n\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform\n * @property {null|import(\"./extent.js\").Extent} extent\n * @property {Array} declutterItems\n * @property {number} index\n * @property {Array} layerStatesArray\n * @property {number} layerIndex\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform\n * @property {Array} postRenderFunctions\n * @property {import(\"./size.js\").Size} size\n * @property {TileQueue} tileQueue\n * @property {!Object>} usedTiles\n * @property {Array} viewHints\n * @property {!Object>} wantedTiles\n */\n\n\n/**\n * @typedef {Object} DeclutterItems\n * @property {Array<*>} items Declutter items of an executor.\n * @property {number} opacity Layer opacity.\n */\n\n\n/**\n * @typedef {function(PluggableMap, ?FrameState): any} PostRenderFunction\n */\n\n\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n\n\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls]\n * @property {Collection} [interactions]\n * @property {HTMLElement|Document} keyboardEventTarget\n * @property {Collection} overlays\n * @property {Object} values\n */\n\n\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control~defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction~defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered.\n * @property {View} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n\n\n/**\n * @param {HTMLElement} element Element.\n * @param {string} touchAction Value for `touch-action'.\n */\nfunction setTouchAction(element, touchAction) {\n element.style.msTouchAction = touchAction;\n element.style.touchAction = touchAction;\n element.setAttribute('touch-action', touchAction);\n}\n\n\n/**\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nclass PluggableMap extends BaseObject {\n\n /**\n * @param {MapOptions} options Map options.\n */\n constructor(options) {\n\n super();\n\n const optionsInternal = createOptionsInternal(options);\n\n /** @private */\n this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this);\n\n\n /**\n * @type {number}\n * @private\n */\n this.maxTilesLoading_ = options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ = options.pixelRatio !== undefined ?\n options.pixelRatio : DEVICE_PIXEL_RATIO;\n\n /**\n * @private\n * @type {*}\n */\n this.postRenderTimeoutHandle_;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.animationDelayKey_;\n\n /**\n * @private\n */\n this.animationDelay_ = function() {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }.bind(this);\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.coordinateToPixelTransform_ = createTransform();\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.pixelToCoordinateTransform_ = createTransform();\n\n /**\n * @private\n * @type {number}\n */\n this.frameIndex_ = 0;\n\n /**\n * @private\n * @type {?FrameState}\n */\n this.frameState_ = null;\n\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n this.previousExtent_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewPropertyListenerKey_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewChangeListenerKey_ = null;\n\n /**\n * @private\n * @type {?Array}\n */\n this.layerGroupPropertyListenerKeys_ = null;\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.viewport_ = document.createElement('div');\n this.viewport_.className = 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n this.viewport_.style.position = 'relative';\n this.viewport_.style.overflow = 'hidden';\n this.viewport_.style.width = '100%';\n this.viewport_.style.height = '100%';\n\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainer_ = document.createElement('div');\n this.overlayContainer_.style.position = 'absolute';\n this.overlayContainer_.style.zIndex = '0';\n this.overlayContainer_.style.width = '100%';\n this.overlayContainer_.style.height = '100%';\n this.overlayContainer_.className = 'ol-overlaycontainer';\n this.viewport_.appendChild(this.overlayContainer_);\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainerStopEvent_ = document.createElement('div');\n this.overlayContainerStopEvent_.style.position = 'absolute';\n this.overlayContainerStopEvent_.style.zIndex = '0';\n this.overlayContainerStopEvent_.style.width = '100%';\n this.overlayContainerStopEvent_.style.height = '100%';\n this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n this.viewport_.appendChild(this.overlayContainerStopEvent_);\n\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n this.mapBrowserEventHandler_ = new MapBrowserEventHandler(this, options.moveTolerance);\n const handleMapBrowserEvent = this.handleMapBrowserEvent.bind(this);\n for (const key in MapBrowserEventType) {\n this.mapBrowserEventHandler_.addEventListener(MapBrowserEventType[key], handleMapBrowserEvent);\n }\n\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n\n /**\n * @private\n * @type {?Array}\n */\n this.keyHandlerKeys_ = null;\n\n /**\n * @private\n * @type {?Array}\n */\n this.focusHandlerKeys_ = null;\n\n const handleBrowserEvent = this.handleBrowserEvent.bind(this);\n this.viewport_.addEventListener(EventType.CONTEXTMENU, handleBrowserEvent, false);\n this.viewport_.addEventListener(EventType.WHEEL, handleBrowserEvent, false);\n\n /**\n * @type {Collection}\n * @protected\n */\n this.controls = optionsInternal.controls || new Collection();\n\n /**\n * @type {Collection}\n * @protected\n */\n this.interactions = optionsInternal.interactions || new Collection();\n\n /**\n * @type {Collection}\n * @private\n */\n this.overlays_ = optionsInternal.overlays;\n\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n this.overlayIdIndex_ = {};\n\n /**\n * @type {import(\"./renderer/Map.js\").default}\n * @private\n */\n this.renderer_ = null;\n\n /**\n * @type {undefined|function(Event): void}\n * @private\n */\n this.handleResize_;\n\n /**\n * @private\n * @type {!Array}\n */\n this.postRenderFunctions_ = [];\n\n /**\n * @private\n * @type {TileQueue}\n */\n this.tileQueue_ = new TileQueue(\n this.getTilePriority.bind(this),\n this.handleTileChange_.bind(this));\n\n this.addEventListener(getChangeEventType(MapProperty.LAYERGROUP), this.handleLayerGroupChanged_);\n this.addEventListener(getChangeEventType(MapProperty.VIEW), this.handleViewChanged_);\n this.addEventListener(getChangeEventType(MapProperty.SIZE), this.handleSizeChanged_);\n this.addEventListener(getChangeEventType(MapProperty.TARGET), this.handleTargetChanged_);\n\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n this.setProperties(optionsInternal.values);\n\n this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n * @this {PluggableMap}\n */\n function(control) {\n control.setMap(this);\n }.bind(this));\n\n this.controls.addEventListener(CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function(event) {\n event.element.setMap(this);\n }.bind(this));\n\n this.controls.addEventListener(CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function(event) {\n event.element.setMap(null);\n }.bind(this));\n\n this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n * @this {PluggableMap}\n */\n function(interaction) {\n interaction.setMap(this);\n }.bind(this));\n\n this.interactions.addEventListener(CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function(event) {\n event.element.setMap(this);\n }.bind(this));\n\n this.interactions.addEventListener(CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function(event) {\n event.element.setMap(null);\n }.bind(this));\n\n this.overlays_.forEach(this.addOverlayInternal_.bind(this));\n\n this.overlays_.addEventListener(CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function(event) {\n this.addOverlayInternal_(/** @type {import(\"./Overlay.js\").default} */ (event.element));\n }.bind(this));\n\n this.overlays_.addEventListener(CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function(event) {\n const overlay = /** @type {import(\"./Overlay.js\").default} */ (event.element);\n const id = overlay.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }.bind(this));\n\n }\n\n /**\n * @abstract\n * @return {import(\"./renderer/Map.js\").default} The map renderer\n */\n createRenderer() {\n throw new Error('Use a map type that has a createRenderer method');\n }\n\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n addControl(control) {\n this.getControls().push(control);\n }\n\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteraction()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n addInteraction(interaction) {\n this.getInteractions().push(interaction);\n }\n\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n addLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n }\n\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n addOverlay(overlay) {\n this.getOverlays().push(overlay);\n }\n\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n addOverlayInternal_(overlay) {\n const id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n }\n\n /**\n *\n * @inheritDoc\n */\n disposeInternal() {\n this.mapBrowserEventHandler_.dispose();\n this.viewport_.removeEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_);\n this.viewport_.removeEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n this.setTarget(null);\n super.disposeInternal();\n }\n\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `opt_options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./Feature.js\").FeatureLike,\n * import(\"./layer/Layer.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature feature} or\n * {@link module:ol/render/Feature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n forEachFeatureAtPixel(pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n const coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n const hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n const layerFilter = opt_options.layerFilter !== undefined ?\n opt_options.layerFilter : TRUE;\n const checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(\n coordinate, this.frameState_, hitTolerance, checkWrapped, callback, null,\n layerFilter, null);\n }\n\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n getFeaturesAtPixel(pixel, opt_options) {\n const features = [];\n this.forEachFeatureAtPixel(pixel, function(feature) {\n features.push(feature);\n }, opt_options);\n return features;\n }\n\n /**\n * Detect layers that have a color value at a pixel on the viewport, and\n * execute a callback with each matching layer. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n *\n * Note: this may give false positives unless the map layers have had different `className`\n * properties assigned to them.\n *\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback\n * Layer callback. This callback will receive two arguments: first is the\n * {@link module:ol/layer/Layer layer}, second argument is an array representing\n * [R, G, B, A] pixel values (0 - 255) and will be `null` for layer types\n * that do not currently support this argument. To stop detection, callback\n * functions can return a truthy value.\n * @param {AtPixelOptions=} opt_options Configuration options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n forEachLayerAtPixel(pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n const options = opt_options || {};\n const hitTolerance = options.hitTolerance !== undefined ?\n options.hitTolerance * this.frameState_.pixelRatio : 0;\n const layerFilter = options.layerFilter || TRUE;\n return this.renderer_.forEachLayerAtPixel(pixel, this.frameState_, hitTolerance, callback, layerFilter);\n }\n\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n hasFeatureAtPixel(pixel, opt_options) {\n if (!this.frameState_) {\n return false;\n }\n const coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n const layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n const hitTolerance = opt_options.hitTolerance !== undefined ?\n opt_options.hitTolerance * this.frameState_.pixelRatio : 0;\n const checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(\n coordinate, this.frameState_, hitTolerance, checkWrapped, layerFilter, null);\n }\n\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {Event} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n getEventCoordinate(event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n }\n\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {Event} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n getEventCoordinateInternal(event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n }\n\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {Event|TouchEvent} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n getEventPixel(event) {\n const viewportPosition = this.viewport_.getBoundingClientRect();\n const eventPosition = 'changedTouches' in event ?\n /** @type {TouchEvent} */ (event).changedTouches[0] :\n /** @type {MouseEvent} */ (event);\n\n return [\n eventPosition.clientX - viewportPosition.left,\n eventPosition.clientY - viewportPosition.top\n ];\n }\n\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n getTarget() {\n return /** @type {HTMLElement|string|undefined} */ (this.get(MapProperty.TARGET));\n }\n\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n getTargetElement() {\n const target = this.getTarget();\n if (target !== undefined) {\n return typeof target === 'string' ? document.getElementById(target) : target;\n } else {\n return null;\n }\n }\n\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n getCoordinateFromPixel(pixel) {\n return toUserCoordinate(this.getCoordinateFromPixelInternal(pixel), this.getView().getProjection());\n }\n\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n getCoordinateFromPixelInternal(pixel) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n } else {\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n }\n }\n\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n getControls() {\n return this.controls;\n }\n\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n getOverlays() {\n return this.overlays_;\n }\n\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n getOverlayById(id) {\n const overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n }\n\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n getInteractions() {\n return this.interactions;\n }\n\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n getLayerGroup() {\n return (\n /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP))\n );\n }\n\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n getLayers() {\n const layers = this.getLayerGroup().getLayers();\n return layers;\n }\n\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n getLoading() {\n const layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const layer = layerStatesArray[i].layer;\n const source = /** @type {import(\"./layer/Layer.js\").default} */ (layer).getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n getPixelFromCoordinate(coordinate) {\n const viewCoordinate = fromUserCoordinate(coordinate, this.getView().getProjection());\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n }\n\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n getPixelFromCoordinateInternal(coordinate) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n } else {\n return applyTransform(frameState.coordinateToPixelTransform, coordinate.slice(0, 2));\n }\n }\n\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default} Renderer\n */\n getRenderer() {\n return this.renderer_;\n }\n\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n getSize() {\n return (\n /** @type {import(\"./size.js\").Size|undefined} */ (this.get(MapProperty.SIZE))\n );\n }\n\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n getView() {\n return (\n /** @type {View} */ (this.get(MapProperty.VIEW))\n );\n }\n\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n getViewport() {\n return this.viewport_;\n }\n\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n getOverlayContainer() {\n return this.overlayContainer_;\n }\n\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n getOverlayContainerStopEvent() {\n return this.overlayContainerStopEvent_;\n }\n\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n getTilePriority(tile, tileSourceKey, tileCenter, tileResolution) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n const frameState = this.frameState_;\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n const center = frameState.viewState.center;\n const deltaX = tileCenter[0] - center[0];\n const deltaY = tileCenter[1] - center[1];\n return 65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution;\n }\n\n /**\n * @param {Event} browserEvent Browser event.\n * @param {string=} opt_type Type.\n */\n handleBrowserEvent(browserEvent, opt_type) {\n const type = opt_type || browserEvent.type;\n const mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n }\n\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n handleMapBrowserEvent(mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n let target = mapBrowserEvent.originalEvent.target;\n while (target instanceof HTMLElement) {\n if (target.parentElement === this.overlayContainerStopEvent_) {\n return;\n }\n target = target.parentElement;\n }\n mapBrowserEvent.frameState = this.frameState_;\n const interactionsArray = this.getInteractions().getArray();\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n for (let i = interactionsArray.length - 1; i >= 0; i--) {\n const interaction = interactionsArray[i];\n if (!interaction.getActive()) {\n continue;\n }\n const cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont) {\n break;\n }\n }\n }\n }\n\n /**\n * @protected\n */\n handlePostRender() {\n\n const frameState = this.frameState_;\n\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n const tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n let maxTotalLoading = this.maxTilesLoading_;\n let maxNewLoads = maxTotalLoading;\n if (frameState) {\n const hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n const lowOnFrameBudget = !IMAGE_DECODE && Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n\n if (frameState && this.hasListener(RenderEventType.RENDERCOMPLETE) && !frameState.animate &&\n !this.tileQueue_.getTilesLoading() && !this.getLoading()) {\n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);\n }\n\n const postRenderFunctions = this.postRenderFunctions_;\n for (let i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n }\n\n /**\n * @private\n */\n handleSizeChanged_() {\n if (this.getView()) {\n this.getView().resolveConstraints(0);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n handleTargetChanged_() {\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n\n let targetElement;\n if (this.getTarget()) {\n targetElement = this.getTargetElement();\n }\n\n if (this.focusHandlerKeys_) {\n for (let i = 0, ii = this.focusHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.focusHandlerKeys_[i]);\n }\n this.focusHandlerKeys_ = null;\n }\n if (this.keyHandlerKeys_) {\n for (let i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.keyHandlerKeys_[i]);\n }\n this.keyHandlerKeys_ = null;\n }\n\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n removeNode(this.viewport_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n } else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n let hasFocus = true;\n if (targetElement.hasAttribute('tabindex')) {\n hasFocus = document.activeElement === targetElement;\n this.focusHandlerKeys_ = [\n listen(targetElement, EventType.FOCUS, setTouchAction.bind(this, this.viewport_, 'none')),\n listen(targetElement, EventType.BLUR, setTouchAction.bind(this, this.viewport_, 'auto'))\n ];\n }\n setTouchAction(this.viewport_, hasFocus ? 'none' : 'auto');\n\n const keyboardEventTarget = !this.keyboardEventTarget_ ?\n targetElement : this.keyboardEventTarget_;\n this.keyHandlerKeys_ = [\n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),\n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this)\n ];\n\n if (!this.handleResize_) {\n this.handleResize_ = this.updateSize.bind(this);\n window.addEventListener(EventType.RESIZE, this.handleResize_, false);\n }\n }\n\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n }\n\n /**\n * @private\n */\n handleTileChange_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewPropertyChanged_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewChanged_() {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n const view = this.getView();\n if (view) {\n this.viewport_.setAttribute('data-view', getUid(view));\n this.viewPropertyListenerKey_ = listen(\n view, ObjectEventType.PROPERTYCHANGE,\n this.handleViewPropertyChanged_, this);\n this.viewChangeListenerKey_ = listen(\n view, EventType.CHANGE,\n this.handleViewPropertyChanged_, this);\n\n view.resolveConstraints(0);\n }\n this.render();\n }\n\n /**\n * @private\n */\n handleLayerGroupChanged_() {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n const layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.layerGroupPropertyListenerKeys_ = [\n listen(\n layerGroup, ObjectEventType.PROPERTYCHANGE,\n this.render, this),\n listen(\n layerGroup, EventType.CHANGE,\n this.render, this)\n ];\n }\n this.render();\n }\n\n /**\n * @return {boolean} Is rendered.\n */\n isRendered() {\n return !!this.frameState_;\n }\n\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n renderSync() {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n }\n\n /**\n * Redraws all text after new fonts have loaded\n */\n redrawText() {\n const layerStates = this.getLayerGroup().getLayerStatesArray();\n for (let i = 0, ii = layerStates.length; i < ii; ++i) {\n const layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n }\n\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n render() {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n }\n\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n removeControl(control) {\n return this.getControls().remove(control);\n }\n\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n removeInteraction(interaction) {\n return this.getInteractions().remove(interaction);\n }\n\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n removeLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n }\n\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n removeOverlay(overlay) {\n return this.getOverlays().remove(overlay);\n }\n\n /**\n * @param {number} time Time.\n * @private\n */\n renderFrame_(time) {\n const size = this.getSize();\n const view = this.getView();\n const previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n let frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n const viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);\n const viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterItems: previousFrameState ? previousFrameState.declutterItems : [],\n extent: getForViewAndSize(viewState.center, viewState.resolution, viewState.rotation, size),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {}\n };\n }\n\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions);\n\n if (previousFrameState) {\n const moveStart = !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equals(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(\n new MapEvent(MapEventType.MOVESTART, this, previousFrameState));\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n\n const idle = this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equals(frameState.extent, this.previousExtent_);\n\n if (idle) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVEEND, this, frameState));\n clone(frameState.extent, this.previousExtent_);\n }\n }\n\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n\n this.postRenderTimeoutHandle_ = setTimeout(this.handlePostRender.bind(this), 0);\n\n }\n\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n setLayerGroup(layerGroup) {\n this.set(MapProperty.LAYERGROUP, layerGroup);\n }\n\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n setSize(size) {\n this.set(MapProperty.SIZE, size);\n }\n\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string|undefined} target The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n setTarget(target) {\n this.set(MapProperty.TARGET, target);\n }\n\n /**\n * Set the view for this map.\n * @param {View} view The view that controls this map.\n * @observable\n * @api\n */\n setView(view) {\n this.set(MapProperty.VIEW, view);\n }\n\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n updateSize() {\n const targetElement = this.getTargetElement();\n\n if (!targetElement) {\n this.setSize(undefined);\n } else {\n const computedStyle = getComputedStyle(targetElement);\n this.setSize([\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']),\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth'])\n ]);\n }\n }\n}\n\n\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n\n /**\n * @type {HTMLElement|Document}\n */\n let keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget = typeof options.keyboardEventTarget === 'string' ?\n document.getElementById(options.keyboardEventTarget) :\n options.keyboardEventTarget;\n }\n\n /**\n * @type {Object}\n */\n const values = {};\n\n const layerGroup = options.layers && typeof /** @type {?} */ (options.layers).getLayers === 'function' ?\n /** @type {LayerGroup} */ (options.layers) : new LayerGroup({layers: /** @type {Collection} */ (options.layers)});\n values[MapProperty.LAYERGROUP] = layerGroup;\n\n values[MapProperty.TARGET] = options.target;\n\n values[MapProperty.VIEW] = options.view !== undefined ?\n options.view : new View();\n\n let controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n } else {\n assert(typeof /** @type {?} */ (options.controls).getArray === 'function',\n 47); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = /** @type {Collection} */ (options.controls);\n }\n }\n\n let interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n } else {\n assert(typeof /** @type {?} */ (options.interactions).getArray === 'function',\n 48); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n\n let overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n } else {\n assert(typeof /** @type {?} */ (options.overlays).getArray === 'function',\n 49); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n } else {\n overlays = new Collection();\n }\n\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values\n };\n\n}\nexport default PluggableMap;\n","/**\n * @module ol/control/Control\n */\nimport {VOID} from '../functions.js';\nimport MapEventType from '../MapEventType.js';\nimport BaseObject from '../Object.js';\nimport {removeNode} from '../dom.js';\nimport {listen, unlistenByKey} from '../events.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n\n\n/**\n * @classdesc\n * A control is a visible widget with a DOM element in a fixed position on the\n * screen. They can involve user input (buttons), or be informational only;\n * the position is determined using CSS. By default these are placed in the\n * container with CSS class name `ol-overlaycontainer-stopevent`, but can use\n * any outside DOM element.\n *\n * This is the base class for controls. You can use it for simple custom\n * controls by creating the element with listeners, creating an instance:\n * ```js\n * var myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nclass Control extends BaseObject {\n\n /**\n * @param {Options} options Control options.\n */\n constructor(options) {\n\n super();\n\n /**\n * @protected\n * @type {HTMLElement}\n */\n this.element = options.element ? options.element : null;\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.target_ = null;\n\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n this.map_ = null;\n\n /**\n * @protected\n * @type {!Array}\n */\n this.listenerKeys = [];\n\n /**\n * @type {function(import(\"../MapEvent.js\").default): void}\n */\n this.render = options.render ? options.render : VOID;\n\n if (options.target) {\n this.setTarget(options.target);\n }\n\n }\n\n /**\n * @inheritDoc\n */\n disposeInternal() {\n removeNode(this.element);\n super.disposeInternal();\n }\n\n /**\n * Get the map associated with this control.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n setMap(map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (let i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n unlistenByKey(this.listenerKeys[i]);\n }\n this.listenerKeys.length = 0;\n this.map_ = map;\n if (this.map_) {\n const target = this.target_ ?\n this.target_ : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(listen(map,\n MapEventType.POSTRENDER, this.render, this));\n }\n map.render();\n }\n }\n\n /**\n * This function is used to set a target element for the control. It has no\n * effect if it is called after the control has been added to the map (i.e.\n * after `setMap` is called on the control). If no `target` is set in the\n * options passed to the control constructor and if `setTarget` is not called\n * then the control is added to the map's overlay container.\n * @param {HTMLElement|string} target Target.\n * @api\n */\n setTarget(target) {\n this.target_ = typeof target === 'string' ?\n document.getElementById(target) :\n target;\n }\n}\n\n\nexport default Control;\n","/**\n * @module ol/css\n */\n\n/**\n * @typedef {Object} FontParameters\n * @property {Array} families\n * @property {string} style\n * @property {string} weight\n */\n\n\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_HIDDEN = 'ol-hidden';\n\n\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_SELECTABLE = 'ol-selectable';\n\n\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSELECTABLE = 'ol-unselectable';\n\n\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSUPPORTED = 'ol-unsupported';\n\n\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_CONTROL = 'ol-control';\n\n\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_COLLAPSED = 'ol-collapsed';\n\n\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} The CSS font property.\n * @return {FontParameters} The font families (or null if the input spec is invalid).\n */\nexport const getFontParameters = (function() {\n /**\n * @type {CSSStyleDeclaration}\n */\n let style;\n /**\n * @type {Object}\n */\n const cache = {};\n return function(font) {\n if (!style) {\n style = document.createElement('div').style;\n }\n if (!(font in cache)) {\n style.font = font;\n const family = style.fontFamily;\n const fontWeight = style.fontWeight;\n const fontStyle = style.fontStyle;\n style.font = '';\n if (!family) {\n return null;\n }\n const families = family.split(/,\\s?/);\n cache[font] = {\n families: families,\n weight: fontWeight,\n style: fontStyle\n };\n }\n return cache[font];\n };\n})();\n","/**\n * @module ol/layer/Layer\n */\nimport {listen, unlistenByKey} from '../events.js';\nimport EventType from '../events/EventType.js';\nimport {getChangeEventType} from '../Object.js';\nimport BaseLayer from './Base.js';\nimport LayerProperty from './Property.js';\nimport {assign} from '../obj.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\n\n/**\n * @typedef {function(import(\"../PluggableMap.js\").FrameState):HTMLElement} RenderFunction\n */\n\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {import(\"../source/Source.js\").default} [source] Source for this layer. If not provided to the constructor,\n * the source can be set by calling {@link module:ol/layer/Layer#setSource layer.setSource(source)} after\n * construction.\n * @property {import(\"../PluggableMap.js\").default} [map] Map.\n * @property {RenderFunction} [render] Render function. Takes the frame state as input and is expected to return an\n * HTML element. Will overwrite the default rendering for the layer.\n */\n\n\n/**\n * @typedef {Object} State\n * @property {import(\"./Base.js\").default} layer\n * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point.\n * @property {SourceState} sourceState\n * @property {boolean} visible\n * @property {boolean} managed\n * @property {import(\"../extent.js\").Extent} [extent]\n * @property {number} zIndex\n * @property {number} maxResolution\n * @property {number} minResolution\n * @property {number} minZoom\n * @property {number} maxZoom\n */\n\n/**\n * @classdesc\n * Base class from which all layer types are derived. This should only be instantiated\n * in the case where a custom layer is be added to the map with a custom `render` function.\n * Such a function can be specified in the `options` object, and is expected to return an HTML element.\n *\n * A visual representation of raster or vector map data.\n * Layers group together those properties that pertain to how the data is to be\n * displayed, irrespective of the source of that data.\n *\n * Layers are usually added to a map with {@link module:ol/Map#addLayer}. Components\n * like {@link module:ol/interaction/Select~Select} use unmanaged layers\n * internally. These unmanaged layers are associated with the map using\n * {@link module:ol/layer/Layer~Layer#setMap} instead.\n *\n * A generic `change` event is fired when the state of the source changes.\n *\n * Please note that for performance reasons several layers might get rendered to\n * the same HTML element, which will cause {@link module:ol/Map~Map#forEachLayerAtPixel} to\n * give false positives. To avoid this, apply different `className` properties to the\n * layers at creation time.\n *\n * @fires import(\"../render/Event.js\").RenderEvent#prerender\n * @fires import(\"../render/Event.js\").RenderEvent#postrender\n *\n * @template {import(\"../source/Source.js\").default} SourceType\n * @api\n */\nclass Layer extends BaseLayer {\n /**\n * @param {Options} options Layer options.\n */\n constructor(options) {\n\n const baseOptions = assign({}, options);\n delete baseOptions.source;\n\n super(baseOptions);\n\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n this.mapPrecomposeKey_ = null;\n\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n this.mapRenderKey_ = null;\n\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n this.sourceChangeKey_ = null;\n\n /**\n * @private\n * @type {import(\"../renderer/Layer.js\").default}\n */\n this.renderer_ = null;\n\n // Overwrite default render method with a custom one\n if (options.render) {\n this.render = options.render;\n }\n\n if (options.map) {\n this.setMap(options.map);\n }\n\n this.addEventListener(getChangeEventType(LayerProperty.SOURCE), this.handleSourcePropertyChange_);\n\n const source = options.source ? /** @type {SourceType} */ (options.source) : null;\n this.setSource(source);\n }\n\n /**\n * @inheritDoc\n */\n getLayersArray(opt_array) {\n const array = opt_array ? opt_array : [];\n array.push(this);\n return array;\n }\n\n /**\n * @inheritDoc\n */\n getLayerStatesArray(opt_states) {\n const states = opt_states ? opt_states : [];\n states.push(this.getLayerState());\n return states;\n }\n\n /**\n * Get the layer source.\n * @return {SourceType} The layer source (or `null` if not yet set).\n * @observable\n * @api\n */\n getSource() {\n return /** @type {SourceType} */ (this.get(LayerProperty.SOURCE)) || null;\n }\n\n /**\n * @inheritDoc\n */\n getSourceState() {\n const source = this.getSource();\n return !source ? SourceState.UNDEFINED : source.getState();\n }\n\n /**\n * @private\n */\n handleSourceChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleSourcePropertyChange_() {\n if (this.sourceChangeKey_) {\n unlistenByKey(this.sourceChangeKey_);\n this.sourceChangeKey_ = null;\n }\n const source = this.getSource();\n if (source) {\n this.sourceChangeKey_ = listen(source,\n EventType.CHANGE, this.handleSourceChange_, this);\n }\n this.changed();\n }\n\n /**\n * @param {import(\"../pixel\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with\n * an array of features.\n */\n getFeatures(pixel) {\n return this.renderer_.getFeatures(pixel);\n }\n\n /**\n * In charge to manage the rendering of the layer. One layer type is\n * bounded with one layer renderer.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target which the renderer may (but need not) use\n * for rendering its content.\n * @return {HTMLElement} The rendered element.\n */\n render(frameState, target) {\n const layerRenderer = this.getRenderer();\n\n if (layerRenderer.prepareFrame(frameState)) {\n return layerRenderer.renderFrame(frameState, target);\n }\n }\n\n /**\n * Sets the layer to be rendered on top of other layers on a map. The map will\n * not manage this layer in its layers collection, and the callback in\n * {@link module:ol/Map#forEachLayerAtPixel} will receive `null` as layer. This\n * is useful for temporary layers. To remove an unmanaged layer from the map,\n * use `#setMap(null)`.\n *\n * To add the layer to a map and have it managed by the map, use\n * {@link module:ol/Map#addLayer} instead.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n setMap(map) {\n if (this.mapPrecomposeKey_) {\n unlistenByKey(this.mapPrecomposeKey_);\n this.mapPrecomposeKey_ = null;\n }\n if (!map) {\n this.changed();\n }\n if (this.mapRenderKey_) {\n unlistenByKey(this.mapRenderKey_);\n this.mapRenderKey_ = null;\n }\n if (map) {\n this.mapPrecomposeKey_ = listen(map, RenderEventType.PRECOMPOSE, function(evt) {\n const renderEvent = /** @type {import(\"../render/Event.js\").default} */ (evt);\n renderEvent.frameState.layerStatesArray.push(this.getLayerState(false));\n }, this);\n this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);\n this.changed();\n }\n }\n\n /**\n * Set the layer source.\n * @param {SourceType} source The layer source.\n * @observable\n * @api\n */\n setSource(source) {\n this.set(LayerProperty.SOURCE, source);\n }\n\n /**\n * Get the renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} The layer renderer.\n */\n getRenderer() {\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n return this.renderer_;\n }\n\n /**\n * @return {boolean} The layer has a renderer.\n */\n hasRenderer() {\n return !!this.renderer_;\n }\n\n /**\n * Create a renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} A layer renderer.\n * @protected\n */\n createRenderer() {\n return null;\n }\n\n /**\n * @inheritDoc\n */\n disposeInternal() {\n this.setSource(null);\n super.disposeInternal();\n }\n}\n\n\n/**\n * Return `true` if the layer is visible and if the provided view state\n * has resolution and zoom levels that are in range of the layer's min/max.\n * @param {State} layerState Layer state.\n * @param {import(\"../View.js\").State} viewState View state.\n * @return {boolean} The layer is visible at the given view state.\n */\nexport function inView(layerState, viewState) {\n if (!layerState.visible) {\n return false;\n }\n const resolution = viewState.resolution;\n if (resolution < layerState.minResolution || resolution >= layerState.maxResolution) {\n return false;\n }\n const zoom = viewState.zoom;\n return zoom > layerState.minZoom && zoom <= layerState.maxZoom;\n}\n\nexport default Layer;\n","/**\n * @module ol/control/Attribution\n */\nimport {equals} from '../array.js';\nimport Control from './Control.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_COLLAPSED} from '../css.js';\nimport {removeChildren, replaceNode} from '../dom.js';\nimport EventType from '../events/EventType.js';\nimport {inView} from '../layer/Layer.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [collapseLabel='»'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n\n\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nclass Attribution extends Control {\n\n /**\n * @param {Options=} opt_options Attribution options.\n */\n constructor(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n });\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.ulElement_ = document.createElement('ul');\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsed_ = options.collapsed !== undefined ? options.collapsed : true;\n\n /**\n * @private\n * @type {boolean}\n */\n this.overrideCollapsible_ = options.collapsible !== undefined;\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsible_ = options.collapsible !== undefined ?\n options.collapsible : true;\n\n if (!this.collapsible_) {\n this.collapsed_ = false;\n }\n\n const className = options.className !== undefined ? options.className : 'ol-attribution';\n\n const tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n\n const collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u00BB';\n\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.collapseLabel_ = document.createElement('span');\n this.collapseLabel_.textContent = collapseLabel;\n } else {\n this.collapseLabel_ = collapseLabel;\n }\n\n const label = options.label !== undefined ? options.label : 'i';\n\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.label_ = document.createElement('span');\n this.label_.textContent = label;\n } else {\n this.label_ = label;\n }\n\n\n const activeLabel = (this.collapsible_ && !this.collapsed_) ?\n this.collapseLabel_ : this.label_;\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n\n button.addEventListener(EventType.CLICK, this.handleClick_.bind(this), false);\n\n const cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL +\n (this.collapsed_ && this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (this.collapsible_ ? '' : ' ol-uncollapsible');\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(this.ulElement_);\n element.appendChild(button);\n\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n this.renderedAttributions_ = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = true;\n\n }\n\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n collectSourceAttributions_(frameState) {\n /**\n * Used to determine if an attribution already exists.\n * @type {!Object}\n */\n const lookup = {};\n\n /**\n * A list of visible attributions.\n * @type {Array}\n */\n const visibleAttributions = [];\n\n const layerStatesArray = frameState.layerStatesArray;\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const layerState = layerStatesArray[i];\n if (!inView(layerState, frameState.viewState)) {\n continue;\n }\n\n const source = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer).getSource();\n if (!source) {\n continue;\n }\n\n const attributionGetter = source.getAttributions();\n if (!attributionGetter) {\n continue;\n }\n\n const attributions = attributionGetter(frameState);\n if (!attributions) {\n continue;\n }\n\n if (!this.overrideCollapsible_ && source.getAttributionsCollapsible() === false) {\n this.setCollapsible(false);\n }\n\n if (Array.isArray(attributions)) {\n for (let j = 0, jj = attributions.length; j < jj; ++j) {\n if (!(attributions[j] in lookup)) {\n visibleAttributions.push(attributions[j]);\n lookup[attributions[j]] = true;\n }\n }\n } else {\n if (!(attributions in lookup)) {\n visibleAttributions.push(attributions);\n lookup[attributions] = true;\n }\n }\n }\n return visibleAttributions;\n }\n\n /**\n * @private\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n updateElement_(frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n const attributions = this.collectSourceAttributions_(frameState);\n\n const visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n\n removeChildren(this.ulElement_);\n\n // append the attributions\n for (let i = 0, ii = attributions.length; i < ii; ++i) {\n const element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n\n this.renderedAttributions_ = attributions;\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleToggle_();\n }\n\n /**\n * @private\n */\n handleToggle_() {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n } else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n }\n\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n getCollapsible() {\n return this.collapsible_;\n }\n\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n setCollapsible(collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (!collapsible && this.collapsed_) {\n this.handleToggle_();\n }\n }\n\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n setCollapsed(collapsed) {\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n }\n\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n getCollapsed() {\n return this.collapsed_;\n }\n}\n\n\n/**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Attribution}\n * @api\n */\nexport function render(mapEvent) {\n this.updateElement_(mapEvent.frameState);\n}\n\n\nexport default Attribution;\n","/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport {CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\nimport EventType from '../events/EventType.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function()} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nclass Rotate extends Control {\n\n /**\n * @param {Options=} opt_options Rotate options.\n */\n constructor(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n });\n\n const className = options.className !== undefined ? options.className : 'ol-rotate';\n\n const label = options.label !== undefined ? options.label : '\\u21E7';\n\n /**\n * @type {HTMLElement}\n * @private\n */\n this.label_ = null;\n\n if (typeof label === 'string') {\n this.label_ = document.createElement('span');\n this.label_.className = 'ol-compass';\n this.label_.textContent = label;\n } else {\n this.label_ = label;\n this.label_.classList.add('ol-compass');\n }\n\n const tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n\n const button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(this.label_);\n\n button.addEventListener(EventType.CLICK, this.handleClick_.bind(this), false);\n\n const cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(button);\n\n this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n /**\n * @type {boolean}\n * @private\n */\n this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.rotation_ = undefined;\n\n if (this.autoHide_) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n } else {\n this.resetNorth_();\n }\n }\n\n /**\n * @private\n */\n resetNorth_() {\n const map = this.getMap();\n const view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n if (view.getRotation() !== undefined) {\n if (this.duration_ > 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut\n });\n } else {\n view.setRotation(0);\n }\n }\n }\n}\n\n\n/**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {Rotate}\n * @api\n */\nexport function render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n const rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n const transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n const contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n } else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n}\n\nexport default Rotate;\n","/**\n * @module ol/control/Zoom\n */\nimport EventType from '../events/EventType.js';\nimport Control from './Control.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='-'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nclass Zoom extends Control {\n\n /**\n * @param {Options=} opt_options Zoom options.\n */\n constructor(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n super({\n element: document.createElement('div'),\n target: options.target\n });\n\n const className = options.className !== undefined ? options.className : 'ol-zoom';\n\n const delta = options.delta !== undefined ? options.delta : 1;\n\n const zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n const zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2212';\n\n const zoomInTipLabel = options.zoomInTipLabel !== undefined ?\n options.zoomInTipLabel : 'Zoom in';\n const zoomOutTipLabel = options.zoomOutTipLabel !== undefined ?\n options.zoomOutTipLabel : 'Zoom out';\n\n const inElement = document.createElement('button');\n inElement.className = className + '-in';\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(\n typeof zoomInLabel === 'string' ? document.createTextNode(zoomInLabel) : zoomInLabel\n );\n\n inElement.addEventListener(EventType.CLICK, this.handleClick_.bind(this, delta), false);\n\n const outElement = document.createElement('button');\n outElement.className = className + '-out';\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(\n typeof zoomOutLabel === 'string' ? document.createTextNode(zoomOutLabel) : zoomOutLabel\n );\n\n outElement.addEventListener(EventType.CLICK, this.handleClick_.bind(this, -delta), false);\n\n const cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n }\n\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n }\n\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n zoomByDelta_(delta) {\n const map = this.getMap();\n const view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n const currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n const newZoom = view.getConstrainedZoom(currentZoom + delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n zoom: newZoom,\n duration: this.duration_,\n easing: easeOut\n });\n } else {\n view.setZoom(newZoom);\n }\n }\n }\n}\n\n\nexport default Zoom;\n","/**\n * @module ol/control/FullScreen\n */\nimport Control from './Control.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_UNSUPPORTED} from '../css.js';\nimport {replaceNode} from '../dom.js';\nimport {listen} from '../events.js';\nimport EventType from '../events/EventType.js';\n\nconst events = ['fullscreenchange', 'webkitfullscreenchange', 'MSFullscreenChange'];\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-full-screen'] CSS class name.\n * @property {string|Text} [label='\\u2922'] Text label to use for the button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|Text} [labelActive='\\u00d7'] Text label to use for the\n * button when full-screen is active.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Toggle full-screen'] Text label to use for the button tip.\n * @property {boolean} [keys=false] Full keyboard access.\n * @property {HTMLElement|string} [target] Specify a target if you want the\n * control to be rendered outside of the map's viewport.\n * @property {HTMLElement|string} [source] The element to be displayed\n * fullscreen. When not provided, the element containing the map viewport will\n * be displayed fullscreen.\n */\n\n\n/**\n * @classdesc\n * Provides a button that when clicked fills up the full screen with the map.\n * The full screen source element is by default the element containing the map viewport unless\n * overridden by providing the `source` option. In which case, the dom\n * element introduced using this parameter will be displayed in full screen.\n *\n * When in full screen mode, a close button is shown to exit full screen mode.\n * The [Fullscreen API](http://www.w3.org/TR/fullscreen/) is used to\n * toggle the map in full screen mode.\n *\n * @api\n */\nclass FullScreen extends Control {\n\n /**\n * @param {Options=} opt_options Options.\n */\n constructor(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n super({\n element: document.createElement('div'),\n target: options.target\n });\n\n /**\n * @private\n * @type {string}\n */\n this.cssClassName_ = options.className !== undefined ? options.className :\n 'ol-full-screen';\n\n const label = options.label !== undefined ? options.label : '\\u2922';\n\n /**\n * @private\n * @type {Text}\n */\n this.labelNode_ = typeof label === 'string' ?\n document.createTextNode(label) : label;\n\n const labelActive = options.labelActive !== undefined ? options.labelActive : '\\u00d7';\n\n /**\n * @private\n * @type {Text}\n */\n this.labelActiveNode_ = typeof labelActive === 'string' ?\n document.createTextNode(labelActive) : labelActive;\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.button_ = document.createElement('button');\n\n const tipLabel = options.tipLabel ? options.tipLabel : 'Toggle full-screen';\n this.setClassName_(this.button_, isFullScreen());\n this.button_.setAttribute('type', 'button');\n this.button_.title = tipLabel;\n this.button_.appendChild(this.labelNode_);\n\n this.button_.addEventListener(EventType.CLICK, this.handleClick_.bind(this), false);\n\n const cssClasses = this.cssClassName_ + ' ' + CLASS_UNSELECTABLE +\n ' ' + CLASS_CONTROL + ' ' +\n (!isFullScreenSupported() ? CLASS_UNSUPPORTED : '');\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(this.button_);\n\n /**\n * @private\n * @type {boolean}\n */\n this.keys_ = options.keys !== undefined ? options.keys : false;\n\n /**\n * @private\n * @type {HTMLElement|string|undefined}\n */\n this.source_ = options.source;\n\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleFullScreen_();\n }\n\n /**\n * @private\n */\n handleFullScreen_() {\n if (!isFullScreenSupported()) {\n return;\n }\n const map = this.getMap();\n if (!map) {\n return;\n }\n if (isFullScreen()) {\n exitFullScreen();\n } else {\n let element;\n if (this.source_) {\n element = typeof this.source_ === 'string' ?\n document.getElementById(this.source_) :\n this.source_;\n } else {\n element = map.getTargetElement();\n }\n if (this.keys_) {\n requestFullScreenWithKeys(element);\n\n } else {\n requestFullScreen(element);\n }\n }\n }\n\n /**\n * @private\n */\n handleFullScreenChange_() {\n const map = this.getMap();\n if (isFullScreen()) {\n this.setClassName_(this.button_, true);\n replaceNode(this.labelActiveNode_, this.labelNode_);\n } else {\n this.setClassName_(this.button_, false);\n replaceNode(this.labelNode_, this.labelActiveNode_);\n }\n if (map) {\n map.updateSize();\n }\n }\n\n /**\n * @param {HTMLElement} element Target element\n * @param {boolean} fullscreen True if fullscreen class name should be active\n * @private\n */\n setClassName_(element, fullscreen) {\n const activeClassName = this.cssClassName_ + '-true';\n const inactiveClassName = this.cssClassName_ + '-false';\n const nextClassName = fullscreen ? activeClassName : inactiveClassName;\n element.classList.remove(activeClassName);\n element.classList.remove(inactiveClassName);\n element.classList.add(nextClassName);\n }\n\n /**\n * @inheritDoc\n * @api\n */\n setMap(map) {\n super.setMap(map);\n if (map) {\n for (let i = 0, ii = events.length; i < ii; ++i) {\n this.listenerKeys.push(\n listen(document, events[i], this.handleFullScreenChange_, this));\n }\n }\n }\n}\n\n\n/**\n * @return {boolean} Fullscreen is supported by the current platform.\n */\nfunction isFullScreenSupported() {\n const body = document.body;\n return !!(\n body.webkitRequestFullscreen ||\n (body.msRequestFullscreen && document.msFullscreenEnabled) ||\n (body.requestFullscreen && document.fullscreenEnabled)\n );\n}\n\n/**\n * @return {boolean} Element is currently in fullscreen.\n */\nfunction isFullScreen() {\n return !!(\n document.webkitIsFullScreen || document.msFullscreenElement || document.fullscreenElement\n );\n}\n\n/**\n * Request to fullscreen an element.\n * @param {HTMLElement} element Element to request fullscreen\n */\nfunction requestFullScreen(element) {\n if (element.requestFullscreen) {\n element.requestFullscreen();\n } else if (element.msRequestFullscreen) {\n element.msRequestFullscreen();\n } else if (element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n }\n}\n\n/**\n * Request to fullscreen an element with keyboard input.\n * @param {HTMLElement} element Element to request fullscreen\n */\nfunction requestFullScreenWithKeys(element) {\n if (element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n } else {\n requestFullScreen(element);\n }\n}\n\n/**\n * Exit fullscreen.\n */\nfunction exitFullScreen() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n}\n\nexport default FullScreen;\n","/**\n * @module ol/control/MousePosition\n */\nimport {listen} from '../events.js';\nimport EventType from '../pointer/EventType.js';\nimport {getChangeEventType} from '../Object.js';\nimport Control from './Control.js';\nimport {getTransformFromProjections, identityTransform, get as getProjection, getUserProjection} from '../proj.js';\nimport '@openlayers/pepjs';\n\n\n/**\n * @type {string}\n */\nconst PROJECTION = 'projection';\n\n/**\n * @type {string}\n */\nconst COORDINATE_FORMAT = 'coordinateFormat';\n\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-mouse-position'] CSS class name.\n * @property {import(\"../coordinate.js\").CoordinateFormat} [coordinateFormat] Coordinate format.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when the\n * control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the\n * control to be rendered outside of the map's viewport.\n * @property {string} [undefinedHTML=' '] Markup to show when coordinates are not\n * available (e.g. when the pointer leaves the map viewport). By default, the last position\n * will be replaced with `' '` (` `) when the pointer leaves the viewport. To\n * retain the last rendered position, set this option to something falsey (like an empty\n * string `''`).\n */\n\n\n/**\n * @classdesc\n * A control to show the 2D coordinates of the mouse cursor. By default, these\n * are in the view projection, but can be in any supported projection.\n * By default the control is shown in the top right corner of the map, but this\n * can be changed by using the css selector `.ol-mouse-position`.\n *\n * On touch devices, which usually do not have a mouse cursor, the coordinates\n * of the currently touched position are shown.\n *\n * @api\n */\nclass MousePosition extends Control {\n\n /**\n * @param {Options=} opt_options Mouse position options.\n */\n constructor(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n const element = document.createElement('div');\n element.className = options.className !== undefined ? options.className : 'ol-mouse-position';\n\n super({\n element: element,\n render: options.render || render,\n target: options.target\n });\n\n this.addEventListener(getChangeEventType(PROJECTION), this.handleProjectionChanged_);\n\n if (options.coordinateFormat) {\n this.setCoordinateFormat(options.coordinateFormat);\n }\n if (options.projection) {\n this.setProjection(options.projection);\n }\n\n /**\n * @private\n * @type {string}\n */\n this.undefinedHTML_ = options.undefinedHTML !== undefined ? options.undefinedHTML : ' ';\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderOnMouseOut_ = !!this.undefinedHTML_;\n\n /**\n * @private\n * @type {string}\n */\n this.renderedHTML_ = element.innerHTML;\n\n /**\n * @private\n * @type {?import(\"../proj/Projection.js\").default}\n */\n this.mapProjection_ = null;\n\n /**\n * @private\n * @type {?import(\"../proj.js\").TransformFunction}\n */\n this.transform_ = null;\n\n }\n\n /**\n * @private\n */\n handleProjectionChanged_() {\n this.transform_ = null;\n }\n\n /**\n * Return the coordinate format type used to render the current position or\n * undefined.\n * @return {import(\"../coordinate.js\").CoordinateFormat|undefined} The format to render the current\n * position in.\n * @observable\n * @api\n */\n getCoordinateFormat() {\n return (\n /** @type {import(\"../coordinate.js\").CoordinateFormat|undefined} */ (this.get(COORDINATE_FORMAT))\n );\n }\n\n /**\n * Return the projection that is used to report the mouse position.\n * @return {import(\"../proj/Projection.js\").default|undefined} The projection to report mouse\n * position in.\n * @observable\n * @api\n */\n getProjection() {\n return (\n /** @type {import(\"../proj/Projection.js\").default|undefined} */ (this.get(PROJECTION))\n );\n }\n\n /**\n * @param {Event} event Browser event.\n * @protected\n */\n handleMouseMove(event) {\n const map = this.getMap();\n this.updateHTML_(map.getEventPixel(event));\n }\n\n /**\n * @param {Event} event Browser event.\n * @protected\n */\n handleMouseOut(event) {\n this.updateHTML_(null);\n }\n\n /**\n * @inheritDoc\n * @api\n */\n setMap(map) {\n super.setMap(map);\n if (map) {\n const viewport = map.getViewport();\n this.listenerKeys.push(\n listen(viewport, EventType.POINTERMOVE, this.handleMouseMove, this)\n );\n if (this.renderOnMouseOut_) {\n this.listenerKeys.push(\n listen(viewport, EventType.POINTEROUT, this.handleMouseOut, this)\n );\n }\n }\n }\n\n /**\n * Set the coordinate format type used to render the current position.\n * @param {import(\"../coordinate.js\").CoordinateFormat} format The format to render the current\n * position in.\n * @observable\n * @api\n */\n setCoordinateFormat(format) {\n this.set(COORDINATE_FORMAT, format);\n }\n\n /**\n * Set the projection that is used to report the mouse position.\n * @param {import(\"../proj.js\").ProjectionLike} projection The projection to report mouse\n * position in.\n * @observable\n * @api\n */\n setProjection(projection) {\n this.set(PROJECTION, getProjection(projection));\n }\n\n /**\n * @param {?import(\"../pixel.js\").Pixel} pixel Pixel.\n * @private\n */\n updateHTML_(pixel) {\n let html = this.undefinedHTML_;\n if (pixel && this.mapProjection_) {\n if (!this.transform_) {\n const projection = this.getProjection();\n if (projection) {\n this.transform_ = getTransformFromProjections(\n this.mapProjection_, projection);\n } else {\n this.transform_ = identityTransform;\n }\n }\n const map = this.getMap();\n const coordinate = map.getCoordinateFromPixelInternal(pixel);\n if (coordinate) {\n const userProjection = getUserProjection();\n if (userProjection) {\n this.transform_ = getTransformFromProjections(\n this.mapProjection_, userProjection);\n }\n this.transform_(coordinate, coordinate);\n const coordinateFormat = this.getCoordinateFormat();\n if (coordinateFormat) {\n html = coordinateFormat(coordinate);\n } else {\n html = coordinate.toString();\n }\n }\n }\n if (!this.renderedHTML_ || html !== this.renderedHTML_) {\n this.element.innerHTML = html;\n this.renderedHTML_ = html;\n }\n }\n}\n\n\n/**\n * Update the projection. Rendering of the coordinates is done in\n * `handleMouseMove` and `handleMouseUp`.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {MousePosition}\n * @api\n */\nexport function render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n this.mapProjection_ = null;\n } else {\n if (this.mapProjection_ != frameState.viewState.projection) {\n this.mapProjection_ = frameState.viewState.projection;\n this.transform_ = null;\n }\n }\n}\n\n\nexport default MousePosition;\n","/**\n * @module ol/render/Event\n */\n\nimport Event from '../events/Event.js';\n\nclass RenderEvent extends Event {\n\n /**\n * @param {import(\"./EventType.js\").default} type Type.\n * @param {import(\"../transform.js\").Transform=} opt_inversePixelTransform Transform for\n * CSS pixels to rendered pixels.\n * @param {import(\"../PluggableMap.js\").FrameState=} opt_frameState Frame state.\n * @param {?CanvasRenderingContext2D=} opt_context Context.\n */\n constructor(type, opt_inversePixelTransform, opt_frameState, opt_context) {\n\n super(type);\n\n /**\n * Transform from CSS pixels (relative to the top-left corner of the map viewport)\n * to rendered pixels on this event's `context`.\n * @type {import(\"../transform.js\").Transform|undefined}\n * @api\n */\n this.inversePixelTransform = opt_inversePixelTransform;\n\n /**\n * An object representing the current render frame state.\n * @type {import(\"../PluggableMap.js\").FrameState|undefined}\n * @api\n */\n this.frameState = opt_frameState;\n\n /**\n * Canvas context. Not available when the event is dispatched by the map. Only available\n * when a Canvas renderer is used, null otherwise.\n * @type {CanvasRenderingContext2D|null|undefined}\n * @api\n */\n this.context = opt_context;\n\n }\n\n}\n\nexport default RenderEvent;\n","/**\n * @module ol/color\n */\nimport {assert} from './asserts.js';\nimport {clamp} from './math.js';\n\n\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n\n\n/**\n * This RegExp matches # followed by 3, 4, 6, or 8 hex digits.\n * @const\n * @type {RegExp}\n * @private\n */\nconst HEX_COLOR_RE_ = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i;\n\n\n/**\n * Regular expression for matching potential named color style strings.\n * @const\n * @type {RegExp}\n * @private\n */\nconst NAMED_COLOR_RE_ = /^([a-z]*)$|^hsla?\\(.*\\)$/i;\n\n\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n } else {\n return toString(color);\n }\n}\n\n/**\n * Return named color as an rgba string.\n * @param {string} color Named color.\n * @return {string} Rgb string.\n */\nfunction fromNamed(color) {\n const el = document.createElement('div');\n el.style.color = color;\n if (el.style.color !== '') {\n document.body.appendChild(el);\n const rgb = getComputedStyle(el).color;\n document.body.removeChild(el);\n return rgb;\n } else {\n return '';\n }\n}\n\n\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport const fromString = (\n function() {\n\n // We maintain a small cache of parsed strings. To provide cheap LRU-like\n // semantics, whenever the cache grows too large we simply delete an\n // arbitrary 25% of the entries.\n\n /**\n * @const\n * @type {number}\n */\n const MAX_CACHE_SIZE = 1024;\n\n /**\n * @type {Object}\n */\n const cache = {};\n\n /**\n * @type {number}\n */\n let cacheSize = 0;\n\n return (\n /**\n * @param {string} s String.\n * @return {Color} Color.\n */\n function(s) {\n let color;\n if (cache.hasOwnProperty(s)) {\n color = cache[s];\n } else {\n if (cacheSize >= MAX_CACHE_SIZE) {\n let i = 0;\n for (const key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n color = fromStringInternal_(s);\n cache[s] = color;\n ++cacheSize;\n }\n return color;\n }\n );\n\n })();\n\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n } else {\n return fromString(color);\n }\n}\n\n/**\n * @param {string} s String.\n * @private\n * @return {Color} Color.\n */\nfunction fromStringInternal_(s) {\n let r, g, b, a, color;\n\n if (NAMED_COLOR_RE_.exec(s)) {\n s = fromNamed(s);\n }\n\n if (HEX_COLOR_RE_.exec(s)) { // hex\n const n = s.length - 1; // number of hex digits\n let d; // number of digits per channel\n if (n <= 4) {\n d = 1;\n } else {\n d = 2;\n }\n const hasAlpha = n === 4 || n === 8;\n r = parseInt(s.substr(1 + 0 * d, d), 16);\n g = parseInt(s.substr(1 + 1 * d, d), 16);\n b = parseInt(s.substr(1 + 2 * d, d), 16);\n if (hasAlpha) {\n a = parseInt(s.substr(1 + 3 * d, d), 16);\n } else {\n a = 255;\n }\n if (d == 1) {\n r = (r << 4) + r;\n g = (g << 4) + g;\n b = (b << 4) + b;\n if (hasAlpha) {\n a = (a << 4) + a;\n }\n }\n color = [r, g, b, a / 255];\n } else if (s.indexOf('rgba(') == 0) { // rgba()\n color = s.slice(5, -1).split(',').map(Number);\n normalize(color);\n } else if (s.indexOf('rgb(') == 0) { // rgb()\n color = s.slice(4, -1).split(',').map(Number);\n color.push(1);\n normalize(color);\n } else {\n assert(false, 14); // Invalid color\n }\n return color;\n}\n\n\n/**\n * TODO this function is only used in the test, we probably shouldn't export it\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n\n\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n let r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n let g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n let b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n const a = color[3] === undefined ? 1 : color[3];\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n if (NAMED_COLOR_RE_.test(s)) {\n s = fromNamed(s);\n }\n return HEX_COLOR_RE_.test(s) || s.indexOf('rgba(') === 0 || s.indexOf('rgb(') === 0;\n}\n","/**\n * @module ol/style/IconImageCache\n */\nimport {asString} from '../color.js';\n\n/**\n * @classdesc\n * Singleton class. Available through {@link module:ol/style/IconImageCache~shared}.\n */\nclass IconImageCache {\n constructor() {\n\n /**\n * @type {!Object}\n * @private\n */\n this.cache_ = {};\n\n /**\n * @type {number}\n * @private\n */\n this.cacheSize_ = 0;\n\n /**\n * @type {number}\n * @private\n */\n this.maxCacheSize_ = 32;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n clear() {\n this.cache_ = {};\n this.cacheSize_ = 0;\n }\n\n /**\n * @return {boolean} Can expire cache.\n */\n canExpireCache() {\n return this.cacheSize_ > this.maxCacheSize_;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n expire() {\n if (this.canExpireCache()) {\n let i = 0;\n for (const key in this.cache_) {\n const iconImage = this.cache_[key];\n if ((i++ & 3) === 0 && !iconImage.hasListener()) {\n delete this.cache_[key];\n --this.cacheSize_;\n }\n }\n }\n }\n\n /**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {import(\"./IconImage.js\").default} Icon image.\n */\n get(src, crossOrigin, color) {\n const key = getKey(src, crossOrigin, color);\n return key in this.cache_ ? this.cache_[key] : null;\n }\n\n /**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @param {import(\"./IconImage.js\").default} iconImage Icon image.\n */\n set(src, crossOrigin, color, iconImage) {\n const key = getKey(src, crossOrigin, color);\n this.cache_[key] = iconImage;\n ++this.cacheSize_;\n }\n\n /**\n * Set the cache size of the icon cache. Default is `32`. Change this value when\n * your map uses more than 32 different icon images and you are not caching icon\n * styles on the application level.\n * @param {number} maxCacheSize Cache max size.\n * @api\n */\n setSize(maxCacheSize) {\n this.maxCacheSize_ = maxCacheSize;\n this.expire();\n }\n}\n\n\n/**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {string} Cache key.\n */\nfunction getKey(src, crossOrigin, color) {\n const colorString = color ? asString(color) : 'null';\n return crossOrigin + ':' + src + ':' + colorString;\n}\n\n\nexport default IconImageCache;\n\n\n/**\n * The {@link module:ol/style/IconImageCache~IconImageCache} for\n * {@link module:ol/style/Icon~Icon} images.\n * @api\n */\nexport const shared = new IconImageCache();\n","/**\n * @module ol/colorlike\n */\nimport {toString} from './color.js';\n\n\n/**\n * A type accepted by CanvasRenderingContext2D.fillStyle\n * or CanvasRenderingContext2D.strokeStyle.\n * Represents a color, pattern, or gradient. The origin for patterns and\n * gradients as fill style is an increment of 512 css pixels from map coordinate\n * `[0, 0]`. For seamless repeat patterns, width and height of the pattern image\n * must be a factor of two (2, 4, 8, ..., 512).\n *\n * @typedef {string|CanvasPattern|CanvasGradient} ColorLike\n * @api\n */\n\n\n/**\n * @param {import(\"./color.js\").Color|ColorLike} color Color.\n * @return {ColorLike} The color as an {@link ol/colorlike~ColorLike}.\n * @api\n */\nexport function asColorLike(color) {\n if (Array.isArray(color)) {\n return toString(color);\n } else {\n return color;\n }\n}\n","/**\n * @module ol/render/VectorContext\n */\n\n/**\n * @classdesc\n * Context for drawing geometries. A vector context is available on render\n * events and does not need to be constructed directly.\n * @api\n */\nclass VectorContext {\n /**\n * Render a geometry with a custom renderer.\n *\n * @param {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {Function} renderer Renderer.\n */\n drawCustom(geometry, feature, renderer) {}\n\n /**\n * Render a geometry.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry The geometry to render.\n */\n drawGeometry(geometry) {}\n\n /**\n * Set the rendering style.\n *\n * @param {import(\"../style/Style.js\").default} style The rendering style.\n */\n setStyle(style) {}\n\n /**\n * @param {import(\"../geom/Circle.js\").default} circleGeometry Circle geometry.\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\n drawCircle(circleGeometry, feature) {}\n\n /**\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"../style/Style.js\").default} style Style.\n */\n drawFeature(feature, style) {}\n\n /**\n * @param {import(\"../geom/GeometryCollection.js\").default} geometryCollectionGeometry Geometry collection.\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\n drawGeometryCollection(geometryCollectionGeometry, feature) {}\n\n /**\n * @param {import(\"../geom/LineString.js\").default|import(\"./Feature.js\").default} lineStringGeometry Line string geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n drawLineString(lineStringGeometry, feature) {}\n\n /**\n * @param {import(\"../geom/MultiLineString.js\").default|import(\"./Feature.js\").default} multiLineStringGeometry MultiLineString geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n drawMultiLineString(multiLineStringGeometry, feature) {}\n\n /**\n * @param {import(\"../geom/MultiPoint.js\").default|import(\"./Feature.js\").default} multiPointGeometry MultiPoint geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n drawMultiPoint(multiPointGeometry, feature) {}\n\n /**\n * @param {import(\"../geom/MultiPolygon.js\").default} multiPolygonGeometry MultiPolygon geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n drawMultiPolygon(multiPolygonGeometry, feature) {}\n\n /**\n * @param {import(\"../geom/Point.js\").default|import(\"./Feature.js\").default} pointGeometry Point geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n drawPoint(pointGeometry, feature) {}\n\n /**\n * @param {import(\"../geom/Polygon.js\").default|import(\"./Feature.js\").default} polygonGeometry Polygon geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n drawPolygon(polygonGeometry, feature) {}\n\n /**\n * @param {import(\"../geom/Geometry.js\").default|import(\"./Feature.js\").default} geometry Geometry.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\n drawText(geometry, feature) {}\n\n /**\n * @param {import(\"../style/Fill.js\").default} fillStyle Fill style.\n * @param {import(\"../style/Stroke.js\").default} strokeStyle Stroke style.\n */\n setFillStrokeStyle(fillStyle, strokeStyle) {}\n\n /**\n * @param {import(\"../style/Image.js\").default} imageStyle Image style.\n * @param {import(\"./canvas.js\").DeclutterGroup=} opt_declutterGroup Declutter.\n */\n setImageStyle(imageStyle, opt_declutterGroup) {}\n\n /**\n * @param {import(\"../style/Text.js\").default} textStyle Text style.\n * @param {import(\"./canvas.js\").DeclutterGroups=} opt_declutterGroups Declutter.\n */\n setTextStyle(textStyle, opt_declutterGroups) {}\n}\n\nexport default VectorContext;\n","/**\n * @module ol/structs/LRUCache\n */\n\nimport {assert} from '../asserts.js';\nimport EventTarget from '../events/Target.js';\nimport EventType from '../events/EventType.js';\n\n\n/**\n * @typedef {Object} Entry\n * @property {string} key_\n * @property {Object} newer\n * @property {Object} older\n * @property {*} value_\n */\n\n\n/**\n * @classdesc\n * Implements a Least-Recently-Used cache where the keys do not conflict with\n * Object's properties (e.g. 'hasOwnProperty' is not allowed as a key). Expiring\n * items from the cache is the responsibility of the user.\n *\n * @fires import(\"../events/Event.js\").default\n * @template T\n */\nclass LRUCache extends EventTarget {\n\n /**\n * @param {number=} opt_highWaterMark High water mark.\n */\n constructor(opt_highWaterMark) {\n\n super();\n\n /**\n * @type {number}\n */\n this.highWaterMark = opt_highWaterMark !== undefined ? opt_highWaterMark : 2048;\n\n /**\n * @private\n * @type {number}\n */\n this.count_ = 0;\n\n /**\n * @private\n * @type {!Object}\n */\n this.entries_ = {};\n\n /**\n * @private\n * @type {?Entry}\n */\n this.oldest_ = null;\n\n /**\n * @private\n * @type {?Entry}\n */\n this.newest_ = null;\n\n }\n\n\n /**\n * @return {boolean} Can expire cache.\n */\n canExpireCache() {\n return this.getCount() > this.highWaterMark;\n }\n\n\n /**\n * FIXME empty description for jsdoc\n */\n clear() {\n this.count_ = 0;\n this.entries_ = {};\n this.oldest_ = null;\n this.newest_ = null;\n this.dispatchEvent(EventType.CLEAR);\n }\n\n\n /**\n * @param {string} key Key.\n * @return {boolean} Contains key.\n */\n containsKey(key) {\n return this.entries_.hasOwnProperty(key);\n }\n\n\n /**\n * @param {function(T, string, LRUCache): ?} f The function\n * to call for every entry from the oldest to the newer. This function takes\n * 3 arguments (the entry value, the entry key and the LRUCache object).\n * The return value is ignored.\n */\n forEach(f) {\n let entry = this.oldest_;\n while (entry) {\n f(entry.value_, entry.key_, this);\n entry = entry.newer;\n }\n }\n\n\n /**\n * @param {string} key Key.\n * @param {*=} opt_options Options (reserverd for subclasses).\n * @return {T} Value.\n */\n get(key, opt_options) {\n const entry = this.entries_[key];\n assert(entry !== undefined,\n 15); // Tried to get a value for a key that does not exist in the cache\n if (entry === this.newest_) {\n return entry.value_;\n } else if (entry === this.oldest_) {\n this.oldest_ = /** @type {Entry} */ (this.oldest_.newer);\n this.oldest_.older = null;\n } else {\n entry.newer.older = entry.older;\n entry.older.newer = entry.newer;\n }\n entry.newer = null;\n entry.older = this.newest_;\n this.newest_.newer = entry;\n this.newest_ = entry;\n return entry.value_;\n }\n\n\n /**\n * Remove an entry from the cache.\n * @param {string} key The entry key.\n * @return {T} The removed entry.\n */\n remove(key) {\n const entry = this.entries_[key];\n assert(entry !== undefined, 15); // Tried to get a value for a key that does not exist in the cache\n if (entry === this.newest_) {\n this.newest_ = /** @type {Entry} */ (entry.older);\n if (this.newest_) {\n this.newest_.newer = null;\n }\n } else if (entry === this.oldest_) {\n this.oldest_ = /** @type {Entry} */ (entry.newer);\n if (this.oldest_) {\n this.oldest_.older = null;\n }\n } else {\n entry.newer.older = entry.older;\n entry.older.newer = entry.newer;\n }\n delete this.entries_[key];\n --this.count_;\n return entry.value_;\n }\n\n\n /**\n * @return {number} Count.\n */\n getCount() {\n return this.count_;\n }\n\n\n /**\n * @return {Array} Keys.\n */\n getKeys() {\n const keys = new Array(this.count_);\n let i = 0;\n let entry;\n for (entry = this.newest_; entry; entry = entry.older) {\n keys[i++] = entry.key_;\n }\n return keys;\n }\n\n\n /**\n * @return {Array} Values.\n */\n getValues() {\n const values = new Array(this.count_);\n let i = 0;\n let entry;\n for (entry = this.newest_; entry; entry = entry.older) {\n values[i++] = entry.value_;\n }\n return values;\n }\n\n\n /**\n * @return {T} Last value.\n */\n peekLast() {\n return this.oldest_.value_;\n }\n\n\n /**\n * @return {string} Last key.\n */\n peekLastKey() {\n return this.oldest_.key_;\n }\n\n\n /**\n * Get the key of the newest item in the cache. Throws if the cache is empty.\n * @return {string} The newest key.\n */\n peekFirstKey() {\n return this.newest_.key_;\n }\n\n\n /**\n * @return {T} value Value.\n */\n pop() {\n const entry = this.oldest_;\n delete this.entries_[entry.key_];\n if (entry.newer) {\n entry.newer.older = null;\n }\n this.oldest_ = /** @type {Entry} */ (entry.newer);\n if (!this.oldest_) {\n this.newest_ = null;\n }\n --this.count_;\n return entry.value_;\n }\n\n\n /**\n * @param {string} key Key.\n * @param {T} value Value.\n */\n replace(key, value) {\n this.get(key); // update `newest_`\n this.entries_[key].value_ = value;\n }\n\n\n /**\n * @param {string} key Key.\n * @param {T} value Value.\n */\n set(key, value) {\n assert(!(key in this.entries_),\n 16); // Tried to set a value for a key that is used already\n const entry = {\n key_: key,\n newer: null,\n older: this.newest_,\n value_: value\n };\n if (!this.newest_) {\n this.oldest_ = entry;\n } else {\n this.newest_.newer = entry;\n }\n this.newest_ = entry;\n this.entries_[key] = entry;\n ++this.count_;\n }\n\n\n /**\n * Set a maximum number of entries for the cache.\n * @param {number} size Cache size.\n * @api\n */\n setSize(size) {\n this.highWaterMark = size;\n }\n\n}\n\nexport default LRUCache;\n","import {getUid} from '../../util.js';\nimport LRUCache from '../../structs/LRUCache.js';\n\n/**\n * @module ol/render/canvas/LabelCache\n */\n\n/**\n * @classdesc\n * Cache of pre-rendered labels.\n */\nclass LabelCache extends LRUCache {\n\n /**\n * @inheritDoc\n */\n constructor(opt_highWaterMark) {\n super(opt_highWaterMark);\n this.consumers = {};\n }\n\n clear() {\n this.consumers = {};\n super.clear();\n }\n\n /**\n * @override\n * @param {string} key Label key.\n * @param {import(\"./Executor.js\").default} consumer Label consumer.\n * @return {HTMLCanvasElement} Label.\n */\n get(key, consumer) {\n const canvas = super.get(key);\n const consumerId = getUid(consumer);\n if (!(consumerId in this.consumers)) {\n this.consumers[consumerId] = {};\n }\n this.consumers[consumerId][key] = true;\n return canvas;\n }\n\n prune() {\n outer:\n while (this.canExpireCache()) {\n const key = this.peekLastKey();\n for (const consumerId in this.consumers) {\n if (key in this.consumers[consumerId]) {\n break outer;\n }\n }\n const canvas = this.pop();\n canvas.width = 0;\n canvas.height = 0;\n for (const consumerId in this.consumers) {\n delete this.consumers[consumerId][key];\n }\n }\n }\n\n /**\n * @param {import(\"./Executor.js\").default} consumer Label consumer.\n */\n release(consumer) {\n delete this.consumers[getUid(consumer)];\n }\n}\n\nexport default LabelCache;\n","/**\n * @module ol/render/canvas\n */\nimport {getFontParameters} from '../css.js';\nimport {createCanvasContext2D} from '../dom.js';\nimport {clear} from '../obj.js';\nimport {create as createTransform} from '../transform.js';\nimport LabelCache from './canvas/LabelCache.js';\n\n\n/**\n * @typedef {Object} FillState\n * @property {import(\"../colorlike.js\").ColorLike} fillStyle\n */\n\n\n/**\n * @typedef {Object} FillStrokeState\n * @property {import(\"../colorlike.js\").ColorLike} [currentFillStyle]\n * @property {import(\"../colorlike.js\").ColorLike} [currentStrokeStyle]\n * @property {CanvasLineCap} [currentLineCap]\n * @property {Array} currentLineDash\n * @property {number} [currentLineDashOffset]\n * @property {CanvasLineJoin} [currentLineJoin]\n * @property {number} [currentLineWidth]\n * @property {number} [currentMiterLimit]\n * @property {number} [lastStroke]\n * @property {import(\"../colorlike.js\").ColorLike} [fillStyle]\n * @property {import(\"../colorlike.js\").ColorLike} [strokeStyle]\n * @property {CanvasLineCap} [lineCap]\n * @property {Array} lineDash\n * @property {number} [lineDashOffset]\n * @property {CanvasLineJoin} [lineJoin]\n * @property {number} [lineWidth]\n * @property {number} [miterLimit]\n */\n\n\n/**\n * @typedef {Object} StrokeState\n * @property {CanvasLineCap} lineCap\n * @property {Array} lineDash\n * @property {number} lineDashOffset\n * @property {CanvasLineJoin} lineJoin\n * @property {number} lineWidth\n * @property {number} miterLimit\n * @property {import(\"../colorlike.js\").ColorLike} strokeStyle\n */\n\n\n/**\n * @typedef {Object} TextState\n * @property {string} font\n * @property {string} [textAlign]\n * @property {string} textBaseline\n * @property {string} [placement]\n * @property {number} [maxAngle]\n * @property {boolean} [overflow]\n * @property {import(\"../style/Fill.js\").default} [backgroundFill]\n * @property {import(\"../style/Stroke.js\").default} [backgroundStroke]\n * @property {number} [scale]\n * @property {Array} [padding]\n */\n\n/**\n * Container for decluttered replay instructions that need to be rendered or\n * omitted together, i.e. when styles render both an image and text, or for the\n * characters that form text along lines. The basic elements of this array are\n * `[minX, minY, maxX, maxY, count]`, where the first four entries are the\n * rendered extent of the group in pixel space. `count` is the number of styles\n * in the group, i.e. 2 when an image and a text are grouped, or 1 otherwise.\n * In addition to these four elements, declutter instruction arrays (i.e. the\n * arguments to {@link module:ol/render/canvas~drawImage} are appended to the array.\n * @typedef {Array<*>} DeclutterGroup\n */\n\n\n/**\n * Declutter groups for support of multi geometries.\n * @typedef {Array} DeclutterGroups\n */\n\n\n/**\n * @const\n * @type {string}\n */\nexport const defaultFont = '10px sans-serif';\n\n\n/**\n * @const\n * @type {import(\"../colorlike.js\").ColorLike}\n */\nexport const defaultFillStyle = '#000';\n\n\n/**\n * @const\n * @type {CanvasLineCap}\n */\nexport const defaultLineCap = 'round';\n\n\n/**\n * @const\n * @type {Array}\n */\nexport const defaultLineDash = [];\n\n\n/**\n * @const\n * @type {number}\n */\nexport const defaultLineDashOffset = 0;\n\n\n/**\n * @const\n * @type {CanvasLineJoin}\n */\nexport const defaultLineJoin = 'round';\n\n\n/**\n * @const\n * @type {number}\n */\nexport const defaultMiterLimit = 10;\n\n\n/**\n * @const\n * @type {import(\"../colorlike.js\").ColorLike}\n */\nexport const defaultStrokeStyle = '#000';\n\n\n/**\n * @const\n * @type {string}\n */\nexport const defaultTextAlign = 'center';\n\n\n/**\n * @const\n * @type {string}\n */\nexport const defaultTextBaseline = 'middle';\n\n\n/**\n * @const\n * @type {Array}\n */\nexport const defaultPadding = [0, 0, 0, 0];\n\n\n/**\n * @const\n * @type {number}\n */\nexport const defaultLineWidth = 1;\n\n\n/**\n * The label cache for text rendering. To change the default cache size of 2048\n * entries, use {@link module:ol/structs/LRUCache#setSize}.\n * @type {LabelCache}\n * @api\n */\nexport const labelCache = new LabelCache();\n\n\n/**\n * @type {!Object}\n */\nexport const checkedFonts = {};\n\n\n/**\n * @type {CanvasRenderingContext2D}\n */\nlet measureContext = null;\n\n/**\n * @type {string}\n */\nlet measureFont;\n\n/**\n * @type {!Object}\n */\nexport const textHeights = {};\n\n\n/**\n * Clears the label cache when a font becomes available.\n * @param {string} fontSpec CSS font spec.\n */\nexport const checkFont = (function() {\n const retries = 100;\n const checked = checkedFonts;\n const size = '32px ';\n const referenceFonts = ['monospace', 'serif'];\n const len = referenceFonts.length;\n const text = 'wmytzilWMYTZIL@#/&?$%10\\uF013';\n let interval, referenceWidth;\n\n /**\n * @param {string} fontStyle Css font-style\n * @param {string} fontWeight Css font-weight\n * @param {*} fontFamily Css font-family\n * @return {boolean} Font with style and weight is available\n */\n function isAvailable(fontStyle, fontWeight, fontFamily) {\n const context = getMeasureContext();\n let available = true;\n for (let i = 0; i < len; ++i) {\n const referenceFont = referenceFonts[i];\n context.font = fontStyle + ' ' + fontWeight + ' ' + size + referenceFont;\n referenceWidth = context.measureText(text).width;\n if (fontFamily != referenceFont) {\n context.font = fontStyle + ' ' + fontWeight + ' ' + size + fontFamily + ',' + referenceFont;\n const width = context.measureText(text).width;\n // If width and referenceWidth are the same, then the fallback was used\n // instead of the font we wanted, so the font is not available.\n available = available && width != referenceWidth;\n }\n }\n if (available) {\n return true;\n }\n return false;\n }\n\n function check() {\n let done = true;\n for (const font in checked) {\n if (checked[font] < retries) {\n if (isAvailable.apply(this, font.split('\\n'))) {\n checked[font] = retries;\n clear(textHeights);\n // Make sure that loaded fonts are picked up by Safari\n measureContext = null;\n measureFont = undefined;\n if (labelCache.getCount()) {\n labelCache.clear();\n }\n } else {\n ++checked[font];\n done = false;\n }\n }\n }\n if (done) {\n clearInterval(interval);\n interval = undefined;\n }\n }\n\n return function(fontSpec) {\n const font = getFontParameters(fontSpec);\n if (!font) {\n return;\n }\n const families = font.families;\n for (let i = 0, ii = families.length; i < ii; ++i) {\n const family = families[i];\n const key = font.style + '\\n' + font.weight + '\\n' + family;\n if (!(key in checked)) {\n checked[key] = retries;\n if (!isAvailable(font.style, font.weight, family)) {\n checked[key] = 0;\n if (interval === undefined) {\n interval = setInterval(check, 32);\n }\n }\n }\n }\n };\n})();\n\n\n/**\n * @return {CanvasRenderingContext2D} Measure context.\n */\nfunction getMeasureContext() {\n if (!measureContext) {\n measureContext = createCanvasContext2D(1, 1);\n }\n return measureContext;\n}\n\n\n/**\n * @param {string} font Font to use for measuring.\n * @return {import(\"../size.js\").Size} Measurement.\n */\nexport const measureTextHeight = (function() {\n /**\n * @type {HTMLDivElement}\n */\n let div;\n const heights = textHeights;\n return function(font) {\n let height = heights[font];\n if (height == undefined) {\n if (!div) {\n div = document.createElement('div');\n div.innerHTML = 'M';\n div.style.margin = '0 !important';\n div.style.padding = '0 !important';\n div.style.position = 'absolute !important';\n div.style.left = '-99999px !important';\n }\n div.style.font = font;\n document.body.appendChild(div);\n height = div.offsetHeight;\n heights[font] = height;\n document.body.removeChild(div);\n }\n return height;\n };\n})();\n\n\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {number} Width.\n */\nexport function measureTextWidth(font, text) {\n const measureContext = getMeasureContext();\n if (font != measureFont) {\n measureContext.font = font;\n measureFont = measureContext.font;\n }\n return measureContext.measureText(text).width;\n}\n\n\n/**\n * Measure text width using a cache.\n * @param {string} font The font.\n * @param {string} text The text to measure.\n * @param {Object} cache A lookup of cached widths by text.\n * @returns {number} The text width.\n */\nexport function measureAndCacheTextWidth(font, text, cache) {\n if (text in cache) {\n return cache[text];\n }\n const width = measureTextWidth(font, text);\n cache[text] = width;\n return width;\n}\n\n\n/**\n * @param {string} font Font to use for measuring.\n * @param {Array} lines Lines to measure.\n * @param {Array} widths Array will be populated with the widths of\n * each line.\n * @return {number} Width of the whole text.\n */\nexport function measureTextWidths(font, lines, widths) {\n const numLines = lines.length;\n let width = 0;\n for (let i = 0; i < numLines; ++i) {\n const currentWidth = measureTextWidth(font, lines[i]);\n width = Math.max(width, currentWidth);\n widths.push(currentWidth);\n }\n return width;\n}\n\n\n/**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} rotation Rotation.\n * @param {number} offsetX X offset.\n * @param {number} offsetY Y offset.\n */\nexport function rotateAtOffset(context, rotation, offsetX, offsetY) {\n if (rotation !== 0) {\n context.translate(offsetX, offsetY);\n context.rotate(rotation);\n context.translate(-offsetX, -offsetY);\n }\n}\n\n\nexport const resetTransform = createTransform();\n\n\n/**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {import(\"../transform.js\").Transform|null} transform Transform.\n * @param {number} opacity Opacity.\n * @param {HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} image Image.\n * @param {number} originX Origin X.\n * @param {number} originY Origin Y.\n * @param {number} w Width.\n * @param {number} h Height.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} scale Scale.\n */\nexport function drawImage(context,\n transform, opacity, image, originX, originY, w, h, x, y, scale) {\n let alpha;\n if (opacity != 1) {\n alpha = context.globalAlpha;\n context.globalAlpha = alpha * opacity;\n }\n if (transform) {\n context.setTransform.apply(context, transform);\n }\n\n context.drawImage(image, originX, originY, w, h, x, y, w * scale, h * scale);\n\n if (opacity != 1) {\n context.globalAlpha = alpha;\n }\n if (transform) {\n context.setTransform.apply(context, resetTransform);\n }\n}\n","/**\n * @module ol/render/canvas/Immediate\n */\n// FIXME test, especially polygons with holes and multipolygons\n// FIXME need to handle large thick features (where pixel size matters)\n// FIXME add offset and end to ol/geom/flat/transform~transform2D?\n\nimport {equals} from '../../array.js';\nimport {asColorLike} from '../../colorlike.js';\nimport {intersects} from '../../extent.js';\nimport GeometryType from '../../geom/GeometryType.js';\nimport {transformGeom2D} from '../../geom/SimpleGeometry.js';\nimport {transform2D} from '../../geom/flat/transform.js';\nimport VectorContext from '../VectorContext.js';\nimport {defaultTextAlign, defaultFillStyle, defaultLineCap, defaultLineDash, defaultLineDashOffset, defaultLineJoin, defaultLineWidth, defaultMiterLimit, defaultStrokeStyle, defaultTextBaseline, defaultFont} from '../canvas.js';\nimport {create as createTransform, compose as composeTransform} from '../../transform.js';\n\n\n/**\n * @classdesc\n * A concrete subclass of {@link module:ol/render/VectorContext} that implements\n * direct rendering of features and geometries to an HTML5 Canvas context.\n * Instances of this class are created internally by the library and\n * provided to application code as vectorContext member of the\n * {@link module:ol/render/Event~RenderEvent} object associated with postcompose, precompose and\n * render events emitted by layers and maps.\n */\nclass CanvasImmediateRenderer extends VectorContext {\n /**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {number} viewRotation View rotation.\n * @param {number=} opt_squaredTolerance Optional squared tolerance for simplification.\n * @param {import(\"../../proj.js\").TransformFunction=} opt_userTransform Transform from user to view projection.\n */\n constructor(context, pixelRatio, extent, transform, viewRotation, opt_squaredTolerance, opt_userTransform) {\n super();\n\n /**\n * @private\n * @type {CanvasRenderingContext2D}\n */\n this.context_ = context;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ = pixelRatio;\n\n /**\n * @private\n * @type {import(\"../../extent.js\").Extent}\n */\n this.extent_ = extent;\n\n /**\n * @private\n * @type {import(\"../../transform.js\").Transform}\n */\n this.transform_ = transform;\n\n /**\n * @private\n * @type {number}\n */\n this.viewRotation_ = viewRotation;\n\n /**\n * @private\n * @type {number}\n */\n this.squaredTolerance_ = opt_squaredTolerance;\n\n /**\n * @private\n * @type {import(\"../../proj.js\").TransformFunction}\n */\n this.userTransform_ = opt_userTransform;\n\n /**\n * @private\n * @type {?import(\"../canvas.js\").FillState}\n */\n this.contextFillState_ = null;\n\n /**\n * @private\n * @type {?import(\"../canvas.js\").StrokeState}\n */\n this.contextStrokeState_ = null;\n\n /**\n * @private\n * @type {?import(\"../canvas.js\").TextState}\n */\n this.contextTextState_ = null;\n\n /**\n * @private\n * @type {?import(\"../canvas.js\").FillState}\n */\n this.fillState_ = null;\n\n /**\n * @private\n * @type {?import(\"../canvas.js\").StrokeState}\n */\n this.strokeState_ = null;\n\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement}\n */\n this.image_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.imageAnchorX_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.imageAnchorY_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.imageHeight_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.imageOpacity_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.imageOriginX_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.imageOriginY_ = 0;\n\n /**\n * @private\n * @type {boolean}\n */\n this.imageRotateWithView_ = false;\n\n /**\n * @private\n * @type {number}\n */\n this.imageRotation_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.imageScale_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.imageWidth_ = 0;\n\n /**\n * @private\n * @type {string}\n */\n this.text_ = '';\n\n /**\n * @private\n * @type {number}\n */\n this.textOffsetX_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.textOffsetY_ = 0;\n\n /**\n * @private\n * @type {boolean}\n */\n this.textRotateWithView_ = false;\n\n /**\n * @private\n * @type {number}\n */\n this.textRotation_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.textScale_ = 0;\n\n /**\n * @private\n * @type {?import(\"../canvas.js\").FillState}\n */\n this.textFillState_ = null;\n\n /**\n * @private\n * @type {?import(\"../canvas.js\").StrokeState}\n */\n this.textStrokeState_ = null;\n\n /**\n * @private\n * @type {?import(\"../canvas.js\").TextState}\n */\n this.textState_ = null;\n\n /**\n * @private\n * @type {Array}\n */\n this.pixelCoordinates_ = [];\n\n /**\n * @private\n * @type {import(\"../../transform.js\").Transform}\n */\n this.tmpLocalTransform_ = createTransform();\n\n }\n\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @private\n */\n drawImages_(flatCoordinates, offset, end, stride) {\n if (!this.image_) {\n return;\n }\n const pixelCoordinates = transform2D(\n flatCoordinates, offset, end, 2, this.transform_,\n this.pixelCoordinates_);\n const context = this.context_;\n const localTransform = this.tmpLocalTransform_;\n const alpha = context.globalAlpha;\n if (this.imageOpacity_ != 1) {\n context.globalAlpha = alpha * this.imageOpacity_;\n }\n let rotation = this.imageRotation_;\n if (this.imageRotateWithView_) {\n rotation += this.viewRotation_;\n }\n for (let i = 0, ii = pixelCoordinates.length; i < ii; i += 2) {\n const x = pixelCoordinates[i] - this.imageAnchorX_;\n const y = pixelCoordinates[i + 1] - this.imageAnchorY_;\n if (rotation !== 0 || this.imageScale_ != 1) {\n const centerX = x + this.imageAnchorX_;\n const centerY = y + this.imageAnchorY_;\n composeTransform(localTransform,\n centerX, centerY,\n this.imageScale_, this.imageScale_,\n rotation,\n -centerX, -centerY);\n context.setTransform.apply(context, localTransform);\n }\n context.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_,\n this.imageWidth_, this.imageHeight_, x, y,\n this.imageWidth_, this.imageHeight_);\n }\n if (rotation !== 0 || this.imageScale_ != 1) {\n context.setTransform(1, 0, 0, 1, 0, 0);\n }\n if (this.imageOpacity_ != 1) {\n context.globalAlpha = alpha;\n }\n }\n\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @private\n */\n drawText_(flatCoordinates, offset, end, stride) {\n if (!this.textState_ || this.text_ === '') {\n return;\n }\n if (this.textFillState_) {\n this.setContextFillState_(this.textFillState_);\n }\n if (this.textStrokeState_) {\n this.setContextStrokeState_(this.textStrokeState_);\n }\n this.setContextTextState_(this.textState_);\n const pixelCoordinates = transform2D(\n flatCoordinates, offset, end, stride, this.transform_,\n this.pixelCoordinates_);\n const context = this.context_;\n let rotation = this.textRotation_;\n if (this.textRotateWithView_) {\n rotation += this.viewRotation_;\n }\n for (; offset < end; offset += stride) {\n const x = pixelCoordinates[offset] + this.textOffsetX_;\n const y = pixelCoordinates[offset + 1] + this.textOffsetY_;\n if (rotation !== 0 || this.textScale_ != 1) {\n const localTransform = composeTransform(this.tmpLocalTransform_,\n x, y,\n this.textScale_, this.textScale_,\n rotation,\n -x, -y);\n context.setTransform.apply(context, localTransform);\n }\n if (this.textStrokeState_) {\n context.strokeText(this.text_, x, y);\n }\n if (this.textFillState_) {\n context.fillText(this.text_, x, y);\n }\n }\n if (rotation !== 0 || this.textScale_ != 1) {\n context.setTransform(1, 0, 0, 1, 0, 0);\n }\n }\n\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {boolean} close Close.\n * @private\n * @return {number} end End.\n */\n moveToLineTo_(flatCoordinates, offset, end, stride, close) {\n const context = this.context_;\n const pixelCoordinates = transform2D(\n flatCoordinates, offset, end, stride, this.transform_,\n this.pixelCoordinates_);\n context.moveTo(pixelCoordinates[0], pixelCoordinates[1]);\n let length = pixelCoordinates.length;\n if (close) {\n length -= 2;\n }\n for (let i = 2; i < length; i += 2) {\n context.lineTo(pixelCoordinates[i], pixelCoordinates[i + 1]);\n }\n if (close) {\n context.closePath();\n }\n return end;\n }\n\n /**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @private\n * @return {number} End.\n */\n drawRings_(flatCoordinates, offset, ends, stride) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n offset = this.moveToLineTo_(flatCoordinates, offset, ends[i], stride, true);\n }\n return offset;\n }\n\n /**\n * Render a circle geometry into the canvas. Rendering is immediate and uses\n * the current fill and stroke styles.\n *\n * @param {import(\"../../geom/Circle.js\").default} geometry Circle geometry.\n * @override\n * @api\n */\n drawCircle(geometry) {\n if (!intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n if (this.fillState_ || this.strokeState_) {\n if (this.fillState_) {\n this.setContextFillState_(this.fillState_);\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n }\n const pixelCoordinates = transformGeom2D(\n geometry, this.transform_, this.pixelCoordinates_);\n const dx = pixelCoordinates[2] - pixelCoordinates[0];\n const dy = pixelCoordinates[3] - pixelCoordinates[1];\n const radius = Math.sqrt(dx * dx + dy * dy);\n const context = this.context_;\n context.beginPath();\n context.arc(\n pixelCoordinates[0], pixelCoordinates[1], radius, 0, 2 * Math.PI);\n if (this.fillState_) {\n context.fill();\n }\n if (this.strokeState_) {\n context.stroke();\n }\n }\n if (this.text_ !== '') {\n this.drawText_(geometry.getCenter(), 0, 2, 2);\n }\n }\n\n /**\n * Set the rendering style. Note that since this is an immediate rendering API,\n * any `zIndex` on the provided style will be ignored.\n *\n * @param {import(\"../../style/Style.js\").default} style The rendering style.\n * @override\n * @api\n */\n setStyle(style) {\n this.setFillStrokeStyle(style.getFill(), style.getStroke());\n this.setImageStyle(style.getImage());\n this.setTextStyle(style.getText());\n }\n\n /**\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n */\n setTransform(transform) {\n this.transform_ = transform;\n }\n\n /**\n * Render a geometry into the canvas. Call\n * {@link module:ol/render/canvas/Immediate#setStyle} first to set the rendering style.\n *\n * @param {import(\"../../geom/Geometry.js\").default|import(\"../Feature.js\").default} geometry The geometry to render.\n * @override\n * @api\n */\n drawGeometry(geometry) {\n const type = geometry.getType();\n switch (type) {\n case GeometryType.POINT:\n this.drawPoint(/** @type {import(\"../../geom/Point.js\").default} */ (geometry));\n break;\n case GeometryType.LINE_STRING:\n this.drawLineString(/** @type {import(\"../../geom/LineString.js\").default} */ (geometry));\n break;\n case GeometryType.POLYGON:\n this.drawPolygon(/** @type {import(\"../../geom/Polygon.js\").default} */ (geometry));\n break;\n case GeometryType.MULTI_POINT:\n this.drawMultiPoint(/** @type {import(\"../../geom/MultiPoint.js\").default} */ (geometry));\n break;\n case GeometryType.MULTI_LINE_STRING:\n this.drawMultiLineString(/** @type {import(\"../../geom/MultiLineString.js\").default} */ (geometry));\n break;\n case GeometryType.MULTI_POLYGON:\n this.drawMultiPolygon(/** @type {import(\"../../geom/MultiPolygon.js\").default} */ (geometry));\n break;\n case GeometryType.GEOMETRY_COLLECTION:\n this.drawGeometryCollection(/** @type {import(\"../../geom/GeometryCollection.js\").default} */ (geometry));\n break;\n case GeometryType.CIRCLE:\n this.drawCircle(/** @type {import(\"../../geom/Circle.js\").default} */ (geometry));\n break;\n default:\n }\n }\n\n /**\n * Render a feature into the canvas. Note that any `zIndex` on the provided\n * style will be ignored - features are rendered immediately in the order that\n * this method is called. If you need `zIndex` support, you should be using an\n * {@link module:ol/layer/Vector~VectorLayer} instead.\n *\n * @param {import(\"../../Feature.js\").default} feature Feature.\n * @param {import(\"../../style/Style.js\").default} style Style.\n * @override\n * @api\n */\n drawFeature(feature, style) {\n const geometry = style.getGeometryFunction()(feature);\n if (!geometry || !intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n this.setStyle(style);\n this.drawGeometry(geometry);\n }\n\n /**\n * Render a GeometryCollection to the canvas. Rendering is immediate and\n * uses the current styles appropriate for each geometry in the collection.\n *\n * @param {import(\"../../geom/GeometryCollection.js\").default} geometry Geometry collection.\n * @override\n */\n drawGeometryCollection(geometry) {\n const geometries = geometry.getGeometriesArray();\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n this.drawGeometry(geometries[i]);\n }\n }\n\n /**\n * Render a Point geometry into the canvas. Rendering is immediate and uses\n * the current style.\n *\n * @param {import(\"../../geom/Point.js\").default|import(\"../Feature.js\").default} geometry Point geometry.\n * @override\n */\n drawPoint(geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/Point.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n const flatCoordinates = geometry.getFlatCoordinates();\n const stride = geometry.getStride();\n if (this.image_) {\n this.drawImages_(flatCoordinates, 0, flatCoordinates.length, stride);\n }\n if (this.text_ !== '') {\n this.drawText_(flatCoordinates, 0, flatCoordinates.length, stride);\n }\n }\n\n /**\n * Render a MultiPoint geometry into the canvas. Rendering is immediate and\n * uses the current style.\n *\n * @param {import(\"../../geom/MultiPoint.js\").default|import(\"../Feature.js\").default} geometry MultiPoint geometry.\n * @override\n */\n drawMultiPoint(geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/MultiPoint.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n const flatCoordinates = geometry.getFlatCoordinates();\n const stride = geometry.getStride();\n if (this.image_) {\n this.drawImages_(flatCoordinates, 0, flatCoordinates.length, stride);\n }\n if (this.text_ !== '') {\n this.drawText_(flatCoordinates, 0, flatCoordinates.length, stride);\n }\n }\n\n /**\n * Render a LineString into the canvas. Rendering is immediate and uses\n * the current style.\n *\n * @param {import(\"../../geom/LineString.js\").default|import(\"../Feature.js\").default} geometry LineString geometry.\n * @override\n */\n drawLineString(geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/LineString.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n if (!intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n const context = this.context_;\n const flatCoordinates = geometry.getFlatCoordinates();\n context.beginPath();\n this.moveToLineTo_(flatCoordinates, 0, flatCoordinates.length,\n geometry.getStride(), false);\n context.stroke();\n }\n if (this.text_ !== '') {\n const flatMidpoint = geometry.getFlatMidpoint();\n this.drawText_(flatMidpoint, 0, 2, 2);\n }\n }\n\n /**\n * Render a MultiLineString geometry into the canvas. Rendering is immediate\n * and uses the current style.\n *\n * @param {import(\"../../geom/MultiLineString.js\").default|import(\"../Feature.js\").default} geometry MultiLineString geometry.\n * @override\n */\n drawMultiLineString(geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/MultiLineString.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n const geometryExtent = geometry.getExtent();\n if (!intersects(this.extent_, geometryExtent)) {\n return;\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n const context = this.context_;\n const flatCoordinates = geometry.getFlatCoordinates();\n let offset = 0;\n const ends = /** @type {Array} */ (geometry.getEnds());\n const stride = geometry.getStride();\n context.beginPath();\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n offset = this.moveToLineTo_(flatCoordinates, offset, ends[i], stride, false);\n }\n context.stroke();\n }\n if (this.text_ !== '') {\n const flatMidpoints = geometry.getFlatMidpoints();\n this.drawText_(flatMidpoints, 0, flatMidpoints.length, 2);\n }\n }\n\n /**\n * Render a Polygon geometry into the canvas. Rendering is immediate and uses\n * the current style.\n *\n * @param {import(\"../../geom/Polygon.js\").default|import(\"../Feature.js\").default} geometry Polygon geometry.\n * @override\n */\n drawPolygon(geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/Polygon.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n if (!intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n if (this.strokeState_ || this.fillState_) {\n if (this.fillState_) {\n this.setContextFillState_(this.fillState_);\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n }\n const context = this.context_;\n context.beginPath();\n this.drawRings_(geometry.getOrientedFlatCoordinates(),\n 0, /** @type {Array} */ (geometry.getEnds()), geometry.getStride());\n if (this.fillState_) {\n context.fill();\n }\n if (this.strokeState_) {\n context.stroke();\n }\n }\n if (this.text_ !== '') {\n const flatInteriorPoint = geometry.getFlatInteriorPoint();\n this.drawText_(flatInteriorPoint, 0, 2, 2);\n }\n }\n\n /**\n * Render MultiPolygon geometry into the canvas. Rendering is immediate and\n * uses the current style.\n * @param {import(\"../../geom/MultiPolygon.js\").default} geometry MultiPolygon geometry.\n * @override\n */\n drawMultiPolygon(geometry) {\n if (this.squaredTolerance_) {\n geometry = /** @type {import(\"../../geom/MultiPolygon.js\").default} */ (geometry.simplifyTransformed(this.squaredTolerance_, this.userTransform_));\n }\n if (!intersects(this.extent_, geometry.getExtent())) {\n return;\n }\n if (this.strokeState_ || this.fillState_) {\n if (this.fillState_) {\n this.setContextFillState_(this.fillState_);\n }\n if (this.strokeState_) {\n this.setContextStrokeState_(this.strokeState_);\n }\n const context = this.context_;\n const flatCoordinates = geometry.getOrientedFlatCoordinates();\n let offset = 0;\n const endss = geometry.getEndss();\n const stride = geometry.getStride();\n context.beginPath();\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n offset = this.drawRings_(flatCoordinates, offset, ends, stride);\n }\n if (this.fillState_) {\n context.fill();\n }\n if (this.strokeState_) {\n context.stroke();\n }\n }\n if (this.text_ !== '') {\n const flatInteriorPoints = geometry.getFlatInteriorPoints();\n this.drawText_(flatInteriorPoints, 0, flatInteriorPoints.length, 2);\n }\n }\n\n /**\n * @param {import(\"../canvas.js\").FillState} fillState Fill state.\n * @private\n */\n setContextFillState_(fillState) {\n const context = this.context_;\n const contextFillState = this.contextFillState_;\n if (!contextFillState) {\n context.fillStyle = fillState.fillStyle;\n this.contextFillState_ = {\n fillStyle: fillState.fillStyle\n };\n } else {\n if (contextFillState.fillStyle != fillState.fillStyle) {\n contextFillState.fillStyle = fillState.fillStyle;\n context.fillStyle = fillState.fillStyle;\n }\n }\n }\n\n /**\n * @param {import(\"../canvas.js\").StrokeState} strokeState Stroke state.\n * @private\n */\n setContextStrokeState_(strokeState) {\n const context = this.context_;\n const contextStrokeState = this.contextStrokeState_;\n if (!contextStrokeState) {\n context.lineCap = strokeState.lineCap;\n if (context.setLineDash) {\n context.setLineDash(strokeState.lineDash);\n context.lineDashOffset = strokeState.lineDashOffset;\n }\n context.lineJoin = strokeState.lineJoin;\n context.lineWidth = strokeState.lineWidth;\n context.miterLimit = strokeState.miterLimit;\n context.strokeStyle = strokeState.strokeStyle;\n this.contextStrokeState_ = {\n lineCap: strokeState.lineCap,\n lineDash: strokeState.lineDash,\n lineDashOffset: strokeState.lineDashOffset,\n lineJoin: strokeState.lineJoin,\n lineWidth: strokeState.lineWidth,\n miterLimit: strokeState.miterLimit,\n strokeStyle: strokeState.strokeStyle\n };\n } else {\n if (contextStrokeState.lineCap != strokeState.lineCap) {\n contextStrokeState.lineCap = strokeState.lineCap;\n context.lineCap = strokeState.lineCap;\n }\n if (context.setLineDash) {\n if (!equals(contextStrokeState.lineDash, strokeState.lineDash)) {\n context.setLineDash(contextStrokeState.lineDash = strokeState.lineDash);\n }\n if (contextStrokeState.lineDashOffset != strokeState.lineDashOffset) {\n contextStrokeState.lineDashOffset = strokeState.lineDashOffset;\n context.lineDashOffset = strokeState.lineDashOffset;\n }\n }\n if (contextStrokeState.lineJoin != strokeState.lineJoin) {\n contextStrokeState.lineJoin = strokeState.lineJoin;\n context.lineJoin = strokeState.lineJoin;\n }\n if (contextStrokeState.lineWidth != strokeState.lineWidth) {\n contextStrokeState.lineWidth = strokeState.lineWidth;\n context.lineWidth = strokeState.lineWidth;\n }\n if (contextStrokeState.miterLimit != strokeState.miterLimit) {\n contextStrokeState.miterLimit = strokeState.miterLimit;\n context.miterLimit = strokeState.miterLimit;\n }\n if (contextStrokeState.strokeStyle != strokeState.strokeStyle) {\n contextStrokeState.strokeStyle = strokeState.strokeStyle;\n context.strokeStyle = strokeState.strokeStyle;\n }\n }\n }\n\n /**\n * @param {import(\"../canvas.js\").TextState} textState Text state.\n * @private\n */\n setContextTextState_(textState) {\n const context = this.context_;\n const contextTextState = this.contextTextState_;\n const textAlign = textState.textAlign ?\n textState.textAlign : defaultTextAlign;\n if (!contextTextState) {\n context.font = textState.font;\n context.textAlign = /** @type {CanvasTextAlign} */ (textAlign);\n context.textBaseline = /** @type {CanvasTextBaseline} */ (textState.textBaseline);\n this.contextTextState_ = {\n font: textState.font,\n textAlign: textAlign,\n textBaseline: textState.textBaseline\n };\n } else {\n if (contextTextState.font != textState.font) {\n contextTextState.font = textState.font;\n context.font = textState.font;\n }\n if (contextTextState.textAlign != textAlign) {\n contextTextState.textAlign = /** @type {CanvasTextAlign} */ (textAlign);\n context.textAlign = /** @type {CanvasTextAlign} */ (textAlign);\n }\n if (contextTextState.textBaseline != textState.textBaseline) {\n contextTextState.textBaseline = /** @type {CanvasTextBaseline} */ (textState.textBaseline);\n context.textBaseline = /** @type {CanvasTextBaseline} */ (textState.textBaseline);\n }\n }\n }\n\n /**\n * Set the fill and stroke style for subsequent draw operations. To clear\n * either fill or stroke styles, pass null for the appropriate parameter.\n *\n * @param {import(\"../../style/Fill.js\").default} fillStyle Fill style.\n * @param {import(\"../../style/Stroke.js\").default} strokeStyle Stroke style.\n * @override\n */\n setFillStrokeStyle(fillStyle, strokeStyle) {\n if (!fillStyle) {\n this.fillState_ = null;\n } else {\n const fillStyleColor = fillStyle.getColor();\n this.fillState_ = {\n fillStyle: asColorLike(fillStyleColor ?\n fillStyleColor : defaultFillStyle)\n };\n }\n if (!strokeStyle) {\n this.strokeState_ = null;\n } else {\n const strokeStyleColor = strokeStyle.getColor();\n const strokeStyleLineCap = strokeStyle.getLineCap();\n const strokeStyleLineDash = strokeStyle.getLineDash();\n const strokeStyleLineDashOffset = strokeStyle.getLineDashOffset();\n const strokeStyleLineJoin = strokeStyle.getLineJoin();\n const strokeStyleWidth = strokeStyle.getWidth();\n const strokeStyleMiterLimit = strokeStyle.getMiterLimit();\n this.strokeState_ = {\n lineCap: strokeStyleLineCap !== undefined ?\n strokeStyleLineCap : defaultLineCap,\n lineDash: strokeStyleLineDash ?\n strokeStyleLineDash : defaultLineDash,\n lineDashOffset: strokeStyleLineDashOffset ?\n strokeStyleLineDashOffset : defaultLineDashOffset,\n lineJoin: strokeStyleLineJoin !== undefined ?\n strokeStyleLineJoin : defaultLineJoin,\n lineWidth: this.pixelRatio_ * (strokeStyleWidth !== undefined ?\n strokeStyleWidth : defaultLineWidth),\n miterLimit: strokeStyleMiterLimit !== undefined ?\n strokeStyleMiterLimit : defaultMiterLimit,\n strokeStyle: asColorLike(strokeStyleColor ?\n strokeStyleColor : defaultStrokeStyle)\n };\n }\n }\n\n /**\n * Set the image style for subsequent draw operations. Pass null to remove\n * the image style.\n *\n * @param {import(\"../../style/Image.js\").default} imageStyle Image style.\n * @override\n */\n setImageStyle(imageStyle) {\n if (!imageStyle) {\n this.image_ = null;\n } else {\n const imageAnchor = imageStyle.getAnchor();\n // FIXME pixel ratio\n const imageImage = imageStyle.getImage(1);\n const imageOrigin = imageStyle.getOrigin();\n const imageSize = imageStyle.getSize();\n this.imageAnchorX_ = imageAnchor[0];\n this.imageAnchorY_ = imageAnchor[1];\n this.imageHeight_ = imageSize[1];\n this.image_ = imageImage;\n this.imageOpacity_ = imageStyle.getOpacity();\n this.imageOriginX_ = imageOrigin[0];\n this.imageOriginY_ = imageOrigin[1];\n this.imageRotateWithView_ = imageStyle.getRotateWithView();\n this.imageRotation_ = imageStyle.getRotation();\n this.imageScale_ = imageStyle.getScale() * this.pixelRatio_;\n this.imageWidth_ = imageSize[0];\n }\n }\n\n /**\n * Set the text style for subsequent draw operations. Pass null to\n * remove the text style.\n *\n * @param {import(\"../../style/Text.js\").default} textStyle Text style.\n * @override\n */\n setTextStyle(textStyle) {\n if (!textStyle) {\n this.text_ = '';\n } else {\n const textFillStyle = textStyle.getFill();\n if (!textFillStyle) {\n this.textFillState_ = null;\n } else {\n const textFillStyleColor = textFillStyle.getColor();\n this.textFillState_ = {\n fillStyle: asColorLike(textFillStyleColor ?\n textFillStyleColor : defaultFillStyle)\n };\n }\n const textStrokeStyle = textStyle.getStroke();\n if (!textStrokeStyle) {\n this.textStrokeState_ = null;\n } else {\n const textStrokeStyleColor = textStrokeStyle.getColor();\n const textStrokeStyleLineCap = textStrokeStyle.getLineCap();\n const textStrokeStyleLineDash = textStrokeStyle.getLineDash();\n const textStrokeStyleLineDashOffset = textStrokeStyle.getLineDashOffset();\n const textStrokeStyleLineJoin = textStrokeStyle.getLineJoin();\n const textStrokeStyleWidth = textStrokeStyle.getWidth();\n const textStrokeStyleMiterLimit = textStrokeStyle.getMiterLimit();\n this.textStrokeState_ = {\n lineCap: textStrokeStyleLineCap !== undefined ?\n textStrokeStyleLineCap : defaultLineCap,\n lineDash: textStrokeStyleLineDash ?\n textStrokeStyleLineDash : defaultLineDash,\n lineDashOffset: textStrokeStyleLineDashOffset ?\n textStrokeStyleLineDashOffset : defaultLineDashOffset,\n lineJoin: textStrokeStyleLineJoin !== undefined ?\n textStrokeStyleLineJoin : defaultLineJoin,\n lineWidth: textStrokeStyleWidth !== undefined ?\n textStrokeStyleWidth : defaultLineWidth,\n miterLimit: textStrokeStyleMiterLimit !== undefined ?\n textStrokeStyleMiterLimit : defaultMiterLimit,\n strokeStyle: asColorLike(textStrokeStyleColor ?\n textStrokeStyleColor : defaultStrokeStyle)\n };\n }\n const textFont = textStyle.getFont();\n const textOffsetX = textStyle.getOffsetX();\n const textOffsetY = textStyle.getOffsetY();\n const textRotateWithView = textStyle.getRotateWithView();\n const textRotation = textStyle.getRotation();\n const textScale = textStyle.getScale();\n const textText = textStyle.getText();\n const textTextAlign = textStyle.getTextAlign();\n const textTextBaseline = textStyle.getTextBaseline();\n this.textState_ = {\n font: textFont !== undefined ?\n textFont : defaultFont,\n textAlign: textTextAlign !== undefined ?\n textTextAlign : defaultTextAlign,\n textBaseline: textTextBaseline !== undefined ?\n textTextBaseline : defaultTextBaseline\n };\n this.text_ = textText !== undefined ? textText : '';\n this.textOffsetX_ =\n textOffsetX !== undefined ? (this.pixelRatio_ * textOffsetX) : 0;\n this.textOffsetY_ =\n textOffsetY !== undefined ? (this.pixelRatio_ * textOffsetY) : 0;\n this.textRotateWithView_ = textRotateWithView !== undefined ? textRotateWithView : false;\n this.textRotation_ = textRotation !== undefined ? textRotation : 0;\n this.textScale_ = this.pixelRatio_ * (textScale !== undefined ?\n textScale : 1);\n }\n }\n}\n\n\nexport default CanvasImmediateRenderer;\n","/**\n * @module ol/ImageState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n ERROR: 3,\n EMPTY: 4\n};\n","/**\n * @module ol/render/canvas/BuilderType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n CIRCLE: 'Circle',\n DEFAULT: 'Default',\n IMAGE: 'Image',\n LINE_STRING: 'LineString',\n POLYGON: 'Polygon',\n TEXT: 'Text'\n};\n","/**\n * @module ol/renderer/vector\n */\nimport {getUid} from '../util.js';\nimport ImageState from '../ImageState.js';\nimport GeometryType from '../geom/GeometryType.js';\nimport BuilderType from '../render/canvas/BuilderType.js';\n\n\n/**\n * Tolerance for geometry simplification in device pixels.\n * @type {number}\n */\nconst SIMPLIFY_TOLERANCE = 0.5;\n\n\n/**\n * @const\n * @type {Object}\n */\nconst GEOMETRY_RENDERERS = {\n 'Point': renderPointGeometry,\n 'LineString': renderLineStringGeometry,\n 'Polygon': renderPolygonGeometry,\n 'MultiPoint': renderMultiPointGeometry,\n 'MultiLineString': renderMultiLineStringGeometry,\n 'MultiPolygon': renderMultiPolygonGeometry,\n 'GeometryCollection': renderGeometryCollectionGeometry,\n 'Circle': renderCircleGeometry\n};\n\n\n/**\n * @param {import(\"../Feature.js\").FeatureLike} feature1 Feature 1.\n * @param {import(\"../Feature.js\").FeatureLike} feature2 Feature 2.\n * @return {number} Order.\n */\nexport function defaultOrder(feature1, feature2) {\n return parseInt(getUid(feature1), 10) - parseInt(getUid(feature2), 10);\n}\n\n\n/**\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Squared pixel tolerance.\n */\nexport function getSquaredTolerance(resolution, pixelRatio) {\n const tolerance = getTolerance(resolution, pixelRatio);\n return tolerance * tolerance;\n}\n\n\n/**\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Pixel tolerance.\n */\nexport function getTolerance(resolution, pixelRatio) {\n return SIMPLIFY_TOLERANCE * resolution / pixelRatio;\n}\n\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Builder group.\n * @param {import(\"../geom/Circle.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\nfunction renderCircleGeometry(builderGroup, geometry, style, feature) {\n const fillStyle = style.getFill();\n const strokeStyle = style.getStroke();\n if (fillStyle || strokeStyle) {\n const circleReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.CIRCLE);\n circleReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n circleReplay.drawCircle(geometry, feature);\n }\n const textStyle = style.getText();\n if (textStyle) {\n const textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));\n textReplay.drawText(geometry, feature);\n }\n}\n\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Transform from user to view projection.\n * @return {boolean} `true` if style is loading.\n * @template T\n */\nexport function renderFeature(replayGroup, feature, style, squaredTolerance, listener, opt_transform) {\n let loading = false;\n const imageStyle = style.getImage();\n if (imageStyle) {\n let imageState = imageStyle.getImageState();\n if (imageState == ImageState.LOADED || imageState == ImageState.ERROR) {\n imageStyle.unlistenImageChange(listener);\n } else {\n if (imageState == ImageState.IDLE) {\n imageStyle.load();\n }\n imageState = imageStyle.getImageState();\n imageStyle.listenImageChange(listener);\n loading = true;\n }\n }\n renderFeatureInternal(replayGroup, feature, style, squaredTolerance, opt_transform);\n\n return loading;\n}\n\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n */\nfunction renderFeatureInternal(replayGroup, feature, style, squaredTolerance, opt_transform) {\n const geometry = style.getGeometryFunction()(feature);\n if (!geometry) {\n return;\n }\n const simplifiedGeometry = geometry.simplifyTransformed(squaredTolerance, opt_transform);\n const renderer = style.getRenderer();\n if (renderer) {\n renderGeometry(replayGroup, simplifiedGeometry, style, feature);\n } else {\n const geometryRenderer = GEOMETRY_RENDERERS[simplifiedGeometry.getType()];\n geometryRenderer(replayGroup, simplifiedGeometry, style, feature);\n }\n}\n\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../geom/Geometry.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderGeometry(replayGroup, geometry, style, feature) {\n if (geometry.getType() == GeometryType.GEOMETRY_COLLECTION) {\n const geometries = /** @type {import(\"../geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (let i = 0, ii = geometries.length; i < ii; ++i) {\n renderGeometry(replayGroup, geometries[i], style, feature);\n }\n return;\n }\n const replay = replayGroup.getBuilder(style.getZIndex(), BuilderType.DEFAULT);\n replay.drawCustom(/** @type {import(\"../geom/SimpleGeometry.js\").default} */ (geometry), feature, style.getRenderer());\n}\n\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} replayGroup Replay group.\n * @param {import(\"../geom/GeometryCollection.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\nfunction renderGeometryCollectionGeometry(replayGroup, geometry, style, feature) {\n const geometries = geometry.getGeometriesArray();\n let i, ii;\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n const geometryRenderer =\n GEOMETRY_RENDERERS[geometries[i].getType()];\n geometryRenderer(replayGroup, geometries[i], style, feature);\n }\n}\n\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/LineString.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderLineStringGeometry(builderGroup, geometry, style, feature) {\n const strokeStyle = style.getStroke();\n if (strokeStyle) {\n const lineStringReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.LINE_STRING);\n lineStringReplay.setFillStrokeStyle(null, strokeStyle);\n lineStringReplay.drawLineString(geometry, feature);\n }\n const textStyle = style.getText();\n if (textStyle) {\n const textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));\n textReplay.drawText(geometry, feature);\n }\n}\n\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/MultiLineString.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderMultiLineStringGeometry(builderGroup, geometry, style, feature) {\n const strokeStyle = style.getStroke();\n if (strokeStyle) {\n const lineStringReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.LINE_STRING);\n lineStringReplay.setFillStrokeStyle(null, strokeStyle);\n lineStringReplay.drawMultiLineString(geometry, feature);\n }\n const textStyle = style.getText();\n if (textStyle) {\n const textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));\n textReplay.drawText(geometry, feature);\n }\n}\n\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").default} feature Feature.\n */\nfunction renderMultiPolygonGeometry(builderGroup, geometry, style, feature) {\n const fillStyle = style.getFill();\n const strokeStyle = style.getStroke();\n if (strokeStyle || fillStyle) {\n const polygonReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.POLYGON);\n polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n polygonReplay.drawMultiPolygon(geometry, feature);\n }\n const textStyle = style.getText();\n if (textStyle) {\n const textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));\n textReplay.drawText(geometry, feature);\n }\n}\n\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/Point.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderPointGeometry(builderGroup, geometry, style, feature) {\n const imageStyle = style.getImage();\n if (imageStyle) {\n if (imageStyle.getImageState() != ImageState.LOADED) {\n return;\n }\n const imageReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.IMAGE);\n imageReplay.setImageStyle(imageStyle, builderGroup.addDeclutter(false));\n imageReplay.drawPoint(geometry, feature);\n }\n const textStyle = style.getText();\n if (textStyle) {\n const textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(!!imageStyle));\n textReplay.drawText(geometry, feature);\n }\n}\n\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/MultiPoint.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderMultiPointGeometry(builderGroup, geometry, style, feature) {\n const imageStyle = style.getImage();\n if (imageStyle) {\n if (imageStyle.getImageState() != ImageState.LOADED) {\n return;\n }\n const imageReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.IMAGE);\n imageReplay.setImageStyle(imageStyle, builderGroup.addDeclutter(false));\n imageReplay.drawMultiPoint(geometry, feature);\n }\n const textStyle = style.getText();\n if (textStyle) {\n const textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(!!imageStyle));\n textReplay.drawText(geometry, feature);\n }\n}\n\n\n/**\n * @param {import(\"../render/canvas/BuilderGroup.js\").default} builderGroup Replay group.\n * @param {import(\"../geom/Polygon.js\").default|import(\"../render/Feature.js\").default} geometry Geometry.\n * @param {import(\"../style/Style.js\").default} style Style.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n */\nfunction renderPolygonGeometry(builderGroup, geometry, style, feature) {\n const fillStyle = style.getFill();\n const strokeStyle = style.getStroke();\n if (fillStyle || strokeStyle) {\n const polygonReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.POLYGON);\n polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle);\n polygonReplay.drawPolygon(geometry, feature);\n }\n const textStyle = style.getText();\n if (textStyle) {\n const textReplay = builderGroup.getBuilder(style.getZIndex(), BuilderType.TEXT);\n textReplay.setTextStyle(textStyle, builderGroup.addDeclutter(false));\n textReplay.drawText(geometry, feature);\n }\n}\n","/**\n * @module ol/render\n */\nimport {DEVICE_PIXEL_RATIO} from './has.js';\nimport {\n apply as applyTransform,\n create as createTransform,\n multiply as multiplyTransform,\n scale as scaleTransform\n} from './transform.js';\nimport CanvasImmediateRenderer from './render/canvas/Immediate.js';\nimport {getSquaredTolerance} from './renderer/vector.js';\nimport {getUserProjection, getTransformFromProjections} from './proj.js';\n\n\n/**\n * @typedef {Object} State\n * @property {CanvasRenderingContext2D} context Canvas context that the layer is being rendered to.\n * @property {import(\"./Feature.js\").FeatureLike} feature\n * @property {import(\"./geom/SimpleGeometry.js\").default} geometry\n * @property {number} pixelRatio Pixel ratio used by the layer renderer.\n * @property {number} resolution Resolution that the render batch was created and optimized for.\n * This is not the view's resolution that is being rendered.\n * @property {number} rotation Rotation of the rendered layer in radians.\n */\n\n\n/**\n * A function to be used when sorting features before rendering.\n * It takes two instances of {@link module:ol/Feature} or\n * {@link module:ol/render/Feature} and returns a `{number}`.\n *\n * @typedef {function(import(\"./Feature.js\").FeatureLike, import(\"./Feature.js\").FeatureLike):number} OrderFunction\n */\n\n\n/**\n * @typedef {Object} ToContextOptions\n * @property {import(\"./size.js\").Size} [size] Desired size of the canvas in css\n * pixels. When provided, both canvas and css size will be set according to the\n * `pixelRatio`. If not provided, the current canvas and css sizes will not be\n * altered.\n * @property {number} [pixelRatio=window.devicePixelRatio] Pixel ratio (canvas\n * pixel to css pixel ratio) for the canvas.\n */\n\n\n/**\n * Binds a Canvas Immediate API to a canvas context, to allow drawing geometries\n * to the context's canvas.\n *\n * The units for geometry coordinates are css pixels relative to the top left\n * corner of the canvas element.\n * ```js\n * import {toContext} from 'ol/render';\n * import Fill from 'ol/style/Fill';\n * import Polygon from 'ol/geom/Polygon';\n *\n * var canvas = document.createElement('canvas');\n * var render = toContext(canvas.getContext('2d'),\n * { size: [100, 100] });\n * render.setFillStrokeStyle(new Fill({ color: blue }));\n * render.drawPolygon(\n * new Polygon([[[0, 0], [100, 100], [100, 0], [0, 0]]]));\n * ```\n *\n * @param {CanvasRenderingContext2D} context Canvas context.\n * @param {ToContextOptions=} opt_options Options.\n * @return {CanvasImmediateRenderer} Canvas Immediate.\n * @api\n */\nexport function toContext(context, opt_options) {\n const canvas = context.canvas;\n const options = opt_options ? opt_options : {};\n const pixelRatio = options.pixelRatio || DEVICE_PIXEL_RATIO;\n const size = options.size;\n if (size) {\n canvas.width = size[0] * pixelRatio;\n canvas.height = size[1] * pixelRatio;\n canvas.style.width = size[0] + 'px';\n canvas.style.height = size[1] + 'px';\n }\n const extent = [0, 0, canvas.width, canvas.height];\n const transform = scaleTransform(createTransform(), pixelRatio, pixelRatio);\n return new CanvasImmediateRenderer(context, pixelRatio, extent, transform, 0);\n}\n\n/**\n * Gets a vector context for drawing to the event's canvas.\n * @param {import(\"./render/Event.js\").default} event Render event.\n * @returns {CanvasImmediateRenderer} Vector context.\n * @api\n */\nexport function getVectorContext(event) {\n const frameState = event.frameState;\n const transform = multiplyTransform(event.inversePixelTransform.slice(), frameState.coordinateToPixelTransform);\n const squaredTolerance = getSquaredTolerance(frameState.viewState.resolution, frameState.pixelRatio);\n let userTransform;\n const userProjection = getUserProjection();\n if (userProjection) {\n userTransform = getTransformFromProjections(userProjection, frameState.viewState.projection);\n }\n return new CanvasImmediateRenderer(\n event.context, frameState.pixelRatio, frameState.extent, transform,\n frameState.viewState.rotation, squaredTolerance, userTransform);\n}\n\n/**\n * Gets the pixel of the event's canvas context from the map viewport's CSS pixel.\n * @param {import(\"./render/Event.js\").default} event Render event.\n * @param {import(\"./pixel.js\").Pixel} pixel CSS pixel relative to the top-left\n * corner of the map viewport.\n * @returns {import(\"./pixel.js\").Pixel} Pixel on the event's canvas context.\n * @api\n */\nexport function getRenderPixel(event, pixel) {\n const result = pixel.slice(0);\n applyTransform(event.inversePixelTransform.slice(), result);\n return result;\n}\n\n/**\n * @param {import(\"./PluggableMap.js\").FrameState} frameState Frame state.\n * @param {?} declutterTree Declutter tree.\n * @returns {?} Declutter tree.\n */\nexport function renderDeclutterItems(frameState, declutterTree) {\n if (declutterTree) {\n declutterTree.clear();\n }\n const items = frameState.declutterItems;\n for (let z = items.length - 1; z >= 0; --z) {\n const item = items[z];\n const zIndexItems = item.items;\n for (let i = 0, ii = zIndexItems.length; i < ii; i += 3) {\n declutterTree = zIndexItems[i].renderDeclutter(zIndexItems[i + 1], zIndexItems[i + 2], item.opacity, declutterTree);\n }\n }\n items.length = 0;\n return declutterTree;\n}\n","/**\n * @module ol/renderer/Map\n */\nimport {abstract} from '../util.js';\nimport Disposable from '../Disposable.js';\nimport {getWidth} from '../extent.js';\nimport {TRUE} from '../functions.js';\nimport {inView} from '../layer/Layer.js';\nimport {shared as iconImageCache} from '../style/IconImageCache.js';\nimport {compose as composeTransform, makeInverse} from '../transform.js';\nimport {renderDeclutterItems} from '../render.js';\n\n/**\n * @abstract\n */\nclass MapRenderer extends Disposable {\n\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n constructor(map) {\n super();\n\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n this.map_ = map;\n\n /**\n * @private\n */\n this.declutterTree_ = null;\n\n }\n\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n dispatchRenderEvent(type, frameState) {\n abstract();\n }\n\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @protected\n */\n calculateMatrices2D(frameState) {\n const viewState = frameState.viewState;\n const coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n const pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n\n composeTransform(coordinateToPixelTransform,\n frameState.size[0] / 2, frameState.size[1] / 2,\n 1 / viewState.resolution, -1 / viewState.resolution,\n -viewState.rotation,\n -viewState.center[0], -viewState.center[1]);\n\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n }\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: S, import(\"../Feature.js\").FeatureLike,\n * import(\"../layer/Layer.js\").default): T} callback Feature callback.\n * @param {S} thisArg Value to use as `this` when executing `callback`.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n forEachFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n callback,\n thisArg,\n layerFilter,\n thisArg2\n ) {\n let result;\n const viewState = frameState.viewState;\n\n /**\n * @param {boolean} managed Managed layer.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @return {?} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer) {\n return callback.call(thisArg, feature, managed ? layer : null);\n }\n\n const projection = viewState.projection;\n\n let translatedCoordinate = coordinate;\n const offsets = [[0, 0]];\n if (projection.canWrapX()) {\n const projectionExtent = projection.getExtent();\n const worldWidth = getWidth(projectionExtent);\n const x = coordinate[0];\n if (x < projectionExtent[0] || x > projectionExtent[2]) {\n const worldsAway = Math.ceil((projectionExtent[0] - x) / worldWidth);\n translatedCoordinate = [x + worldWidth * worldsAway, coordinate[1]];\n }\n if (checkWrapped) {\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n }\n\n const layerStates = frameState.layerStatesArray;\n const numLayers = layerStates.length;\n let declutteredFeatures;\n if (this.declutterTree_) {\n declutteredFeatures = this.declutterTree_.all().map(function(entry) {\n return entry.value;\n });\n }\n\n const tmpCoord = [];\n for (let i = 0; i < offsets.length; i++) {\n for (let j = numLayers - 1; j >= 0; --j) {\n const layerState = layerStates[j];\n const layer = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer);\n if (layer.hasRenderer() && inView(layerState, viewState) && layerFilter.call(thisArg2, layer)) {\n const layerRenderer = layer.getRenderer();\n const source = layer.getSource();\n if (layerRenderer && source) {\n const coordinates = source.getWrapX() ? translatedCoordinate : coordinate;\n const callback = forEachFeatureAtCoordinate.bind(null, layerState.managed);\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(\n tmpCoord,\n frameState, hitTolerance, callback, declutteredFeatures);\n }\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n }\n\n /**\n * @abstract\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(this: S, import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n forEachLayerAtPixel(pixel, frameState, hitTolerance, callback, layerFilter) {\n return abstract();\n }\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n * @return {boolean} Is there a feature at the given coordinate?\n * @template U\n */\n hasFeatureAtCoordinate(coordinate, frameState, hitTolerance, checkWrapped, layerFilter, thisArg) {\n const hasFeature = this.forEachFeatureAtCoordinate(\n coordinate, frameState, hitTolerance, checkWrapped, TRUE, this, layerFilter, thisArg);\n\n return hasFeature !== undefined;\n }\n\n /**\n * @return {import(\"../PluggableMap.js\").default} Map.\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Render.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n renderFrame(frameState) {\n this.declutterTree_ = renderDeclutterItems(frameState, this.declutterTree_);\n }\n\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @protected\n */\n scheduleExpireIconCache(frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n }\n}\n\n\n/**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\n\nexport default MapRenderer;\n","/**\n * @module ol/renderer/Composite\n */\nimport {CLASS_UNSELECTABLE} from '../css.js';\nimport {inView} from '../layer/Layer.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport MapRenderer from './Map.js';\nimport SourceState from '../source/State.js';\nimport {replaceChildren} from '../dom.js';\nimport {labelCache} from '../render/canvas.js';\nimport EventType from '../events/EventType.js';\nimport {listen, unlistenByKey} from '../events.js';\n\n\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nclass CompositeMapRenderer extends MapRenderer {\n\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n constructor(map) {\n super(map);\n\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n this.labelCacheKey_ = listen(labelCache, EventType.CLEAR, map.redrawText.bind(map));\n\n /**\n * @private\n * @type {HTMLDivElement}\n */\n this.element_ = document.createElement('div');\n const style = this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n\n this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n\n const container = map.getViewport();\n container.insertBefore(this.element_, container.firstChild || null);\n\n /**\n * @private\n * @type {Array}\n */\n this.children_ = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = true;\n }\n\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n dispatchRenderEvent(type, frameState) {\n const map = this.getMap();\n if (map.hasListener(type)) {\n const event = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event);\n }\n }\n\n disposeInternal() {\n unlistenByKey(this.labelCacheKey_);\n super.disposeInternal();\n }\n\n /**\n * @inheritDoc\n */\n renderFrame(frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n\n const layerStatesArray = frameState.layerStatesArray.sort(function(a, b) {\n return a.zIndex - b.zIndex;\n });\n const viewState = frameState.viewState;\n\n this.children_.length = 0;\n let previousElement = null;\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n if (!inView(layerState, viewState) ||\n (layerState.sourceState != SourceState.READY && layerState.sourceState != SourceState.UNDEFINED)) {\n continue;\n }\n\n const layer = layerState.layer;\n const element = layer.render(frameState, previousElement);\n if (!element) {\n continue;\n }\n if (element !== previousElement) {\n this.children_.push(element);\n previousElement = element;\n }\n }\n super.renderFrame(frameState);\n\n replaceChildren(this.element_, this.children_);\n\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n\n this.scheduleExpireIconCache(frameState);\n }\n\n /**\n * @inheritDoc\n */\n forEachLayerAtPixel(pixel, frameState, hitTolerance, callback, layerFilter) {\n const viewState = frameState.viewState;\n\n const layerStates = frameState.layerStatesArray;\n const numLayers = layerStates.length;\n\n for (let i = numLayers - 1; i >= 0; --i) {\n const layerState = layerStates[i];\n const layer = layerState.layer;\n if (layer.hasRenderer() && inView(layerState, viewState) && layerFilter(layer)) {\n const layerRenderer = layer.getRenderer();\n const data = layerRenderer.getDataAtPixel(pixel, frameState, hitTolerance);\n if (data) {\n const result = callback(layer, data);\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n }\n\n}\n\n\nexport default CompositeMapRenderer;\n","/**\n * @module ol/OverlayPositioning\n */\n\n/**\n * Overlay position: `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, `'top-right'`\n * @enum {string}\n */\nexport default {\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_CENTER: 'bottom-center',\n BOTTOM_RIGHT: 'bottom-right',\n CENTER_LEFT: 'center-left',\n CENTER_CENTER: 'center-center',\n CENTER_RIGHT: 'center-right',\n TOP_LEFT: 'top-left',\n TOP_CENTER: 'top-center',\n TOP_RIGHT: 'top-right'\n};\n","/**\n * @module ol/Overlay\n */\nimport MapEventType from './MapEventType.js';\nimport BaseObject, {getChangeEventType} from './Object.js';\nimport OverlayPositioning from './OverlayPositioning.js';\nimport {CLASS_SELECTABLE} from './css.js';\nimport {removeNode, removeChildren, outerWidth, outerHeight} from './dom.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {containsExtent} from './extent.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {number|string} [id] Set the overlay id. The overlay id can be used\n * with the {@link module:ol/Map~Map#getOverlayById} method.\n * @property {HTMLElement} [element] The overlay element.\n * @property {Array} [offset=[0, 0]] Offsets in pixels used when positioning\n * the overlay. The first element in the\n * array is the horizontal offset. A positive value shifts the overlay right.\n * The second element in the array is the vertical offset. A positive value\n * shifts the overlay down.\n * @property {import(\"./coordinate.js\").Coordinate} [position] The overlay position\n * in map projection.\n * @property {OverlayPositioning} [positioning='top-left'] Defines how\n * the overlay is actually positioned with respect to its `position` property.\n * Possible values are `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, and `'top-right'`.\n * @property {boolean} [stopEvent=true] Whether event propagation to the map\n * viewport should be stopped. If `true` the overlay is placed in the same\n * container as that of the controls (CSS class name\n * `ol-overlaycontainer-stopevent`); if `false` it is placed in the container\n * with CSS class name specified by the `className` property.\n * @property {boolean} [insertFirst=true] Whether the overlay is inserted first\n * in the overlay container, or appended. If the overlay is placed in the same\n * container as that of the controls (see the `stopEvent` option) you will\n * probably set `insertFirst` to `true` so the overlay is displayed below the\n * controls.\n * @property {boolean} [autoPan=false] If set to `true` the map is panned when\n * calling `setPosition`, so that the overlay is entirely visible in the current\n * viewport.\n * @property {PanOptions} [autoPanAnimation] The\n * animation options used to pan the overlay into view. This animation is only\n * used when `autoPan` is enabled. A `duration` and `easing` may be provided to\n * customize the animation.\n * @property {number} [autoPanMargin=20] The margin (in pixels) between the\n * overlay and the borders of the map when autopanning.\n * @property {string} [className='ol-overlay-container ol-selectable'] CSS class\n * name.\n */\n\n\n/**\n * @typedef {Object} PanOptions\n * @property {number} [duration=1000] The duration of the animation in\n * milliseconds.\n * @property {function(number):number} [easing] The easing function to use. Can\n * be one from {@link module:ol/easing} or a custom function.\n * Default is {@link module:ol/easing~inAndOut}.\n */\n\n\n/**\n * @enum {string}\n * @protected\n */\nconst Property = {\n ELEMENT: 'element',\n MAP: 'map',\n OFFSET: 'offset',\n POSITION: 'position',\n POSITIONING: 'positioning'\n};\n\n\n/**\n * @classdesc\n * An element to be displayed over the map and attached to a single map\n * location. Like {@link module:ol/control/Control~Control}, Overlays are\n * visible widgets. Unlike Controls, they are not in a fixed position on the\n * screen, but are tied to a geographical coordinate, so panning the map will\n * move an Overlay but not a Control.\n *\n * Example:\n *\n * import Overlay from 'ol/Overlay';\n *\n * var popup = new Overlay({\n * element: document.getElementById('popup')\n * });\n * popup.setPosition(coordinate);\n * map.addOverlay(popup);\n *\n * @api\n */\nclass Overlay extends BaseObject {\n\n /**\n * @param {Options} options Overlay options.\n */\n constructor(options) {\n\n super();\n\n /**\n * @protected\n * @type {Options}\n */\n this.options = options;\n\n /**\n * @protected\n * @type {number|string|undefined}\n */\n this.id = options.id;\n\n /**\n * @protected\n * @type {boolean}\n */\n this.insertFirst = options.insertFirst !== undefined ?\n options.insertFirst : true;\n\n /**\n * @protected\n * @type {boolean}\n */\n this.stopEvent = options.stopEvent !== undefined ? options.stopEvent : true;\n\n /**\n * @protected\n * @type {HTMLElement}\n */\n this.element = document.createElement('div');\n this.element.className = options.className !== undefined ?\n options.className : 'ol-overlay-container ' + CLASS_SELECTABLE;\n this.element.style.position = 'absolute';\n\n /**\n * @protected\n * @type {boolean}\n */\n this.autoPan = options.autoPan !== undefined ? options.autoPan : false;\n\n /**\n * @protected\n * @type {PanOptions}\n */\n this.autoPanAnimation = options.autoPanAnimation || /** @type {PanOptions} */ ({});\n\n /**\n * @protected\n * @type {number}\n */\n this.autoPanMargin = options.autoPanMargin !== undefined ?\n options.autoPanMargin : 20;\n\n /**\n * @protected\n * @type {{bottom_: string,\n * left_: string,\n * right_: string,\n * top_: string,\n * visible: boolean}}\n */\n this.rendered = {\n bottom_: '',\n left_: '',\n right_: '',\n top_: '',\n visible: true\n };\n\n /**\n * @protected\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.mapPostrenderListenerKey = null;\n\n this.addEventListener(getChangeEventType(Property.ELEMENT), this.handleElementChanged);\n this.addEventListener(getChangeEventType(Property.MAP), this.handleMapChanged);\n this.addEventListener(getChangeEventType(Property.OFFSET), this.handleOffsetChanged);\n this.addEventListener(getChangeEventType(Property.POSITION), this.handlePositionChanged);\n this.addEventListener(getChangeEventType(Property.POSITIONING), this.handlePositioningChanged);\n\n if (options.element !== undefined) {\n this.setElement(options.element);\n }\n\n this.setOffset(options.offset !== undefined ? options.offset : [0, 0]);\n\n this.setPositioning(options.positioning !== undefined ?\n /** @type {OverlayPositioning} */ (options.positioning) :\n OverlayPositioning.TOP_LEFT);\n\n if (options.position !== undefined) {\n this.setPosition(options.position);\n }\n\n }\n\n /**\n * Get the DOM element of this overlay.\n * @return {HTMLElement|undefined} The Element containing the overlay.\n * @observable\n * @api\n */\n getElement() {\n return /** @type {HTMLElement|undefined} */ (this.get(Property.ELEMENT));\n }\n\n /**\n * Get the overlay identifier which is set on constructor.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id;\n }\n\n /**\n * Get the map associated with this overlay.\n * @return {import(\"./PluggableMap.js\").default|undefined} The map that the\n * overlay is part of.\n * @observable\n * @api\n */\n getMap() {\n return (\n /** @type {import(\"./PluggableMap.js\").default|undefined} */ (this.get(Property.MAP))\n );\n }\n\n /**\n * Get the offset of this overlay.\n * @return {Array} The offset.\n * @observable\n * @api\n */\n getOffset() {\n return /** @type {Array} */ (this.get(Property.OFFSET));\n }\n\n /**\n * Get the current position of this overlay.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The spatial point that the overlay is\n * anchored at.\n * @observable\n * @api\n */\n getPosition() {\n return (\n /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(Property.POSITION))\n );\n }\n\n /**\n * Get the current positioning of this overlay.\n * @return {OverlayPositioning} How the overlay is positioned\n * relative to its point on the map.\n * @observable\n * @api\n */\n getPositioning() {\n return (\n /** @type {OverlayPositioning} */ (this.get(Property.POSITIONING))\n );\n }\n\n /**\n * @protected\n */\n handleElementChanged() {\n removeChildren(this.element);\n const element = this.getElement();\n if (element) {\n this.element.appendChild(element);\n }\n }\n\n /**\n * @protected\n */\n handleMapChanged() {\n if (this.mapPostrenderListenerKey) {\n removeNode(this.element);\n unlistenByKey(this.mapPostrenderListenerKey);\n this.mapPostrenderListenerKey = null;\n }\n const map = this.getMap();\n if (map) {\n this.mapPostrenderListenerKey = listen(map,\n MapEventType.POSTRENDER, this.render, this);\n this.updatePixelPosition();\n const container = this.stopEvent ?\n map.getOverlayContainerStopEvent() : map.getOverlayContainer();\n if (this.insertFirst) {\n container.insertBefore(this.element, container.childNodes[0] || null);\n } else {\n container.appendChild(this.element);\n }\n }\n }\n\n /**\n * @protected\n */\n render() {\n this.updatePixelPosition();\n }\n\n /**\n * @protected\n */\n handleOffsetChanged() {\n this.updatePixelPosition();\n }\n\n /**\n * @protected\n */\n handlePositionChanged() {\n this.updatePixelPosition();\n if (this.get(Property.POSITION) && this.autoPan) {\n this.panIntoView();\n }\n }\n\n /**\n * @protected\n */\n handlePositioningChanged() {\n this.updatePixelPosition();\n }\n\n /**\n * Set the DOM element to be associated with this overlay.\n * @param {HTMLElement|undefined} element The Element containing the overlay.\n * @observable\n * @api\n */\n setElement(element) {\n this.set(Property.ELEMENT, element);\n }\n\n /**\n * Set the map to be associated with this overlay.\n * @param {import(\"./PluggableMap.js\").default|undefined} map The map that the\n * overlay is part of.\n * @observable\n * @api\n */\n setMap(map) {\n this.set(Property.MAP, map);\n }\n\n /**\n * Set the offset for this overlay.\n * @param {Array} offset Offset.\n * @observable\n * @api\n */\n setOffset(offset) {\n this.set(Property.OFFSET, offset);\n }\n\n /**\n * Set the position for this overlay. If the position is `undefined` the\n * overlay is hidden.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} position The spatial point that the overlay\n * is anchored at.\n * @observable\n * @api\n */\n setPosition(position) {\n this.set(Property.POSITION, position);\n }\n\n /**\n * Pan the map so that the overlay is entirely visible in the current viewport\n * (if necessary).\n * @protected\n */\n panIntoView() {\n const map = this.getMap();\n\n if (!map || !map.getTargetElement()) {\n return;\n }\n\n const mapRect = this.getRect(map.getTargetElement(), map.getSize());\n const element = this.getElement();\n const overlayRect = this.getRect(element, [outerWidth(element), outerHeight(element)]);\n\n const margin = this.autoPanMargin;\n if (!containsExtent(mapRect, overlayRect)) {\n // the overlay is not completely inside the viewport, so pan the map\n const offsetLeft = overlayRect[0] - mapRect[0];\n const offsetRight = mapRect[2] - overlayRect[2];\n const offsetTop = overlayRect[1] - mapRect[1];\n const offsetBottom = mapRect[3] - overlayRect[3];\n\n const delta = [0, 0];\n if (offsetLeft < 0) {\n // move map to the left\n delta[0] = offsetLeft - margin;\n } else if (offsetRight < 0) {\n // move map to the right\n delta[0] = Math.abs(offsetRight) + margin;\n }\n if (offsetTop < 0) {\n // move map up\n delta[1] = offsetTop - margin;\n } else if (offsetBottom < 0) {\n // move map down\n delta[1] = Math.abs(offsetBottom) + margin;\n }\n\n if (delta[0] !== 0 || delta[1] !== 0) {\n const center = /** @type {import(\"./coordinate.js\").Coordinate} */ (map.getView().getCenterInternal());\n const centerPx = map.getPixelFromCoordinateInternal(center);\n const newCenterPx = [\n centerPx[0] + delta[0],\n centerPx[1] + delta[1]\n ];\n\n map.getView().animateInternal({\n center: map.getCoordinateFromPixelInternal(newCenterPx),\n duration: this.autoPanAnimation.duration,\n easing: this.autoPanAnimation.easing\n });\n }\n }\n }\n\n /**\n * Get the extent of an element relative to the document\n * @param {HTMLElement} element The element.\n * @param {import(\"./size.js\").Size} size The size of the element.\n * @return {import(\"./extent.js\").Extent} The extent.\n * @protected\n */\n getRect(element, size) {\n const box = element.getBoundingClientRect();\n const offsetX = box.left + window.pageXOffset;\n const offsetY = box.top + window.pageYOffset;\n return [\n offsetX,\n offsetY,\n offsetX + size[0],\n offsetY + size[1]\n ];\n }\n\n /**\n * Set the positioning for this overlay.\n * @param {OverlayPositioning} positioning how the overlay is\n * positioned relative to its point on the map.\n * @observable\n * @api\n */\n setPositioning(positioning) {\n this.set(Property.POSITIONING, positioning);\n }\n\n /**\n * Modify the visibility of the element.\n * @param {boolean} visible Element visibility.\n * @protected\n */\n setVisible(visible) {\n if (this.rendered.visible !== visible) {\n this.element.style.display = visible ? '' : 'none';\n this.rendered.visible = visible;\n }\n }\n\n /**\n * Update pixel position.\n * @protected\n */\n updatePixelPosition() {\n const map = this.getMap();\n const position = this.getPosition();\n if (!map || !map.isRendered() || !position) {\n this.setVisible(false);\n return;\n }\n\n const pixel = map.getPixelFromCoordinate(position);\n const mapSize = map.getSize();\n this.updateRenderedPosition(pixel, mapSize);\n }\n\n /**\n * @param {import(\"./pixel.js\").Pixel} pixel The pixel location.\n * @param {import(\"./size.js\").Size|undefined} mapSize The map size.\n * @protected\n */\n updateRenderedPosition(pixel, mapSize) {\n const style = this.element.style;\n const offset = this.getOffset();\n\n const positioning = this.getPositioning();\n\n this.setVisible(true);\n\n let offsetX = offset[0];\n let offsetY = offset[1];\n if (positioning == OverlayPositioning.BOTTOM_RIGHT ||\n positioning == OverlayPositioning.CENTER_RIGHT ||\n positioning == OverlayPositioning.TOP_RIGHT) {\n if (this.rendered.left_ !== '') {\n this.rendered.left_ = '';\n style.left = '';\n }\n const right = Math.round(mapSize[0] - pixel[0] - offsetX) + 'px';\n if (this.rendered.right_ != right) {\n this.rendered.right_ = right;\n style.right = right;\n }\n } else {\n if (this.rendered.right_ !== '') {\n this.rendered.right_ = '';\n style.right = '';\n }\n if (positioning == OverlayPositioning.BOTTOM_CENTER ||\n positioning == OverlayPositioning.CENTER_CENTER ||\n positioning == OverlayPositioning.TOP_CENTER) {\n offsetX -= this.element.offsetWidth / 2;\n }\n const left = Math.round(pixel[0] + offsetX) + 'px';\n if (this.rendered.left_ != left) {\n this.rendered.left_ = left;\n style.left = left;\n }\n }\n if (positioning == OverlayPositioning.BOTTOM_LEFT ||\n positioning == OverlayPositioning.BOTTOM_CENTER ||\n positioning == OverlayPositioning.BOTTOM_RIGHT) {\n if (this.rendered.top_ !== '') {\n this.rendered.top_ = '';\n style.top = '';\n }\n const bottom = Math.round(mapSize[1] - pixel[1] - offsetY) + 'px';\n if (this.rendered.bottom_ != bottom) {\n this.rendered.bottom_ = bottom;\n style.bottom = bottom;\n }\n } else {\n if (this.rendered.bottom_ !== '') {\n this.rendered.bottom_ = '';\n style.bottom = '';\n }\n if (positioning == OverlayPositioning.CENTER_LEFT ||\n positioning == OverlayPositioning.CENTER_CENTER ||\n positioning == OverlayPositioning.CENTER_RIGHT) {\n offsetY -= this.element.offsetHeight / 2;\n }\n const top = Math.round(pixel[1] + offsetY) + 'px';\n if (this.rendered.top_ != top) {\n this.rendered.top_ = 'top';\n style.top = top;\n }\n }\n }\n\n /**\n * returns the options this Overlay has been created with\n * @return {Options} overlay options\n */\n getOptions() {\n return this.options;\n }\n}\n\n\nexport default Overlay;\n","/**\n * @module ol/control/OverviewMap\n */\nimport PluggableMap from '../PluggableMap.js';\nimport CompositeMapRenderer from '../renderer/Composite.js';\nimport MapEventType from '../MapEventType.js';\nimport MapProperty from '../MapProperty.js';\nimport {getChangeEventType} from '../Object.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport Overlay from '../Overlay.js';\nimport OverlayPositioning from '../OverlayPositioning.js';\nimport ViewProperty from '../ViewProperty.js';\nimport Control from './Control.js';\nimport {fromExtent as polygonFromExtent} from '../geom/Polygon.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_COLLAPSED} from '../css.js';\nimport {replaceNode} from '../dom.js';\nimport {listen, listenOnce} from '../events.js';\nimport EventType from '../events/EventType.js';\nimport {containsExtent, equals as equalsExtent, getBottomRight, getTopLeft, scaleFromCenter} from '../extent.js';\n\n\n/**\n * Maximum width and/or height extent ratio that determines when the overview\n * map should be zoomed out.\n * @type {number}\n */\nconst MAX_RATIO = 0.75;\n\n\n/**\n * Minimum width and/or height extent ratio that determines when the overview\n * map should be zoomed in.\n * @type {number}\n */\nconst MIN_RATIO = 0.1;\n\n\nclass ControlledMap extends PluggableMap {\n createRenderer() {\n return new CompositeMapRenderer(this);\n }\n}\n\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-overviewmap'] CSS class name.\n * @property {boolean} [collapsed=true] Whether the control should start collapsed or not (expanded).\n * @property {string|HTMLElement} [collapseLabel='«'] Text label to use for the\n * expanded overviewmap button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {boolean} [collapsible=true] Whether the control can be collapsed or not.\n * @property {string|HTMLElement} [label='»'] Text label to use for the collapsed\n * overviewmap button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {Array|import(\"../Collection.js\").default} [layers]\n * Layers for the overview map.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {boolean} [rotateWithView=false] Whether the control view should rotate with the main map view.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {string} [tipLabel='Overview map'] Text label to use for the button tip.\n * @property {import(\"../View.js\").default} [view] Custom view for the overview map. If not provided,\n * a default view with an EPSG:3857 projection will be used.\n */\n\n\n/**\n * Create a new control with a map acting as an overview map for another\n * defined map.\n *\n * @api\n */\nclass OverviewMap extends Control {\n\n /**\n * @param {Options=} opt_options OverviewMap options.\n */\n constructor(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n });\n\n /**\n * @private\n */\n this.boundHandleRotationChanged_ = this.handleRotationChanged_.bind(this);\n\n /**\n * @type {boolean}\n * @private\n */\n this.collapsed_ = options.collapsed !== undefined ? options.collapsed : true;\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsible_ = options.collapsible !== undefined ?\n options.collapsible : true;\n\n if (!this.collapsible_) {\n this.collapsed_ = false;\n }\n\n /**\n * @private\n * @type {boolean}\n */\n this.rotateWithView_ = options.rotateWithView !== undefined ?\n options.rotateWithView : false;\n\n /**\n * @private\n * @type {import(\"../extent.js\").Extent|undefined}\n */\n this.viewExtent_ = undefined;\n\n const className = options.className !== undefined ? options.className : 'ol-overviewmap';\n\n const tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Overview map';\n\n const collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u00AB';\n\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.collapseLabel_ = document.createElement('span');\n this.collapseLabel_.textContent = collapseLabel;\n } else {\n this.collapseLabel_ = collapseLabel;\n }\n\n const label = options.label !== undefined ? options.label : '\\u00BB';\n\n\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.label_ = document.createElement('span');\n this.label_.textContent = label;\n } else {\n this.label_ = label;\n }\n\n const activeLabel = (this.collapsible_ && !this.collapsed_) ?\n this.collapseLabel_ : this.label_;\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n\n button.addEventListener(EventType.CLICK, this.handleClick_.bind(this), false);\n\n /**\n * @type {HTMLElement}\n * @private\n */\n this.ovmapDiv_ = document.createElement('div');\n this.ovmapDiv_.className = 'ol-overviewmap-map';\n\n /**\n * @type {ControlledMap}\n * @private\n */\n this.ovmap_ = new ControlledMap({\n view: options.view\n });\n const ovmap = this.ovmap_;\n\n if (options.layers) {\n options.layers.forEach(function(layer) {\n ovmap.addLayer(layer);\n });\n }\n\n const box = document.createElement('div');\n box.className = 'ol-overviewmap-box';\n box.style.boxSizing = 'border-box';\n\n /**\n * @type {import(\"../Overlay.js\").default}\n * @private\n */\n this.boxOverlay_ = new Overlay({\n position: [0, 0],\n positioning: OverlayPositioning.CENTER_CENTER,\n element: box\n });\n this.ovmap_.addOverlay(this.boxOverlay_);\n\n const cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL +\n (this.collapsed_ && this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (this.collapsible_ ? '' : ' ol-uncollapsible');\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(this.ovmapDiv_);\n element.appendChild(button);\n\n /* Interactive map */\n\n const scope = this;\n\n const overlay = this.boxOverlay_;\n const overlayBox = this.boxOverlay_.getElement();\n\n /* Functions definition */\n\n const computeDesiredMousePosition = function(mousePosition) {\n return {\n clientX: mousePosition.clientX,\n clientY: mousePosition.clientY\n };\n };\n\n const move = function(event) {\n const position = /** @type {?} */ (computeDesiredMousePosition(event));\n const coordinates = ovmap.getEventCoordinateInternal(/** @type {Event} */ (position));\n\n overlay.setPosition(coordinates);\n };\n\n const endMoving = function(event) {\n const coordinates = ovmap.getEventCoordinateInternal(event);\n\n scope.getMap().getView().setCenterInternal(coordinates);\n\n window.removeEventListener('mousemove', move);\n window.removeEventListener('mouseup', endMoving);\n };\n\n /* Binding */\n\n overlayBox.addEventListener('mousedown', function() {\n window.addEventListener('mousemove', move);\n window.addEventListener('mouseup', endMoving);\n });\n\n }\n\n /**\n * @inheritDoc\n * @api\n */\n setMap(map) {\n const oldMap = this.getMap();\n if (map === oldMap) {\n return;\n }\n if (oldMap) {\n const oldView = oldMap.getView();\n if (oldView) {\n this.unbindView_(oldView);\n }\n this.ovmap_.setTarget(null);\n }\n super.setMap(map);\n\n if (map) {\n this.ovmap_.setTarget(this.ovmapDiv_);\n this.listenerKeys.push(listen(\n map, ObjectEventType.PROPERTYCHANGE,\n this.handleMapPropertyChange_, this));\n\n const view = map.getView();\n if (view) {\n this.bindView_(view);\n if (view.isDef()) {\n this.ovmap_.updateSize();\n this.resetExtent_();\n }\n }\n }\n }\n\n /**\n * Handle map property changes. This only deals with changes to the map's view.\n * @param {import(\"../Object.js\").ObjectEvent} event The propertychange event.\n * @private\n */\n handleMapPropertyChange_(event) {\n if (event.key === MapProperty.VIEW) {\n const oldView = /** @type {import(\"../View.js\").default} */ (event.oldValue);\n if (oldView) {\n this.unbindView_(oldView);\n }\n const newView = this.getMap().getView();\n this.bindView_(newView);\n }\n }\n\n /**\n * Register listeners for view property changes.\n * @param {import(\"../View.js\").default} view The view.\n * @private\n */\n bindView_(view) {\n view.addEventListener(getChangeEventType(ViewProperty.ROTATION), this.boundHandleRotationChanged_);\n }\n\n /**\n * Unregister listeners for view property changes.\n * @param {import(\"../View.js\").default} view The view.\n * @private\n */\n unbindView_(view) {\n view.removeEventListener(getChangeEventType(ViewProperty.ROTATION), this.boundHandleRotationChanged_);\n }\n\n /**\n * Handle rotation changes to the main map.\n * @private\n */\n handleRotationChanged_() {\n if (this.rotateWithView_) {\n this.ovmap_.getView().setRotation(this.getMap().getView().getRotation());\n }\n }\n\n /**\n * Reset the overview map extent if the box size (width or\n * height) is less than the size of the overview map size times minRatio\n * or is greater than the size of the overview size times maxRatio.\n *\n * If the map extent was not reset, the box size can fits in the defined\n * ratio sizes. This method then checks if is contained inside the overview\n * map current extent. If not, recenter the overview map to the current\n * main map center location.\n * @private\n */\n validateExtent_() {\n const map = this.getMap();\n const ovmap = this.ovmap_;\n\n if (!map.isRendered() || !ovmap.isRendered()) {\n return;\n }\n\n const mapSize = /** @type {import(\"../size.js\").Size} */ (map.getSize());\n\n const view = map.getView();\n const extent = view.calculateExtentInternal(mapSize);\n\n if (this.viewExtent_ && equalsExtent(extent, this.viewExtent_)) {\n // repeats of the same extent may indicate constraint conflicts leading to an endless cycle\n return;\n }\n this.viewExtent_ = extent;\n\n const ovmapSize = /** @type {import(\"../size.js\").Size} */ (ovmap.getSize());\n\n const ovview = ovmap.getView();\n const ovextent = ovview.calculateExtentInternal(ovmapSize);\n\n const topLeftPixel =\n ovmap.getPixelFromCoordinateInternal(getTopLeft(extent));\n const bottomRightPixel =\n ovmap.getPixelFromCoordinateInternal(getBottomRight(extent));\n\n const boxWidth = Math.abs(topLeftPixel[0] - bottomRightPixel[0]);\n const boxHeight = Math.abs(topLeftPixel[1] - bottomRightPixel[1]);\n\n const ovmapWidth = ovmapSize[0];\n const ovmapHeight = ovmapSize[1];\n\n if (boxWidth < ovmapWidth * MIN_RATIO ||\n boxHeight < ovmapHeight * MIN_RATIO ||\n boxWidth > ovmapWidth * MAX_RATIO ||\n boxHeight > ovmapHeight * MAX_RATIO) {\n this.resetExtent_();\n } else if (!containsExtent(ovextent, extent)) {\n this.recenter_();\n }\n }\n\n /**\n * Reset the overview map extent to half calculated min and max ratio times\n * the extent of the main map.\n * @private\n */\n resetExtent_() {\n if (MAX_RATIO === 0 || MIN_RATIO === 0) {\n return;\n }\n\n const map = this.getMap();\n const ovmap = this.ovmap_;\n\n const mapSize = /** @type {import(\"../size.js\").Size} */ (map.getSize());\n\n const view = map.getView();\n const extent = view.calculateExtentInternal(mapSize);\n\n const ovview = ovmap.getView();\n\n // get how many times the current map overview could hold different\n // box sizes using the min and max ratio, pick the step in the middle used\n // to calculate the extent from the main map to set it to the overview map,\n const steps = Math.log(\n MAX_RATIO / MIN_RATIO) / Math.LN2;\n const ratio = 1 / (Math.pow(2, steps / 2) * MIN_RATIO);\n scaleFromCenter(extent, ratio);\n ovview.fitInternal(polygonFromExtent(extent));\n }\n\n /**\n * Set the center of the overview map to the map center without changing its\n * resolution.\n * @private\n */\n recenter_() {\n const map = this.getMap();\n const ovmap = this.ovmap_;\n\n const view = map.getView();\n\n const ovview = ovmap.getView();\n\n ovview.setCenterInternal(view.getCenterInternal());\n }\n\n /**\n * Update the box using the main map extent\n * @private\n */\n updateBox_() {\n const map = this.getMap();\n const ovmap = this.ovmap_;\n\n if (!map.isRendered() || !ovmap.isRendered()) {\n return;\n }\n\n const mapSize = /** @type {import(\"../size.js\").Size} */ (map.getSize());\n\n const view = map.getView();\n\n const ovview = ovmap.getView();\n\n const rotation = this.rotateWithView_ ? 0 : -view.getRotation();\n\n const overlay = this.boxOverlay_;\n const box = this.boxOverlay_.getElement();\n const center = view.getCenterInternal();\n const resolution = view.getResolution();\n const ovresolution = ovview.getResolution();\n const width = mapSize[0] * resolution / ovresolution;\n const height = mapSize[1] * resolution / ovresolution;\n\n // set position using center coordinates\n overlay.setPosition(center);\n\n // set box size calculated from map extent size and overview map resolution\n if (box) {\n box.style.width = width + 'px';\n box.style.height = height + 'px';\n const transform = 'rotate(' + rotation + 'rad)';\n box.style.transform = transform;\n }\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleToggle_();\n }\n\n /**\n * @private\n */\n handleToggle_() {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n } else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n\n // manage overview map if it had not been rendered before and control\n // is expanded\n const ovmap = this.ovmap_;\n if (!this.collapsed_) {\n if (ovmap.isRendered()) {\n this.viewExtent_ = undefined;\n ovmap.render();\n return;\n }\n ovmap.updateSize();\n this.resetExtent_();\n listenOnce(ovmap, MapEventType.POSTRENDER,\n function(event) {\n this.updateBox_();\n },\n this);\n }\n }\n\n /**\n * Return `true` if the overview map is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n getCollapsible() {\n return this.collapsible_;\n }\n\n /**\n * Set whether the overview map should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n setCollapsible(collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (!collapsible && this.collapsed_) {\n this.handleToggle_();\n }\n }\n\n /**\n * Collapse or expand the overview map according to the passed parameter. Will\n * not do anything if the overview map isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n setCollapsed(collapsed) {\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n }\n\n /**\n * Determine if the overview map is collapsed.\n * @return {boolean} The overview map is collapsed.\n * @api\n */\n getCollapsed() {\n return this.collapsed_;\n }\n\n /**\n * Return `true` if the overview map view can rotate, `false` otherwise.\n * @return {boolean} True if the control view can rotate.\n * @api\n */\n getRotateWithView() {\n return this.rotateWithView_;\n }\n\n /**\n * Set whether the overview map view should rotate with the main map view.\n * @param {boolean} rotateWithView True if the control view should rotate.\n * @api\n */\n setRotateWithView(rotateWithView) {\n if (this.rotateWithView_ === rotateWithView) {\n return;\n }\n this.rotateWithView_ = rotateWithView;\n if (this.getMap().getView().getRotation() !== 0) {\n if (this.rotateWithView_) {\n this.handleRotationChanged_();\n } else {\n this.ovmap_.getView().setRotation(0);\n }\n this.viewExtent_ = undefined;\n this.validateExtent_();\n this.updateBox_();\n }\n }\n\n /**\n * Return the overview map.\n * @return {import(\"../PluggableMap.js\").default} Overview map.\n * @api\n */\n getOverviewMap() {\n return this.ovmap_;\n }\n}\n\n\n/**\n * Update the overview map element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {OverviewMap}\n * @api\n */\nexport function render(mapEvent) {\n this.validateExtent_();\n this.updateBox_();\n}\n\n\nexport default OverviewMap;\n","/**\n * @module ol/control/ScaleLine\n */\nimport {getChangeEventType} from '../Object.js';\nimport {assert} from '../asserts.js';\nimport Control from './Control.js';\nimport {CLASS_UNSELECTABLE} from '../css.js';\nimport {getPointResolution, METERS_PER_UNIT} from '../proj.js';\nimport ProjUnits from '../proj/Units.js';\n\n\n/**\n * @type {string}\n */\nconst UNITS_PROP = 'units';\n\n/**\n * Units for the scale line. Supported values are `'degrees'`, `'imperial'`,\n * `'nautical'`, `'metric'`, `'us'`.\n * @enum {string}\n */\nexport const Units = {\n DEGREES: 'degrees',\n IMPERIAL: 'imperial',\n NAUTICAL: 'nautical',\n METRIC: 'metric',\n US: 'us'\n};\n\n\n/**\n * @const\n * @type {Array}\n */\nconst LEADING_DIGITS = [1, 2, 5];\n\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-scale-line'] CSS Class name.\n * @property {number} [minWidth=64] Minimum width in pixels.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {Units|string} [units='metric'] Units.\n * @property {boolean} [bar=false] Render scalebars instead of a line.\n * @property {number} [steps=4] Number of steps the scalebar should use. Use even numbers\n * for best results. Only applies when `bar` is `true`.\n * @property {boolean} [text=false] Render the text scale above of the scalebar. Only applies\n * when `bar` is `true`.\n */\n\n\n/**\n * @classdesc\n * A control displaying rough y-axis distances, calculated for the center of the\n * viewport. For conformal projections (e.g. EPSG:3857, the default view\n * projection in OpenLayers), the scale is valid for all directions.\n * No scale line will be shown when the y-axis distance of a pixel at the\n * viewport center cannot be calculated in the view projection.\n * By default the scale line will show in the bottom left portion of the map,\n * but this can be changed by using the css selector `.ol-scale-line`.\n * When specifying `bar` as `true`, a scalebar will be rendered instead\n * of a scaleline.\n *\n * @api\n */\nclass ScaleLine extends Control {\n\n /**\n * @param {Options=} opt_options Scale line options.\n */\n constructor(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n const className = options.className !== undefined ? options.className :\n options.bar ? 'ol-scale-bar' : 'ol-scale-line';\n\n super({\n element: document.createElement('div'),\n render: options.render || render,\n target: options.target\n });\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.innerElement_ = document.createElement('div');\n this.innerElement_.className = className + '-inner';\n\n this.element.className = className + ' ' + CLASS_UNSELECTABLE;\n this.element.appendChild(this.innerElement_);\n\n /**\n * @private\n * @type {?import(\"../View.js\").State}\n */\n this.viewState_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.minWidth_ = options.minWidth !== undefined ? options.minWidth : 64;\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = false;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.renderedWidth_ = undefined;\n\n /**\n * @private\n * @type {string}\n */\n this.renderedHTML_ = '';\n\n this.addEventListener(getChangeEventType(UNITS_PROP), this.handleUnitsChanged_);\n\n this.setUnits(options.units || Units.METRIC);\n\n /**\n * @private\n * @type {boolean}\n */\n this.scaleBar_ = options.bar || false;\n\n /**\n * @private\n * @type {number}\n */\n this.scaleBarSteps_ = options.steps || 4;\n\n /**\n * @private\n * @type {boolean}\n */\n this.scaleBarText_ = options.text || false;\n\n }\n\n /**\n * Return the units to use in the scale line.\n * @return {Units} The units\n * to use in the scale line.\n * @observable\n * @api\n */\n getUnits() {\n return this.get(UNITS_PROP);\n }\n\n /**\n * @private\n */\n handleUnitsChanged_() {\n this.updateElement_();\n }\n\n /**\n * Set the units to use in the scale line.\n * @param {Units} units The units to use in the scale line.\n * @observable\n * @api\n */\n setUnits(units) {\n this.set(UNITS_PROP, units);\n }\n\n /**\n * @private\n */\n updateElement_() {\n const viewState = this.viewState_;\n\n if (!viewState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n const center = viewState.center;\n const projection = viewState.projection;\n const units = this.getUnits();\n const pointResolutionUnits = units == Units.DEGREES ?\n ProjUnits.DEGREES :\n ProjUnits.METERS;\n let pointResolution =\n getPointResolution(projection, viewState.resolution, center, pointResolutionUnits);\n\n let nominalCount = this.minWidth_ * pointResolution;\n let suffix = '';\n if (units == Units.DEGREES) {\n const metersPerDegree = METERS_PER_UNIT[ProjUnits.DEGREES];\n nominalCount *= metersPerDegree;\n if (nominalCount < metersPerDegree / 60) {\n suffix = '\\u2033'; // seconds\n pointResolution *= 3600;\n } else if (nominalCount < metersPerDegree) {\n suffix = '\\u2032'; // minutes\n pointResolution *= 60;\n } else {\n suffix = '\\u00b0'; // degrees\n }\n } else if (units == Units.IMPERIAL) {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution /= 0.0254;\n } else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.3048;\n } else {\n suffix = 'mi';\n pointResolution /= 1609.344;\n }\n } else if (units == Units.NAUTICAL) {\n pointResolution /= 1852;\n suffix = 'nm';\n } else if (units == Units.METRIC) {\n if (nominalCount < 0.001) {\n suffix = 'μm';\n pointResolution *= 1000000;\n } else if (nominalCount < 1) {\n suffix = 'mm';\n pointResolution *= 1000;\n } else if (nominalCount < 1000) {\n suffix = 'm';\n } else {\n suffix = 'km';\n pointResolution /= 1000;\n }\n } else if (units == Units.US) {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution *= 39.37;\n } else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.30480061;\n } else {\n suffix = 'mi';\n pointResolution /= 1609.3472;\n }\n } else {\n assert(false, 33); // Invalid units\n }\n\n let i = 3 * Math.floor(\n Math.log(this.minWidth_ * pointResolution) / Math.log(10));\n let count, width, decimalCount;\n while (true) {\n decimalCount = Math.floor(i / 3);\n const decimal = Math.pow(10, decimalCount);\n count = LEADING_DIGITS[((i % 3) + 3) % 3] * decimal;\n width = Math.round(count / pointResolution);\n if (isNaN(width)) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n return;\n } else if (width >= this.minWidth_) {\n break;\n }\n ++i;\n }\n let html;\n if (this.scaleBar_) {\n html = this.createScaleBar(width, count, suffix);\n } else {\n html = count.toFixed(decimalCount < 0 ? -decimalCount : 0) + ' ' + suffix;\n }\n\n if (this.renderedHTML_ != html) {\n this.innerElement_.innerHTML = html;\n this.renderedHTML_ = html;\n }\n\n if (this.renderedWidth_ != width) {\n this.innerElement_.style.width = width + 'px';\n this.renderedWidth_ = width;\n }\n\n if (!this.renderedVisible_) {\n this.element.style.display = '';\n this.renderedVisible_ = true;\n }\n\n }\n\n /**\n * @private\n * @param {number} width The current width of the scalebar.\n * @param {number} scale The current scale.\n * @param {string} suffix The suffix to append to the scale text.\n * @returns {string} The stringified HTML of the scalebar.\n */\n createScaleBar(width, scale, suffix) {\n const mapScale = '1 : ' + Math.round(this.getScaleForResolution()).toLocaleString();\n const scaleSteps = [];\n const stepWidth = width / this.scaleBarSteps_;\n let backgroundColor = '#ffffff';\n for (let i = 0; i < this.scaleBarSteps_; i++) {\n if (i === 0) {\n // create the first marker at position 0\n scaleSteps.push(this.createMarker('absolute', i));\n }\n scaleSteps.push(\n '
' +\n '
' +\n '
' +\n this.createMarker('relative', i) +\n /*render text every second step, except when only 2 steps */\n (i % 2 === 0 || this.scaleBarSteps_ === 2 ?\n this.createStepText(i, width, false, scale, suffix) :\n ''\n ) +\n '
'\n );\n if (i === this.scaleBarSteps_ - 1) {\n {/*render text at the end */}\n scaleSteps.push(this.createStepText(i + 1, width, true, scale, suffix));\n }\n // switch colors of steps between black and white\n if (backgroundColor === '#ffffff') {\n backgroundColor = '#000000';\n } else {\n backgroundColor = '#ffffff';\n }\n }\n\n let scaleBarText;\n if (this.scaleBarText_) {\n scaleBarText = '
' +\n mapScale +\n '
';\n } else {\n scaleBarText = '';\n }\n const container = '
' +\n scaleBarText +\n scaleSteps.join('') +\n '
';\n return container;\n }\n\n /**\n * Creates a marker at given position\n * @param {string} position - The position, absolute or relative\n * @param {number} i - The iterator\n * @returns {string} The stringified div containing the marker\n */\n createMarker(position, i) {\n const top = position === 'absolute' ? 3 : -10;\n return '
';\n }\n\n /**\n * Creates the label for a marker marker at given position\n * @param {number} i - The iterator\n * @param {number} width - The width the scalebar will currently use\n * @param {boolean} isLast - Flag indicating if we add the last step text\n * @param {number} scale - The current scale for the whole scalebar\n * @param {string} suffix - The suffix for the scale\n * @returns {string} The stringified div containing the step text\n */\n createStepText(i, width, isLast, scale, suffix) {\n const length = i === 0 ? 0 : Math.round((scale / this.scaleBarSteps_ * i) * 100) / 100;\n const lengthString = length + (i === 0 ? '' : ' ' + suffix);\n const margin = i === 0 ? -3 : width / this.scaleBarSteps_ * -1;\n const minWidth = i === 0 ? 0 : width / this.scaleBarSteps_ * 2;\n return '
' +\n lengthString +\n '
';\n }\n\n /**\n * Returns the appropriate scale for the given resolution and units.\n * @return {number} The appropriate scale.\n */\n getScaleForResolution() {\n const resolution = this.getMap().getView().getResolution();\n const dpi = 25.4 / 0.28;\n const mpu = this.viewState_.projection.getMetersPerUnit();\n const inchesPerMeter = 39.37;\n return parseFloat(resolution.toString()) * mpu * inchesPerMeter * dpi;\n }\n}\n\n/**\n * Update the scale line element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {ScaleLine}\n * @api\n */\nexport function render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n this.viewState_ = null;\n } else {\n this.viewState_ = frameState.viewState;\n }\n this.updateElement_();\n}\n\n\nexport default ScaleLine;\n","/**\n * @module ol/control/ZoomSlider\n */\nimport Control from './Control.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {stopPropagation} from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport {clamp} from '../math.js';\nimport PointerEventType from '../pointer/EventType.js';\nimport '@openlayers/pepjs';\n\n\n/**\n * The enum for available directions.\n *\n * @enum {number}\n */\nconst Direction = {\n VERTICAL: 0,\n HORIZONTAL: 1\n};\n\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-zoomslider'] CSS class name.\n * @property {number} [duration=200] Animation duration in milliseconds.\n * @property {function(import(\"../MapEvent.js\").default)} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n */\n\n\n/**\n * @classdesc\n * A slider type of control for zooming.\n *\n * Example:\n *\n * map.addControl(new ZoomSlider());\n *\n * @api\n */\nclass ZoomSlider extends Control {\n\n /**\n * @param {Options=} opt_options Zoom slider options.\n */\n constructor(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render || render\n });\n\n /**\n * @type {!Array.}\n * @private\n */\n this.dragListenerKeys_ = [];\n\n /**\n * Will hold the current resolution of the view.\n *\n * @type {number|undefined}\n * @private\n */\n this.currentResolution_ = undefined;\n\n /**\n * The direction of the slider. Will be determined from actual display of the\n * container and defaults to Direction.VERTICAL.\n *\n * @type {Direction}\n * @private\n */\n this.direction_ = Direction.VERTICAL;\n\n /**\n * @type {boolean}\n * @private\n */\n this.dragging_;\n\n /**\n * @type {number}\n * @private\n */\n this.heightLimit_ = 0;\n\n /**\n * @type {number}\n * @private\n */\n this.widthLimit_ = 0;\n\n /**\n * @type {number|undefined}\n * @private\n */\n this.startX_;\n\n /**\n * @type {number|undefined}\n * @private\n */\n this.startY_;\n\n /**\n * The calculated thumb size (border box plus margins). Set when initSlider_\n * is called.\n * @type {import(\"../size.js\").Size}\n * @private\n */\n this.thumbSize_ = null;\n\n /**\n * Whether the slider is initialized.\n * @type {boolean}\n * @private\n */\n this.sliderInitialized_ = false;\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 200;\n\n const className = options.className !== undefined ? options.className : 'ol-zoomslider';\n const thumbElement = document.createElement('button');\n thumbElement.setAttribute('type', 'button');\n thumbElement.className = className + '-thumb ' + CLASS_UNSELECTABLE;\n const containerElement = this.element;\n containerElement.setAttribute('touch-action', 'none');\n containerElement.className = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n containerElement.appendChild(thumbElement);\n\n containerElement.addEventListener(PointerEventType.POINTERDOWN, this.handleDraggerStart_.bind(this), false);\n containerElement.addEventListener(PointerEventType.POINTERMOVE, this.handleDraggerDrag_.bind(this), false);\n containerElement.addEventListener(PointerEventType.POINTERUP, this.handleDraggerEnd_.bind(this), false);\n\n containerElement.addEventListener(EventType.CLICK, this.handleContainerClick_.bind(this), false);\n thumbElement.addEventListener(EventType.CLICK, stopPropagation, false);\n }\n\n /**\n * @inheritDoc\n */\n setMap(map) {\n super.setMap(map);\n if (map) {\n map.render();\n }\n }\n\n /**\n * Initializes the slider element. This will determine and set this controls\n * direction_ and also constrain the dragging of the thumb to always be within\n * the bounds of the container.\n *\n * @private\n */\n initSlider_() {\n const container = this.element;\n const containerSize = {\n width: container.offsetWidth, height: container.offsetHeight\n };\n\n const thumb = /** @type {HTMLElement} */ (container.firstElementChild);\n const computedStyle = getComputedStyle(thumb);\n const thumbWidth = thumb.offsetWidth +\n parseFloat(computedStyle['marginRight']) +\n parseFloat(computedStyle['marginLeft']);\n const thumbHeight = thumb.offsetHeight +\n parseFloat(computedStyle['marginTop']) +\n parseFloat(computedStyle['marginBottom']);\n this.thumbSize_ = [thumbWidth, thumbHeight];\n\n if (containerSize.width > containerSize.height) {\n this.direction_ = Direction.HORIZONTAL;\n this.widthLimit_ = containerSize.width - thumbWidth;\n } else {\n this.direction_ = Direction.VERTICAL;\n this.heightLimit_ = containerSize.height - thumbHeight;\n }\n this.sliderInitialized_ = true;\n }\n\n /**\n * @param {PointerEvent} event The browser event to handle.\n * @private\n */\n handleContainerClick_(event) {\n const view = this.getMap().getView();\n\n const relativePosition = this.getRelativePosition_(\n event.offsetX - this.thumbSize_[0] / 2,\n event.offsetY - this.thumbSize_[1] / 2);\n\n const resolution = this.getResolutionForPosition_(relativePosition);\n const zoom = view.getConstrainedZoom(view.getZoomForResolution(resolution));\n\n view.animateInternal({\n zoom: zoom,\n duration: this.duration_,\n easing: easeOut\n });\n }\n\n /**\n * Handle dragger start events.\n * @param {PointerEvent} event The drag event.\n * @private\n */\n handleDraggerStart_(event) {\n if (!this.dragging_ && event.target === this.element.firstElementChild) {\n const element = /** @type {HTMLElement} */ (this.element.firstElementChild);\n this.getMap().getView().beginInteraction();\n this.startX_ = event.clientX - parseFloat(element.style.left);\n this.startY_ = event.clientY - parseFloat(element.style.top);\n this.dragging_ = true;\n\n if (this.dragListenerKeys_.length === 0) {\n const drag = this.handleDraggerDrag_;\n const end = this.handleDraggerEnd_;\n this.dragListenerKeys_.push(\n listen(document, PointerEventType.POINTERMOVE, drag, this),\n listen(document, PointerEventType.POINTERUP, end, this)\n );\n }\n }\n }\n\n /**\n * Handle dragger drag events.\n *\n * @param {PointerEvent} event The drag event.\n * @private\n */\n handleDraggerDrag_(event) {\n if (this.dragging_) {\n const deltaX = event.clientX - this.startX_;\n const deltaY = event.clientY - this.startY_;\n const relativePosition = this.getRelativePosition_(deltaX, deltaY);\n this.currentResolution_ = this.getResolutionForPosition_(relativePosition);\n this.getMap().getView().setResolution(this.currentResolution_);\n }\n }\n\n /**\n * Handle dragger end events.\n * @param {PointerEvent} event The drag event.\n * @private\n */\n handleDraggerEnd_(event) {\n if (this.dragging_) {\n const view = this.getMap().getView();\n view.endInteraction();\n\n this.dragging_ = false;\n this.startX_ = undefined;\n this.startY_ = undefined;\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n }\n }\n\n /**\n * Positions the thumb inside its container according to the given resolution.\n *\n * @param {number} res The res.\n * @private\n */\n setThumbPosition_(res) {\n const position = this.getPositionForResolution_(res);\n const thumb = /** @type {HTMLElement} */ (this.element.firstElementChild);\n\n if (this.direction_ == Direction.HORIZONTAL) {\n thumb.style.left = this.widthLimit_ * position + 'px';\n } else {\n thumb.style.top = this.heightLimit_ * position + 'px';\n }\n }\n\n /**\n * Calculates the relative position of the thumb given x and y offsets. The\n * relative position scales from 0 to 1. The x and y offsets are assumed to be\n * in pixel units within the dragger limits.\n *\n * @param {number} x Pixel position relative to the left of the slider.\n * @param {number} y Pixel position relative to the top of the slider.\n * @return {number} The relative position of the thumb.\n * @private\n */\n getRelativePosition_(x, y) {\n let amount;\n if (this.direction_ === Direction.HORIZONTAL) {\n amount = x / this.widthLimit_;\n } else {\n amount = y / this.heightLimit_;\n }\n return clamp(amount, 0, 1);\n }\n\n /**\n * Calculates the corresponding resolution of the thumb given its relative\n * position (where 0 is the minimum and 1 is the maximum).\n *\n * @param {number} position The relative position of the thumb.\n * @return {number} The corresponding resolution.\n * @private\n */\n getResolutionForPosition_(position) {\n const fn = this.getMap().getView().getResolutionForValueFunction();\n return fn(1 - position);\n }\n\n /**\n * Determines the relative position of the slider for the given resolution. A\n * relative position of 0 corresponds to the minimum view resolution. A\n * relative position of 1 corresponds to the maximum view resolution.\n *\n * @param {number} res The resolution.\n * @return {number} The relative position value (between 0 and 1).\n * @private\n */\n getPositionForResolution_(res) {\n const fn = this.getMap().getView().getValueForResolutionFunction();\n return clamp(1 - fn(res), 0, 1);\n }\n}\n\n\n/**\n * Update the zoomslider element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @this {ZoomSlider}\n * @api\n */\nexport function render(mapEvent) {\n if (!mapEvent.frameState) {\n return;\n }\n if (!this.sliderInitialized_) {\n this.initSlider_();\n }\n const res = mapEvent.frameState.viewState.resolution;\n this.currentResolution_ = res;\n this.setThumbPosition_(res);\n}\n\n\nexport default ZoomSlider;\n","/**\n * @module ol/control/ZoomToExtent\n */\nimport EventType from '../events/EventType.js';\nimport {fromExtent as polygonFromExtent} from '../geom/Polygon.js';\nimport Control from './Control.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-zoom-extent'] Class name.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {string|HTMLElement} [label='E'] Text label to use for the button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Fit to extent'] Text label to use for the button tip.\n * @property {import(\"../extent.js\").Extent} [extent] The extent to zoom to. If undefined the validity\n * extent of the view projection is used.\n */\n\n\n/**\n * @classdesc\n * A button control which, when pressed, changes the map view to a specific\n * extent. To style this control use the css selector `.ol-zoom-extent`.\n *\n * @api\n */\nclass ZoomToExtent extends Control {\n\n /**\n * @param {Options=} opt_options Options.\n */\n constructor(opt_options) {\n const options = opt_options ? opt_options : {};\n\n super({\n element: document.createElement('div'),\n target: options.target\n });\n\n /**\n * @type {?import(\"../extent.js\").Extent}\n * @protected\n */\n this.extent = options.extent ? options.extent : null;\n\n const className = options.className !== undefined ? options.className : 'ol-zoom-extent';\n\n const label = options.label !== undefined ? options.label : 'E';\n const tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Fit to extent';\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(\n typeof label === 'string' ? document.createTextNode(label) : label\n );\n\n button.addEventListener(EventType.CLICK, this.handleClick_.bind(this), false);\n\n const cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(button);\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleZoomToExtent();\n }\n\n /**\n * @protected\n */\n handleZoomToExtent() {\n const map = this.getMap();\n const view = map.getView();\n const extent = !this.extent ? view.getProjection().getExtent() : this.extent;\n view.fitInternal(polygonFromExtent(extent));\n }\n}\n\nexport default ZoomToExtent;\n","/**\n * @module ol/control\n */\nimport Collection from './Collection.js';\nimport Attribution from './control/Attribution.js';\nimport Rotate from './control/Rotate.js';\nimport Zoom from './control/Zoom.js';\n\nexport {default as Attribution} from './control/Attribution.js';\nexport {default as Control} from './control/Control.js';\nexport {default as FullScreen} from './control/FullScreen.js';\nexport {default as MousePosition} from './control/MousePosition.js';\nexport {default as OverviewMap} from './control/OverviewMap.js';\nexport {default as Rotate} from './control/Rotate.js';\nexport {default as ScaleLine} from './control/ScaleLine.js';\nexport {default as Zoom} from './control/Zoom.js';\nexport {default as ZoomSlider} from './control/ZoomSlider.js';\nexport {default as ZoomToExtent} from './control/ZoomToExtent.js';\n\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./control/Attribution.js\").Options} [attributionOptions]\n * Options for {@link module:ol/control/Attribution~Attribution}.\n * @property {boolean} [rotate=true] Include\n * {@link module:ol/control/Rotate~Rotate}.\n * @property {import(\"./control/Rotate.js\").Options} [rotateOptions] Options\n * for {@link module:ol/control/Rotate~Rotate}.\n * @property {boolean} [zoom] Include {@link module:ol/control/Zoom~Zoom}.\n * @property {import(\"./control/Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n * @api\n */\n\n\n/**\n * Set of controls included in maps by default. Unless configured otherwise,\n * this returns a collection containing an instance of each of the following\n * controls:\n * * {@link module:ol/control/Zoom~Zoom}\n * * {@link module:ol/control/Rotate~Rotate}\n * * {@link module:ol/control/Attribution~Attribution}\n *\n * @param {DefaultsOptions=} opt_options\n * Defaults options.\n * @return {Collection}\n * Controls.\n * @api\n */\nexport function defaults(opt_options) {\n\n const options = opt_options ? opt_options : {};\n\n const controls = new Collection();\n\n const zoomControl = options.zoom !== undefined ? options.zoom : true;\n if (zoomControl) {\n controls.push(new Zoom(options.zoomOptions));\n }\n\n const rotateControl = options.rotate !== undefined ? options.rotate : true;\n if (rotateControl) {\n controls.push(new Rotate(options.rotateOptions));\n }\n\n const attributionControl = options.attribution !== undefined ?\n options.attribution : true;\n if (attributionControl) {\n controls.push(new Attribution(options.attributionOptions));\n }\n\n return controls;\n}\n","/**\n * @module ol/Kinetic\n */\n\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nclass Kinetic {\n\n /**\n * @param {number} decay Rate of decay (must be negative).\n * @param {number} minVelocity Minimum velocity (pixels/millisecond).\n * @param {number} delay Delay to consider to calculate the kinetic\n * initial values (milliseconds).\n */\n constructor(decay, minVelocity, delay) {\n\n /**\n * @private\n * @type {number}\n */\n this.decay_ = decay;\n\n /**\n * @private\n * @type {number}\n */\n this.minVelocity_ = minVelocity;\n\n /**\n * @private\n * @type {number}\n */\n this.delay_ = delay;\n\n /**\n * @private\n * @type {Array}\n */\n this.points_ = [];\n\n /**\n * @private\n * @type {number}\n */\n this.angle_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.initialVelocity_ = 0;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n begin() {\n this.points_.length = 0;\n this.angle_ = 0;\n this.initialVelocity_ = 0;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n */\n update(x, y) {\n this.points_.push(x, y, Date.now());\n }\n\n /**\n * @return {boolean} Whether we should do kinetic animation.\n */\n end() {\n if (this.points_.length < 6) {\n // at least 2 points are required (i.e. there must be at least 6 elements\n // in the array)\n return false;\n }\n const delay = Date.now() - this.delay_;\n const lastIndex = this.points_.length - 3;\n if (this.points_[lastIndex + 2] < delay) {\n // the last tracked point is too old, which means that the user stopped\n // panning before releasing the map\n return false;\n }\n\n // get the first point which still falls into the delay time\n let firstIndex = lastIndex - 3;\n while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n firstIndex -= 3;\n }\n\n const duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2];\n // we don't want a duration of 0 (divide by zero)\n // we also make sure the user panned for a duration of at least one frame\n // (1/60s) to compute sane displacement values\n if (duration < 1000 / 60) {\n return false;\n }\n\n const dx = this.points_[lastIndex] - this.points_[firstIndex];\n const dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];\n this.angle_ = Math.atan2(dy, dx);\n this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;\n return this.initialVelocity_ > this.minVelocity_;\n }\n\n /**\n * @return {number} Total distance travelled (pixels).\n */\n getDistance() {\n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n }\n\n /**\n * @return {number} Angle of the kinetic panning animation (radians).\n */\n getAngle() {\n return this.angle_;\n }\n}\n\nexport default Kinetic;\n","/**\n * @module ol/interaction/Property\n */\n\n/**\n * @enum {string}\n */\nexport default {\n ACTIVE: 'active'\n};\n","/**\n * @module ol/interaction/Interaction\n */\nimport BaseObject from '../Object.js';\nimport {easeOut, linear} from '../easing.js';\nimport InteractionProperty from './Property.js';\n\n\n/**\n * Object literal with config options for interactions.\n * @typedef {Object} InteractionOptions\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} handleEvent\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. If the function returns a falsy value, propagation of\n * the event to other interactions in the map's interactions chain will be\n * prevented (this includes functions with no explicit return). The interactions\n * are traversed in reverse order of the interactions collection of the map.\n */\n\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * User actions that change the state of the map. Some are similar to controls,\n * but are not associated with a DOM element.\n * For example, {@link module:ol/interaction/KeyboardZoom~KeyboardZoom} is\n * functionally the same as {@link module:ol/control/Zoom~Zoom}, but triggered\n * by a keyboard event not a button element event.\n * Although interactions do not have a DOM element, some of them do render\n * vectors and so are visible on the screen.\n * @api\n */\nclass Interaction extends BaseObject {\n /**\n * @param {InteractionOptions} options Options.\n */\n constructor(options) {\n super();\n\n if (options.handleEvent) {\n this.handleEvent = options.handleEvent;\n }\n\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n this.map_ = null;\n\n this.setActive(true);\n }\n\n /**\n * Return whether the interaction is currently active.\n * @return {boolean} `true` if the interaction is active, `false` otherwise.\n * @observable\n * @api\n */\n getActive() {\n return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));\n }\n\n /**\n * Get the map associated with this interaction.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event}.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n handleEvent(mapBrowserEvent) {\n return true;\n }\n\n /**\n * Activate or deactivate the interaction.\n * @param {boolean} active Active.\n * @observable\n * @api\n */\n setActive(active) {\n this.set(InteractionProperty.ACTIVE, active);\n }\n\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n setMap(map) {\n this.map_ = map;\n }\n}\n\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number=} opt_duration Duration.\n */\nexport function pan(view, delta, opt_duration) {\n const currentCenter = view.getCenterInternal();\n if (currentCenter) {\n const center = [currentCenter[0] + delta[0], currentCenter[1] + delta[1]];\n view.animateInternal({\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: linear,\n center: view.getConstrainedCenter(center)\n });\n }\n}\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number} delta Delta from previous zoom level.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor Anchor coordinate in the user projection.\n * @param {number=} opt_duration Duration.\n */\nexport function zoomByDelta(view, delta, opt_anchor, opt_duration) {\n const currentZoom = view.getZoom();\n\n if (currentZoom === undefined) {\n return;\n }\n\n const newZoom = view.getConstrainedZoom(currentZoom + delta);\n const newResolution = view.getResolutionForZoom(newZoom);\n\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n resolution: newResolution,\n anchor: opt_anchor,\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: easeOut\n });\n}\n\nexport default Interaction;\n","/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport Interaction, {zoomByDelta} from './Interaction.js';\n\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [delta=1] The zoom delta applied on each double click.\n */\n\n\n/**\n * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nclass DoubleClickZoom extends Interaction {\n\n /**\n * @param {Options=} opt_options Options.\n */\n constructor(opt_options) {\n super({\n handleEvent: handleEvent\n });\n\n const options = opt_options ? opt_options : {};\n\n /**\n * @private\n * @type {number}\n */\n this.delta_ = options.delta ? options.delta : 1;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n }\n\n}\n\n\n/**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} (if it was a\n * doubleclick) and eventually zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @this {DoubleClickZoom}\n */\nfunction handleEvent(mapBrowserEvent) {\n let stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n const browserEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n const map = mapBrowserEvent.map;\n const anchor = mapBrowserEvent.coordinate;\n const delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n const view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n mapBrowserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n}\n\nexport default DoubleClickZoom;\n","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport {assert} from '../asserts.js';\nimport {TRUE, FALSE} from '../functions.js';\nimport {WEBKIT, MAC} from '../has.js';\n\n\n/**\n * A function that takes an {@link module:ol/MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n\n\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport const altKeyOnly = function(mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n\n\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport const altShiftKeysOnly = function(mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n\n\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `
`.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport const focus = function(event) {\n return event.target.getTargetElement() === document.activeElement;\n};\n\n\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport const always = TRUE;\n\n\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport const click = function(mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n\n\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport const mouseActionButton = function(mapBrowserEvent) {\n const originalEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n return originalEvent.button == 0 &&\n !(WEBKIT && MAC && originalEvent.ctrlKey);\n};\n\n\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport const never = FALSE;\n\n\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport const pointerMove = function(mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\n};\n\n\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport const singleClick = function(mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n\n\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport const doubleClick = function(mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n\n\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport const noModifierKeys = function(mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n\n\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKeyOnly = function(mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return !originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey;\n};\n\n\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport const shiftKeyOnly = function(mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n\n\n/**\n * Return `true` if the target element is not editable, i.e. not a ``-,\n * `